Is it possible to propagate higher level constructs (+, *) to the generated parse tree in an LR-style parser?

This page summarizes the projects mentioned and recommended in the original post on /r/ProgrammingLanguages

Our great sponsors
  • Sonar - Write Clean Python Code. Always.
  • Mergify - Updating dependencies is time-consuming.
  • InfluxDB - Collect and Analyze Billions of Data Points in Real Time
  • Lark

    Lark is a parsing toolkit for Python, built with a focus on ergonomics, performance and modularity.

    lark, a parsing library where I am somewhat involved has a really nice solution to this: Rules starting with _ are inlined in a post processing step.

  • booze-tools

    Booze Tools will become the complete programming-language development workbench, all written in Python 3.9 (for now).

    It's not my idea. It's present at least as far back as YACC, "Yet Another Compiler-Compiler", which inspired the name of BISON (another parser-generator named for ungulates). Here's mine, written in Python: https://github.com/kjosib/booze-tools It also has a few extra bits. Feel free to exploit its MIT license to the fullest. I should mention that the design of symbolic reduce-actions was intended to allow one to use the same grammar across multiple host languages. You could even write a driver that does simply build a parse-tree and then hand that off to a separate phase, but in my world I almost always want a bottom-up tree-transduction as first-pass de-sugaring.

  • Sonar

    Write Clean Python Code. Always.. Sonar helps you commit clean code every time. With over 225 unique rules to find Python bugs, code smells & vulnerabilities, Sonar finds the issues while you focus on the work.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts