Sha256: b9abfdbcfdf0a0122f252023676808ac549c7d5d3c44d090fab66e8a6875a830
Contents?: true
Size: 870 Bytes
Versions: 4
Compression:
Stored size: 870 Bytes
Contents
# This demonstrates a grammar using inline evals to use Treetop to build an external TireSwing-based AST. # Don't do this, this takes away a good bit of the magic. module AssignmentsLanguage grammar Grammar rule assignments ( blank_line / assignment )* { def eval Assignments.new :assignments => elements.map {|child| child.eval} end } end rule assignment lhs:variable whitespace* "=" whitespace* rhs:variable { def eval Assignment.new(:lhs => lhs.eval, :rhs => rhs.eval) end } end rule variable [a-z]+ { def eval Variable.new( :value => text_value) end } end rule whitespace [ \t] end rule blank_line whitespace* [\n] { def eval BlankLine.new end } end end end
Version data entries
4 entries across 4 versions & 1 rubygems