Sha256: b4c3e4c8a5f8ffc74c4beb0a637562aee2d7ec13377b7bc04c56ab93ff2f15f3
Contents?: true
Size: 1.15 KB
Versions: 15
Compression:
Stored size: 1.15 KB
Contents
# 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. # class Parslet::Expression include Parslet autoload :Treetop, 'parslet/expression/treetop' # Creates a parslet from a foreign language expression. # # Example: # # Parslet::Expression.new("'a' 'b'") # def initialize(str, opts={}, context=self) @type = opts[:type] || :treetop @exp = str @parslet = transform( parse(str)) end # Transforms the parse tree into a parslet expression. # def transform(tree) transform = Treetop::Transform.new # pp tree transform.apply(tree) rescue warn "Could not transform: " + tree.inspect raise end # Parses the string and returns a parse tree. # def parse(str) parser = Treetop::Parser.new parser.parse(str) end # Turns this expression into a parslet. # def to_parslet @parslet end end
Version data entries
15 entries across 15 versions & 3 rubygems