Sha256: 998edeabadd7a1965e18694a62632ccbcab884b1cf40c07ce005daccf506c6e3
Contents?: true
Size: 854 Bytes
Versions: 8
Compression:
Stored size: 854 Bytes
Contents
%require "~> 0.1" %type "ruby" %terminal NUMBER %terminal MULTIPLY "*" %terminal DIVIDE "/" %terminal ADD "+" %terminal SUBTRACT "-" %terminal LPAREN "(" %terminal RPAREN ")" %nonassoc LPAREN RPAREN %left MULTIPLY DIVIDE %left ADD SUBTRACT %% expression: NUMBER { |a| a[1] } | expression ADD expression { |a, _, b| a + b } | expression SUBTRACT expression { |a, _, b| a - b } | expression MULTIPLY expression { |a, _, b| a * b } | expression DIVIDE expression { |a, _, b| a / b } | LPAREN expression RPAREN { |_, a, _| a } | LPAREN error RPAREN %% class ExampleParser %{write} def type(token) token[0] end end input = [ [:NUMBER, 2], [:ADD], [:NUMBER, 2], [:MULTIPLY], [:NUMBER, 3] ] p ExampleParser.new.parse(input)
Version data entries
8 entries across 8 versions & 1 rubygems