857ee753f2
ADR-0020 amends ADR-0001 with a two-phase parse: a lexer
producing a span-tagged token stream, then chumsky over
&[Token]. Single source of truth for keywords and punct via
a define_keywords!/define_punct! macro pattern. Parser
contract committed for I3 (queryable expected-token-set)
and I4 (lexer always succeeds, Error tokens for invalid
input). Includes an honest history note: the no-lexer shape
in dsl/parser.rs arose incrementally without ADR-level
deliberation against the known H1a/I3/I4 requirements; this
ADR corrects that.
ADR-0021 builds on ADR-0020 to close the H1a gap: a
per-command UsageEntry registry keyed off entry-keyword,
with parse errors rendered as caret + structural error +
matching usage template(s). Multi-entry families (add,
drop, show) render together. New catalog sections under
parse.usage.* (per-command grammar) and parse.token.*
(single-token vocabulary). Zero-prefix case ("frobulate
Customers") falls back to an "available commands:" framing.
Anchor-phrase compliance preserved.
30 lines
2.1 KiB
Markdown
30 lines
2.1 KiB
Markdown
# Architecture Decision Records
|
|
|
|
This directory contains the project's ADRs, recorded per
|
|
[ADR-0000](0000-record-architecture-decisions.md).
|
|
|
|
## Index
|
|
|
|
- [ADR-0000 — Record architecture decisions](0000-record-architecture-decisions.md)
|
|
- [ADR-0001 — Language and TUI framework](0001-language-and-tui-framework.md)
|
|
- [ADR-0002 — Database engine](0002-database-engine.md)
|
|
- [ADR-0003 — Input modes and command dispatch](0003-input-modes-and-command-dispatch.md)
|
|
- [ADR-0004 — Project file format](0004-project-file-format.md)
|
|
- [ADR-0005 — Column type vocabulary](0005-column-type-vocabulary.md)
|
|
- [ADR-0006 — Undo snapshots and replay log](0006-undo-snapshots-and-replay-log.md)
|
|
- [ADR-0007 — Sharing and export](0007-sharing-and-export.md)
|
|
- [ADR-0008 — Testing approach](0008-testing-approach.md)
|
|
- [ADR-0009 — DSL command syntax conventions](0009-dsl-command-syntax-conventions.md)
|
|
- [ADR-0010 — Database access via a dedicated worker thread](0010-database-access-via-worker-thread.md)
|
|
- [ADR-0011 — Foreign-key column type compatibility](0011-fk-column-type-compatibility.md)
|
|
- [ADR-0012 — Internal metadata for user-facing column types](0012-internal-metadata-for-user-facing-types.md)
|
|
- [ADR-0013 — Relationships, naming, and the rebuild-table strategy](0013-relationships-and-rebuild-table.md)
|
|
- [ADR-0014 — Data operations, value literals, and the auto-show pattern](0014-data-operations-and-value-model.md)
|
|
- [ADR-0015 — Project storage runtime](0015-project-storage-runtime.md)
|
|
- [ADR-0016 — Pretty table rendering for data and structure views](0016-pretty-table-rendering.md)
|
|
- [ADR-0017 — Column type-change compatibility](0017-column-type-change-compatibility.md)
|
|
- [ADR-0018 — Auto-fill contracts for `serial` and `shortid` columns](0018-auto-fill-contracts-for-serial-and-shortid.md)
|
|
- [ADR-0019 — Friendly error layer (H1) and i18n message catalog](0019-friendly-error-layer-and-i18n.md)
|
|
- [ADR-0020 — Tokenization layer for the DSL parser](0020-tokenization-layer-for-the-dsl-parser.md)
|
|
- [ADR-0021 — Parser-as-source-of-truth for H1a (per-command usage in parse errors)](0021-parser-as-source-of-truth-for-h1a.md)
|