Sha256: 407e17e023ad2873654c8bcd925654fc6a4934c81f55658d3533536761ee5af6
Contents?: true
Size: 1.05 KB
Versions: 1
Compression:
Stored size: 1.05 KB
Contents
class Parslet::Expression::Treetop class Parser < Parslet::Parser root(:expression) rule(:expression) { alternatives } rule(:alternatives) { simple >> (spaced('/') >> alternatives) | simple } rule(:simple) { perhaps.repeat } rule(:perhaps) { atom.as(:maybe) >> spaced('?') | atom } rule(:atom) { spaced('(') >> expression.as(:unwrap) >> spaced(')') | string } rule(:string) { str('\'') >> ( (str('\\') >> any) | (str("'").absnt? >> any) ).repeat.as(:string) >> str('\'') >> space? } rule(:space) { match("\s").repeat(1) } rule(:space?) { space.maybe } def spaced(str) str(str) >> space? end end class Transform < Parser::Transform rule(:unwrap => simple(:u)) { u } rule(sequence(:s)) { |d| Parslet::Atoms::Sequence.new(*d[:s]) } rule(:maybe => simple(:m)) { |d| d[:m].maybe } rule(:string => simple(:s)) { |d| str(d[:s]) } end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
parslet-0.10.1 | lib/parslet/expression/treetop.rb |