Sha256: f31609ef159eb1cca3d5267a71edb039e4faccf7feef9c8b72a40a5801cf3ed7

Contents?: true

Size: 824 Bytes

Versions: 10

Compression:

Stored size: 824 Bytes

Contents

#
# A simple calculator, version 3.
#

class Calculator3
  prechigh
    nonassoc UMINUS
    left '*' '/'
    left '+' '-'
  preclow
  options no_result_var
rule
  target  : exp
          | /* none */ { 0 }

  exp     : exp '+' exp { val[0] + val[2] }
          | exp '-' exp { val[0] - val[2] }
          | exp '*' exp { val[0] * val[2] }
          | exp '/' exp { val[0] / val[2] }
          | '(' exp ')' { val[1] }
          | '-' NUMBER  =UMINUS { -(val[1]) }
          | NUMBER
end

---- header ----
#
# generated by racc
#
require 'calc3.rex'

---- inner ----

---- footer ----

puts 'sample calc'
puts '"q" to quit.'
calc = Calculator3.new
while true
  print '>>> '; $stdout.flush
  str = $stdin.gets.strip
  break if /q/i === str
  begin
    p calc.scan_str(str)
  rescue ParseError
    puts 'parse error'
  end
end

Version data entries

10 entries across 10 versions & 4 rubygems

Version Path
rexical-1.0.7 sample/calc3.racc
aaronp-frex-1.0.0 sample/calc3.racc
aaronp-frex-1.0.1 sample/calc3.racc
tenderlove-frex-1.0.1.20090313144615 sample/calc3.racc
rexical-1.0.5 sample/calc3.racc
rexical-1.0.5.beta2 sample/calc3.racc
rexical-1.0.5.beta1 sample/calc3.racc
rex-1.0.2 sample/calc3.racc
rexical-1.0.4 sample/calc3.racc
rexical-1.0.3 sample/calc3.racc