Nothing Special   »   [go: up one dir, main page]

Skip to content
forked from ruby/lrama

Pure Ruby LALR parser generator

Notifications You must be signed in to change notification settings

kaiquekandykoga/lrama

 
 

Repository files navigation

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

Installation

$ gem install lrama

From source codes,

$ cd "$(lrama root)"
$ bundle install
$ bundle exec rake install
$ bundle exec lrama --version
0.5.0

Usage

# "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

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" 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

License

See LEGAL.md file.

About

Pure Ruby LALR parser generator

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Ruby 78.0%
  • C 22.0%