Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
..
Failed to load latest commit information.
output Parslet accelerators
big.erb Parslet accelerators
boolean_algebra.rb . improves layout to match code guidelines
calc.rb . cleanup
capture.rb Documentation for the scoping
comments.rb + prsnt? -> present?, absnt? -> absent?
deepest_errors.rb + Implementation of a deepest error
documentation.rb + Cleaning up txus patch
email_parser.rb refactored getting input in email parser example
empty.rb + Cleaning up txus patch
erb.rb + prsnt? -> present?, absnt? -> absent?
ignore.rb . refactor: postfix -> consume_all
ip_address.rb + Cleaning up txus patch
json.rb - cleanup: error tree is completely gone
local.rb + prsnt? -> present?, absnt? -> absent?
mathn.rb ! Fixes interaction with mathn
minilisp.rb + prsnt? -> present?, absnt? -> absent?
modularity.rb + A few ways of making parlset parsers modular.
nested_errors.rb + Implementation of a deepest error
optimized_erb.rb Fixes load path in example
parens.rb + Cleaning up txus patch
prec_calc.rb Small bugfixes to infix parser
readme.rb + prsnt? -> present?, absnt? -> absent?
scopes.rb Documentation for the scoping
seasons.rb + Cleaning up txus patch
sentence.rb ! Fixes issue #38: IO is now read using gets(nil, len)
simple.lit ! Fixes the missing recursive flatten
simple_xml.rb + prsnt? -> present?, absnt? -> absent?
string_parser.rb + prsnt? -> present?, absnt? -> absent?
test.lit . Reorg into a real project structure

readme.rb

# The example from the readme. With this, I am making sure that the readme 
# 'works'. Is this too messy?

$:.unshift File.dirname(__FILE__) + "/../lib"

# cut here -------------------------------------------------------------------
require 'parslet'
include Parslet

# Constructs a parser using a Parser Expression Grammar like DSL: 
parser =  str('"') >> 
          (
            str('\\') >> any |
            str('"').absent? >> any
          ).repeat.as(:string) >> 
          str('"')
  
# Parse the string and capture parts of the interpretation (:string above)        
tree = parser.parse('"This is a \\"String\\" in which you can escape stuff"')

tree # => {:string=>"This is a \\\"String\\\" in which you can escape stuff"}

# Here's how you can grab results from that tree:

transform = Parslet::Transform.new do
  rule(:string => simple(:x)) { 
    puts "String contents: #{x}" }
end
transform.apply(tree)

Something went wrong with that request. Please try again.