Lrama is LALR (1) parser generator written by Ruby. The first goal of this project is providing error tolerant parser for CRuby with minimal changes on CRuby parse.y file.
- Bison style grammar file is supported with some assumptions
- b4_locations_if is always true
- b4_pure_if is always true
- b4_pull_if is always false
- b4_lac_if is always false
- Error Tolerance parser
- Subset of Repairing Syntax Errors in LR Parsers (Corchuelo et al.) algorithm is supported
$ gem install lrama
From source codes,
$ cd "$(lrama root)"
$ bundle install
$ bundle exec rake install
$ bundle exec lrama --version
0.5.0
# "y.tab.c" and "y.tab.h" are generated
$ lrama -d sample/parse.y
# "calc", "calc.c", and "calc.h" are generated
$ lrama -d sample/calc.y -o calc.c && gcc -Wall calc.c -o calc && ./calc
Enter the formula:
1
=> 1
1+2*3
=> 7
(1+2)*3
=> 9
This branch generates "parse.c" compatible with Bison 3.8.2 for ruby 3.0, 3.1, 3.2. The first version migrated to ruby is "0.4.0" therefore keep this branch for Bison compatible branch.
- Install Lrama
- Run
make YACC=lrama
- Update
Lrama::VERSION
- Release as a gem by
rake release
- Update Lrama in ruby/ruby by
cp -r exe lib ruby/tool/lrama
- Create new release on GitHub
See LEGAL.md file.