Skip to content

grapa-dev/grapa

Repository files navigation

grapa

grapa - a grammar parser language / environment for processing data for ETL workflows, or experimenting with new language constructs.

Grapa grammar is customizable at runtime. Default grammar here: Grapa Grammar

Each rule in the grammar is loaded into global variables, which can be overridden, or replaced - which effectively changes the syntax of the language. Additionally, rules can be created to parse any data that a grammer can be used to define, where the output is what each rule resolves to. See $RULE for more details.

The grammar includes parsing for JSON/XML/HTML. The underlying data structures are based on JSON, but add extentions for several native Grapa types such as $OP, as well as XML (JSON and XML can co-exist).

The base grammar for the langauge is $OP and $CODE (see Base types) - and any compilation will translate to this as the executable. An $OP consists of a reference to a C++ function along with parameters. A $CODE is a sequence of $OP's. There are many C++ functions for base functionality such as variable handling, networking, and file IO.

Grapa includes a form of a class library with inheritance, which is used to enxtend the language based on a default syntax for calling class library methods.

Integers are all big integers and floats are all big floats. Percision is unlimited, within available memory.

The language is cross platform binary/execution compatible accross Windows, Linux, Mac (Intel and Apple).

Python

C++

Base Types

System types

Libraries (Grapa classes)

$OBJ Functions (inherited by several Grapa classes)

Operators

Syntax

Examples

Third-Party libraries used