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

Version Path
antelope-0.1.8 examples/example.ace
antelope-0.1.7 examples/example.ace
antelope-0.1.6 examples/example.ace
antelope-0.1.5 examples/example.ace
antelope-0.1.4 examples/example.ace
antelope-0.1.3 examples/example.ace
antelope-0.1.2 examples/example.ace
antelope-0.1.1 examples/example.ace