Skip to content

Post 1388 changes #1426

@MegaIng

Description

@MegaIng

This is a list of TODOs I would like to see/do after #1388 is merged (or independently, but reviewing that PR is why I am now making this list):

Doc changes

  • Explain that _rules are inlined after parsing, not before parsing, preparing for potentially addition of __rule syntax, and preempting confusion about this (since this has semantic differences, especially with respect to lalr)
  • Similar thing for templates: They are instantiated, not expanded. (and can be recursive)
  • Check if we can move over to proper lark syntax highlighting instead of misusing perl.

Code changes

  • Add terminal templates
  • Add ability to %declare rules so that they can later be implemented with either %override or more importantly %extend, useful for plugin features.
  • long term: Turn LarkValidator into something that can be used by load_grammar.py
  • Move find_grammar_errors into lark_validator.py, and probably make it use lark.lark
  • Extend find_grammar_errors to do semantic checks using LarkValidator (and therefore add the ability to LarkValidator to report multiple issues)
  • longer term: Add a build step that turns lark.lark into a BNF representation that can be used by load_grammar.py - For example, a lark.bnf.json file loaded by the stdlib module. (We could potentially also "cache" the lalr parse tables in a json file. If we expose this build tool inside of lark.tools, together with a load function, this could be a more lightweight alternative to standalone)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions