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).
- $BOOL
- $INT
- $FLOAT
- $STR
- $ID
- $RAW
- $TIME
- $RULE
- $ARRAY
- $LIST
- $VECTOR
- $TABLE
- $XML
- $TAG
- $WIDGET
- $ERR
- $SYSID
- $SYSINT
- $SYSSTR
- Encode functions
- Bits functions
- Iterator functions
- Format functions
- Transform functions
- Type functions
- Vector functions
- IO functions
- Document functions