adewes / parsejoy

A radpid protoyping parser generator tool: Define and parse grammars without compiling a single line of code.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Parsejoy

Parsejoy is a (currently highly experimental and incomplete) Python/Go/C++ framework for rapid parser prototyping and language development. It allows you to write simple EBNF-style YAML grammars and use them to interactively parse files without having to compile a single line of code. The aim of this tool is to make it easier to rapidly write and test parsers for different formats and programming languages.

As an example, the toolkit contains a fully-functional Python grammar adapted from the official EBNF-grammar including the tokenizer.

Current Status

This library is highly experimental and unfinished, please do not use this code except for experimenting with it.

Organization

Currently there are three reference implementations of the Parsejoy parser, one written in C++, one in Go(lang) and one in Python. There are several experimental parser scripts in Python that implement e.g. a GLR parser.

Performance

The performance of the parser is (as is expected) worse than that of a hand-coded parser or one generated with a tool like Bison. The aim is to be able to parse at least 50.000 lines of code / second on a standard computer (2016), which is sufficiently fast for the intended use cases of the library.

License

The whole repository is licensed under MIT, except for included third-party code , where the license is indicated in the file header.

About

A radpid protoyping parser generator tool: Define and parse grammars without compiling a single line of code.

License:MIT License


Languages

Language:Go 48.3%Language:C++ 40.5%Language:C 6.7%Language:Python 3.5%Language:Lua 0.4%Language:SWIG 0.4%Language:Makefile 0.2%