# Generalize Options for the extended dialect set (Racket, Phel, Fennel, LFE)

Investigating Racket, Phel, Fennel, and LFE as additional target dialects surfaced needs beyond the original Options design (ADR-0003, ADR-0005). We generalize Options in five ways: (1) `[]` and `{}` become independently configurable delimiter meanings (`List` / `Vector` / `Map` / `Ordinary`) rather than a single `Brackets` axis, since Racket treats both as code lists while Clojure/Phel treat `{}` as a map; (2) block-comment nesting becomes an Options flag (`Nestable` / `NonNestable`), since LFE's `#| ... |#` does not nest unlike Scheme/Common Lisp/ISLisp/Racket; (3) colon/hash-prefixed tokens no longer uniformly produce a Keyword datum — Fennel's `:foo` produces a String — so this syntax specifies its output kind (Keyword vs. Str), not just its trigger shape; (4) the tokenizer gains a shared rule recognizing `#<digits><letter>` tokens (ISLisp's `#3a(...)` dimensioned arrays, LFE's `#36rHelloWorld` arbitrary-radix numbers) instead of handling each as a per-dialect special case; (5) Racket's mandatory `#lang <name>` header is not a Datum — it is a positional, file-level directive that configures how the rest of the file reads — so it is modeled as a separate `lang_line` field on the parse result rather than folded into the Datum tree.
