Class: Junoser::Parser

Inherits:
Parslet::Parser
  • Object
show all
Defined in:
lib/junoser/parser.rb

Instance Method Summary collapse

Instance Method Details

#a(object, arg, *children) ⇒ Object

with an argument, and children maybe



11
12
13
# File 'lib/junoser/parser.rb', line 11

def a(object, arg, *children)
  b(object.as(:statement) >> space >> arg.as(:argument), *children)
end

#b(object, *children) ⇒ Object

block with children maybe



6
7
8
# File 'lib/junoser/parser.rb', line 6

def b(object, *children)
  children.inject(object) {|rule, child| rule.as(:label) >> (space >> child.as(:child) | eos) }
end

#c(*objects) ⇒ Object

choice



16
17
18
# File 'lib/junoser/parser.rb', line 16

def c(*objects)
  objects.inject {|rule, object| rule | object }
end

#ca(*objects) ⇒ Object



20
21
22
# File 'lib/junoser/parser.rb', line 20

def ca(*objects)
  objects.inject {|rule, object| rule | object } | arg
end

#s(*objects) ⇒ Object

sequence



25
26
27
28
# File 'lib/junoser/parser.rb', line 25

def s(*objects)
  # TODO:  eval "minOccurs" attribute of choice element
  objects.inject {|rule, object| rule >> (space >> object).maybe }
end

#sc(*objects) ⇒ Object

sequential choice



31
32
33
# File 'lib/junoser/parser.rb', line 31

def sc(*objects)
  (c(*objects) >> space.maybe).repeat(0)
end

#sca(*objects) ⇒ Object



35
36
37
# File 'lib/junoser/parser.rb', line 35

def sca(*objects)
  (c(*objects, arg) >> space.maybe).repeat(0)
end