class Parslet::Expression
Allows specifying rules as strings using the exact same grammar that treetop does, minus the actions. This is on one hand a good example of a fully fledged parser and on the other hand might even turn out really useful.
This can be viewed as an extension to parslet and might even be hosted in its own gem one fine day.
Public Class Methods
new(str, opts={}, context=self)
click to toggle source
Creates a parslet from a foreign language expression.
Example:
Parslet::Expression.new("'a' 'b'")
# File lib/parslet/expression.rb, line 20 def initialize(str, opts={}, context=self) @type = opts[:type] || :treetop @exp = str @parslet = transform( parse(str)) end
Public Instance Methods
parse(str)
click to toggle source
Parses the string and returns a parse tree.
# File lib/parslet/expression.rb, line 41 def parse(str) parser = Treetop::Parser.new parser.parse(str) end
to_parslet()
click to toggle source
Turns this expression into a parslet.
# File lib/parslet/expression.rb, line 48 def to_parslet @parslet end
transform(tree)
click to toggle source
Transforms the parse tree into a parslet expression.
# File lib/parslet/expression.rb, line 29 def transform(tree) transform = Treetop::Transform.new # pp tree transform.apply(tree) rescue warn "Could not transform: " + tree.inspect raise end