Sha256: 02005bc4bf4dee1abf0d42361197459a7ee4a2f0ce3c0a7a26299418e4b0ee79
Contents?: true
Size: 1.6 KB
Versions: 1
Compression:
Stored size: 1.6 KB
Contents
# Lrama 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. ## Features * 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.)](https://idus.us.es/bitstream/handle/11441/65631/Repairing%20syntax%20errors.pdf) algorithm is supported ## Installation ```shell $ gem install lrama ``` From source codes, ```shell $ cd "$(lrama root)" $ bundle install $ bundle exec rake install $ bundle exec lrama --version 0.5.0 ``` ## Usage ```shell # "y.tab.c" and "y.tab.h" are generated $ lrama -d sample/parse.y ``` ```shell # "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 ``` ## Versions and Branches ### v0_4 (`lrama_0_4` branch) 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"](https://github.com/ruby/ruby/pull/7798) therefore keep this branch for Bison compatible branch. ## Build Ruby 1. Install Lrama 2. Run `make YACC=lrama` ## Release flow 1. Update `Lrama::VERSION` 2. Release as a gem by `rake release` 3. Update Lrama in ruby/ruby by `cp -r exe lib ruby/tool/lrama` 4. Create new release on [GitHub](https://github.com/ruby/lrama/releases) ## License See LEGAL.md file.
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
lrama-0.5.1 | README.md |