EBNFParser Save Abandoned

Convenient parser generator for Python(check out https://github.com/thautwarm/RBNF for an advanced version).

Project README

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.

Open Source Agenda is not affiliated with "EBNFParser" Project. README Source: thautwarm/EBNFParser
Stars
62
Open Issues
0
Last Commit
6 years ago
License
MIT

Open Source Agenda Badge

Open Source Agenda Rating