Skip to main content

A parse tree generator for extended Backus-Naur form.

Project description

Parse EBNF

PyPI - Version PyPI - Python Version


Table of Contents

Introduction

A simple and hacky parser for EBNF as defined by ISO. Give it an EBNF string and it'll generate a parse tree. Note that this package does not parse the described grammar.

Installation

pip install parse-ebnf

Quick start

from parse_ebnf import AST

#Your EBNF file goes here
ebnf = open('grammar.ebnf', 'r')

ast = AST()

try:
    #Will raise SyntaxError on error with an error message describing what went wrong
    ast.parse(ebnf.read) #You need to pass in a function that returns n characters where n is given as the first parameter.
finally:
    #Even after an error a partial tree will be generated.
    #str gives a text version of the parse tree(meant for debugging), while repr gives the text that it was produced from.
    print(str(ast))

print(f'Parsed the file creating a tree with {ast.count} nodes, height of {ast.height}. Each node has at MOST {ast.maxDegree} children.')

def DepthFirst(node, func):
    func(node)
    for child in node.children:
        DepthFirst(child, func)

#This will visit each node in the parse tree and print the line where its text begins
DepthFirst(ast.root, lambda node: print(node.startLine))

from parse_ebnf import ASTCommentNode

#Finds each comment in the file and prints its text content
for child in ast.root.children:
    if isinstance(child, ASTCommentNode):
        print(child.data)

Documentation

TODO

License

parse-ebnf is distributed under the terms of the MIT license.

Project details


Download files

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

Source Distribution

parse_ebnf-1.0.0.tar.gz (11.7 kB view details)

Uploaded Source

Built Distribution

parse_ebnf-1.0.0-py3-none-any.whl (7.3 kB view details)

Uploaded Python 3

File details

Details for the file parse_ebnf-1.0.0.tar.gz.

File metadata

  • Download URL: parse_ebnf-1.0.0.tar.gz
  • Upload date:
  • Size: 11.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.24.1

File hashes

Hashes for parse_ebnf-1.0.0.tar.gz
Algorithm Hash digest
SHA256 f973b42b79a9bb1e98df4436dd659f2d3ccc4046ee598b7a7d10bd4a77a019f0
MD5 d363197e0b99d7bb5ba8bd1eabc5d64f
BLAKE2b-256 98b8229180c1cf1864814afc813a81ac60b859ce8ccc8a0c77b1e02526e40995

See more details on using hashes here.

File details

Details for the file parse_ebnf-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for parse_ebnf-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9d631890cdb38d35ecafc35da2b8c26f890135f5bab95056805d6ab93f49649d
MD5 54c8a50fda8e44de6068f4d96801f5bb
BLAKE2b-256 6a983cd5e210b762ad20b5fb2e773b0d0f00b3ed5c1168d6ab4c8d2765c4c62b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page