Skip to main content

very powerful and optional parser framework for python

Project description

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).

  • A DSL for SQL development in Python areas.
  • A full featured modern language to enhance program readability based on CPython.
  • An attempt to making ASDL in CPython(unfinished yet)

Will support F# and Rem.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
EBNFParser-2.1.3-py3-none-any.whl (26.0 kB) Copy SHA256 hash SHA256 Wheel 3.6 Apr 5, 2018

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page