Sha256: b80f4e79adc056983b491ceace3a4865e2fc88a159370f5ffbc622c3179162e2

Contents?: true

Size: 1.32 KB

Versions: 201

Compression:

Stored size: 1.32 KB

Contents

grammar Arithmetic  
  rule expression
    comparative / additive
  end
  
  rule comparative
    head:additive
    tail:(
      space operator:equality_op
      space operand:additive)* <BinaryOperation>
  end
  
  rule equality_op
    '==' {
      def apply(a, b)
        a == b
      end
    }
  end
  
  rule additive
    head:multitive
    tail:(
      space operator:additive_op
      space operand:multitive)* <BinaryOperation>
  end
  
  rule additive_op
    '+' {
      def apply(a, b)
        a + b
      end
    }
    /
    '-' {
      def apply(a, b)
        a - b
      end
    }
  end

  rule multitive
    head:primary
    tail:(
      space operator:multitive_op
      space operand:primary)* <BinaryOperation>
  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]* / '0') {
      def eval(env={})
        text_value.to_i
      end
    }
  end
  
  rule space
    ' '*
  end
end

Version data entries

201 entries across 186 versions & 30 rubygems

Version Path
treetop-1.6.12 examples/lambda_calculus/arithmetic.treetop
logstash-output-scalyr-0.2.1.beta vendor/bundle/jruby/2.5.0/gems/treetop-1.4.15/examples/lambda_calculus/arithmetic.treetop
logstash-output-scalyr-0.2.0 vendor/bundle/jruby/2.5.0/gems/treetop-1.4.15/examples/lambda_calculus/arithmetic.treetop
logstash-output-scalyr-0.2.0.beta vendor/bundle/jruby/2.5.0/gems/treetop-1.4.15/examples/lambda_calculus/arithmetic.treetop
logstash-output-scalyr-0.1.26.beta vendor/bundle/jruby/2.5.0/gems/treetop-1.4.15/examples/lambda_calculus/arithmetic.treetop
logstash-output-scalyr-0.1.25.beta vendor/bundle/jruby/2.5.0/gems/treetop-1.4.15/examples/lambda_calculus/arithmetic.treetop
logstash-output-scalyr-0.1.24.beta vendor/bundle/jruby/2.5.0/gems/treetop-1.4.15/examples/lambda_calculus/arithmetic.treetop
logstash-output-scalyr-0.1.23.beta vendor/bundle/jruby/2.5.0/gems/treetop-1.4.15/examples/lambda_calculus/arithmetic.treetop
logstash-output-scalyr-0.1.22.beta vendor/bundle/jruby/2.5.0/gems/treetop-1.4.15/examples/lambda_calculus/arithmetic.treetop
logstash-output-scalyr-0.1.21.beta vendor/bundle/jruby/2.5.0/gems/treetop-1.4.15/examples/lambda_calculus/arithmetic.treetop
logstash-output-scalyr-0.1.20.beta vendor/bundle/jruby/2.5.0/gems/treetop-1.4.15/examples/lambda_calculus/arithmetic.treetop
logstash-output-scalyr-0.1.19.beta vendor/bundle/jruby/2.5.0/gems/treetop-1.4.15/examples/lambda_calculus/arithmetic.treetop
logstash-output-scalyr-0.1.18.beta vendor/bundle/jruby/2.5.0/gems/treetop-1.4.15/examples/lambda_calculus/arithmetic.treetop
logstash-output-scalyr-0.1.17.beta vendor/bundle/jruby/2.5.0/gems/treetop-1.4.15/examples/lambda_calculus/arithmetic.treetop
logstash-output-scalyr-0.1.16.beta vendor/bundle/jruby/2.5.0/gems/treetop-1.4.15/examples/lambda_calculus/arithmetic.treetop
logstash-output-scalyr-0.1.15.beta vendor/bundle/jruby/2.5.0/gems/treetop-1.4.15/examples/lambda_calculus/arithmetic.treetop
logstash-output-scalyr-0.1.14.beta vendor/bundle/jruby/2.5.0/gems/treetop-1.4.15/examples/lambda_calculus/arithmetic.treetop
logstash-output-scalyr-0.1.13 vendor/bundle/jruby/2.5.0/gems/treetop-1.4.15/examples/lambda_calculus/arithmetic.treetop
logstash-output-scalyr-0.1.12 vendor/bundle/jruby/2.5.0/gems/treetop-1.4.15/examples/lambda_calculus/arithmetic.treetop
logstash-output-scalyr-0.1.11.beta vendor/bundle/jruby/2.5.0/gems/treetop-1.4.15/examples/lambda_calculus/arithmetic.treetop