This library was created for parsing data that has a signature property, that is, is deterministic.
PEL is a programming language, api library and built-in emulator. PEL is based on his own hypotheses about the construction of the world, its data and interactions, which allows this language to work.
PEL is similar to first-order logic in but PEL was created independently of the current theory of first-order logic.
The main purpose of PEL is to parse programming languages.
Current version 0.2 is still a prototype.
- Make a test system
- Reduce memory overhead for basic data structures
- Improve error handling and error tracking
- Make support for all kinds of strings
- Make AST interface
- Made full support for loops and recursion with an exit system
- Added support for conditional operator
- Rewritten PEL parser
- Added optimization algorithms for displacement in the movement of graph vertices.
- Vertex grouping is now in superposition.
- Added work with multiblocks.
- Created a recursion operator that works completely without recursion.
- All real recursions were removed in the core, they were replaced by another algorithm that excludes recursion using the stack.
- The core of PEL was created.
- Solved the problem of calculating true positioning at the top of the graph, even for instructions OR.
- Group system created.
- A system of blocks, types, values has been created.
- A specification has been created for various areas of work with PEL.
- Created a system for working with files and uploading in real time for developer mode.
- Created command system.
- Graph system created.
In this example, a variable is read, where its type is determined, and any name that does not contain symbols is selected.
#module {tree};
group space : { " " } = execute, ignore;
group symbol : { ";," } = execute, split;
group word : { !space and !symbol } = execute, glue;
type int : { "int" };
type string : { "string" };
type float : { "float" };
type read_type : { int or string or float };
type var_name : { word };
type var_decl : { read_type, var_name, ";" } = execute;