At the moment we use our Rust macros 1.0 (aka DSL v1) to define the language for our parser. We already have:
- YAML spec
- DSL v1
- DSL v2
So to cut down the different definitions, we should migrate to the newest definition (see #617).
Migration PR:
Impacts the AST:
Does not impact the AST:
At the moment we use our Rust macros 1.0 (aka DSL v1) to define the language for our parser. We already have:
So to cut down the different definitions, we should migrate to the newest definition (see #617).
Migration PR:
Impacts the AST:
allow_emptyfrom DSL v2 #693PrecedenceExpression#rule_nameand adapt the codegen model to fit the v2 definition betterPrecedenceitems should also produce their ownNonTerminalKindkind, wrapping the single child (PrecedenceExpressionorPrimaryExpression).PrecedenceExpressionshould get their ownparse_XXX()function.Does not impact the AST:
[ ] Re-introduce EOF/EOI (End of Input) virtual token/trivia parser[ ] Change LeadingTrivia definition in v2 to allow being terminated by EOI as well (changed in Use DSL v2 for parser codegen #650)(tracked in Define end-of-file trivia as part of the language definition #1020)ZeroOrMore(AnyTriviaItem)at the end when parsing any production withpub fn parse0.7.0#800)Scanner::not_followed_bycompletely and automatically calculate it instead (context).codegen_grammarcrate. (Co-locate parser generator logic #972)