Sha256: df61a380316c64e22e2bee69f0ca09113dfdebe174f491c1ad5cacb585d59fa4
Contents?: true
Size: 1.34 KB
Versions: 1
Compression:
Stored size: 1.34 KB
Contents
grammar Arithmetic rule expression comparative / additive end rule comparative exp_1:additive space '==' space exp_2:additive { def eval(env={}) exp_1.eval(env) == exp_2.eval(env) end } end rule additive operand_1:multitive space operator:additive_op space operand_2:additive <BinaryOperation> / multitive end rule additive_op '+' { def apply(a, b) a + b end } / '-' { def apply(a, b) a - b end } end rule multitive operand_1:primary space operator:multitive_op space operand_2:multitive <BinaryOperation> / primary end rule multitive_op '*' { def apply(a, b) a * b end } / '/' { def apply(a, b) a / b end } end rule primary variable / number / '(' space expression space ')' { def eval(env={}) expression.eval(env) end } end rule variable [a-z] { def eval(env={}) env[name] end def name text_value end } end rule number [1-9] [0-9]* { def eval(env={}) text_value.to_i end } / '0' { def eval(env={}) text_value.to_i end } end rule space ' '* end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
treetop-1.1.0 | examples/lambda_calculus/arithmetic.treetop |