1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
class ActionDispatch::Journey::Parser
options no_result_var
token SLASH LITERAL SYMBOL LPAREN RPAREN DOT STAR OR
rule
expressions
: expression expressions { Cat.new(val.first, val.last) }
| expression { val.first }
| or
;
expression
: terminal
| group
| star
;
group
: LPAREN expressions RPAREN { Group.new(val[1]) }
;
or
: expression OR expression { Or.new([val.first, val.last]) }
| expression OR or { Or.new([val.first, val.last]) }
;
star
: STAR { Star.new(Symbol.new(val.last)) }
;
terminal
: symbol
| literal
| slash
| dot
;
slash
: SLASH { Slash.new(val.first) }
;
symbol
: SYMBOL { Symbol.new(val.first) }
;
literal
: LITERAL { Literal.new(val.first) }
;
dot
: DOT { Dot.new(val.first) }
;
end
---- header
# :stopdoc:
require "action_dispatch/journey/parser_extras"
|