EBNFParser

very powerful and optional parser framework for python


Keywords
parser, ebnf, parser-framework, parser-generator, tokenizer
License
MIT
Install
pip install EBNFParser==2.1.3

Documentation

Build Status PyPI version Release Note MIT License

EBNFParser

Parse Many, Any, Every Doc

LR ::= LR 'a' 'b' | LR 'c' | 'd';

Install

  • Python

    • pip

    pip installl -U EBNFParser

    • setup
    git clone https://github.com/thautwarm/EBNFParser
    cd EBNFParser/Python
    python setup.py install

Usage

  • Command Line Tools

    • ruiko.
    ruiko ./<grammar File> ./<output filename>
            [--testTk] # print tokenized words or not
            [--test] # generate test script "test_lang.py"

    Use command ruiko to generate parser and token files, and then you can use test_lang.py to test your parser.

    python ./test_lang.py Stmt " (+ 1 2) " -o test.json --testTk
  • Integrated into your own project

        from Ruikowa.ObjectRegex.ASTDef import Ast
        from Ruikowa.ErrorHandler import ErrorHandler
        from Ruikowa.ObjectRegex.MetaInfo import MetaInfo
        from Ruikowa.ObjectRegex.Tokenizer import Tokenizer
    
        from <your own generated parser module> import <top parser>, token_table
    
    
        import typing as t
    
        def token_func(src_code: str) -> t.Iterable[Tokenizer]:
            return Tokenizer.from_raw_strings(src_code, token_table, ({<the names of tokenizers you would ignore>}, {<the string contents of tokenizers you would ignore>}))
    
        parser = ErrorHandler(<top parser>.match, token_func)
    
        def parse(filename: str) -> Ast:
    
            return parser.from_file(filename)
    
    
        print(parse(<filename of your dsl source code>))
    

Need more? See the documents.

Examples

Here are some examples to refer:

EBNFParser 2.0

  • Rem
    The Rem programming language.

Old version(Before EBNFParser 1.1).

  • DBG-Lang
    A DSL for SQL development in Python areas.

  • Rem(Based EBNFParser1.1)
    A full featured modern language to enhance program readability based on CPython.

  • Lang.Red
    An attempt to making ASDL in CPython(unfinished yet)

Will support F# and Rem.