This repo contains code to mirror other repos. It also contains the code that is getting mirrored.
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 

1.8 KiB

Features

Main Features

  • Earley parser, capable of parsing any context-free grammar
    • Implements SPPF, for efficient parsing and storing of ambiguous grammars.
  • LALR(1) parser, limited in power of expression, but very efficient in space and performance (O(n)).
    • Implements a parse-aware lexer that provides a better power of expression than traditional LALR implementations (such as ply).
  • EBNF-inspired grammar, with extra features (See: Grammar Reference)
  • Builds a parse-tree (AST) automagically based on the grammar
  • Stand-alone parser generator - create a small independent parser to embed in your project. (read more)
  • Flexible error handling by using an interactive parser interface (LALR only)
  • Automatic line & column tracking (for both tokens and matched rules)
  • Automatic terminal collision resolution
  • Standard library of terminals (strings, numbers, names, etc.)
  • Unicode fully supported
  • Extensive test suite
  • MyPy support using type stubs
  • Python 2 & Python 3 compatible
  • Pure-Python implementation

Read more about the parsers

Extra features

  • Import rules and tokens from other Lark grammars, for code reuse and modularity.
  • Support for external regex module (see here)
  • Import grammars from Nearley.js (read more)
  • CYK parser
  • Visualize your parse trees as dot or png files (see_example)

Experimental features

  • Automatic reconstruction of input from parse-tree (see examples)

Planned features (not implemented yet)

  • Generate code in other languages than Python
  • Grammar composition
  • LALR(k) parser
  • Full regexp-collision support using NFAs