Releases: NoaSenesi/Grammar2Table
Compacting optimization
Out of range bug fix
In some cases, the tolenizer could go out of range.
Jar and package build
Changed build scripts to be named "compile". The new build scripts now build a jar file.
The mkpkg script create .deb package file so G2T can be installed (only for Linux).
Output and slight optimization
Added the --output (or -o) option. Usage: --output=name (or -oname)
The extension will automatically be added when creating the output files, and cannot be changed (.csv and .g2table)
The FSM now uses sets instead of lists in order to check more efficiently if a state already exists. The optimization isn't big, but it's still an optimization.
Compactable parsing
Added a new parameter --compact (or -c):
- Relies on the LALR(1) algorithm
- Prevents conflicts from happening
- At best, the result will be a LALR(1) table
- At worst, the result will be unchanged
- The compacting algorithm can last a while
Added another parameter --quiet (or -q):
- Status messages will be delivered, unless using this parameter
Fixed epsilon
Fixed epsilon being considered as one stack pop when using the 5th optimization
More parameters
Added a new parameter --no-table (or -n), preventing the table from generating and exporting
Added optimization levels 4 and 5 to the --optimize-csv (or -p) parameter
Added a shebang to each .sh files (which were renamed to remove the file extension)
Edited optimizations
The third optimization (-p3 or -optimize-csv=3) has been made slightly more efficient, by replacing arrows by equals, and by removing the "I" in states.
Parameters and GOTO
Changed SHIFT actions for non-terminals to GOTO instead
The optimize-csv parameters now accepts a number representing the level of optimization wanted
Added options
Added different options to the command. Check README.md for more details.