Sha256: e87e5d9d334a9e41d0a89b39c79ac42b9cae4c2c12618ea6fe1bf3897fc5ea75

Contents?: true

Size: 1008 Bytes

Versions: 8

Compression:

Stored size: 1008 Bytes

Contents

# Grammar for simple arithmetical expressions
require 'rley'  # Load the gem

########################################
# Define a grammar for basic arithmetical expressions
builder = Rley::Syntax::GrammarBuilder.new do
  add_terminals('NUMBER')
  add_terminals('LPAREN', 'RPAREN') # For '(', ')' delimiters
  add_terminals('PLUS', 'MINUS') # For '+', '-' operators or sign
  add_terminals('STAR', 'DIVIDE') # For '*', '/' operators
  rule 'expression' => %w(sign simple_expression)
  rule 'simple_expression' => 'term'
  rule 'simple_expression' => %w(simple_expression add_operator term)
  rule 'term' => 'factor'
  rule 'term' => %w(term mul_operator factor)
  rule 'factor' => 'NUMBER'
  rule 'factor' => %w(LPAREN expression RPAREN)
  rule 'sign' => 'PLUS'
  rule 'sign' => 'MINUS'
  rule 'sign' => []
  rule 'add_operator' => 'PLUS'
  rule 'add_operator' => 'MINUS'  
  rule 'mul_operator' => 'STAR'
  rule 'mul_operator' => 'DIVIDE'   
end

# And now build the grammar...
CalcGrammar = builder.grammar

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
rley-0.4.06 examples/general/calc/calc_grammar.rb
rley-0.4.05 examples/general/calc/calc_grammar.rb
rley-0.4.04 examples/general/calc/calc_grammar.rb
rley-0.4.03 examples/general/calc/calc_grammar.rb
rley-0.4.02 examples/general/calc/calc_grammar.rb
rley-0.4.01 examples/general/calc/calc_grammar.rb
rley-0.4.00 examples/general/calc/calc_grammar.rb
rley-0.3.12 examples/general/calc/calc_grammar.rb