Sha256: 1f4c85e8640cd9b52eb3c221a1030622e00096391470c45a11b3f26408d01281
Contents?: true
Size: 1.57 KB
Versions: 2
Compression:
Stored size: 1.57 KB
Contents
INTRODUCTION Parslet makes developing complex parsers easy. It does so by * providing the best *error reporting* possible * *not generating* reams of code for you to debug Parslet takes the long way around to make *your job* easier. It allows for incremental language construction. Often, you start out small, implementing the atoms of your language first; _parslet_ takes pride in making this possible. Eager to try this out? Please see the associated web site: http://kschiess.github.com/parslet SYNOPSIS require 'parslet' include Parslet # Constructs a parser using a Parser Expression Grammar like DSL: parser = str('"') >> ( str('\\') >> any | str('"').absnt? >> any ).repeat.as(:string) >> str('"') # Parse the string and capture parts of the interpretation (:string above) tree = parser.parse(%Q{ "This is a \\"String\\" in which you can escape stuff" }.strip) tree # => {:string=>"This is a \\\"String\\\" in which you can escape stuff"} # Here's how you can grab results from that tree, two methods: # 1) Pattern.new(:string => simple(:x)).each_match(tree) do |dictionary| puts "String contents (method 1): #{dictionary[:x]}" end # 2) transform = Parslet::Transform.new do rule(:string => simple(:x)) { puts "String contents (method 2): #{x}" } end transform.apply(tree) COMPATIBILITY This library should work with both ruby 1.8 and ruby 1.9. STATUS On the road to 1.0; improving documentation, packaging and upgrading to rspec2. (c) 2010 Kaspar Schiess
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
parslet-0.11.0 | README |
parslet-0.10.1 | README |