Racc::Parser
reduce 0 omitted
# File lib/rack/mount/strexp/parser.rb, line 116
116: def _reduce_1(val, _values, result)
117: result = anchor ? "\\A#{val.join}\\Z" : "\\A#{val.join}"
118: result
119: end
# File lib/rack/mount/strexp/parser.rb, line 121
121: def _reduce_2(val, _values, result)
122: result = val.join
123: result
124: end
reduce 3 omitted
# File lib/rack/mount/strexp/parser.rb, line 128
128: def _reduce_4(val, _values, result)
129: name = val[0].to_sym
130: requirement = requirements[name]
131: result = REGEXP_NAMED_CAPTURE % [name, requirement]
132:
133: result
134: end
# File lib/rack/mount/strexp/parser.rb, line 136
136: def _reduce_5(val, _values, result)
137: name = val[0].to_sym
138: requirement = requirements[name]
139: result = REGEXP_NAMED_CAPTURE % [name, '.+' || requirement]
140:
141: result
142: end
# File lib/rack/mount/strexp/parser.rb, line 144
144: def _reduce_6(val, _values, result)
145: result = "(?:#{val[1]})?"
146: result
147: end
# File lib/rack/mount/strexp/parser.rb, line 149
149: def _reduce_7(val, _values, result)
150: result = Regexp.escape(val[0])
151: result
152: end
# File lib/rack/mount/strexp/parser.rb, line 154
154: def _reduce_none(val, _values, result)
155: val[0]
156: end
# File lib/rack/mount/strexp/tokenizer.rb, line 23
23: def action
24: yield
25: end
# File lib/rack/mount/strexp/tokenizer.rb, line 33
33: def load_file( filename )
34: @filename = filename
35: open(filename, "r") do |f|
36: scan_setup(f.read)
37: end
38: end
# File lib/rack/mount/strexp/tokenizer.rb, line 46
46: def next_token
47: return if @ss.eos?
48:
49: text = @ss.peek(1)
50: @lineno += 1 if text == "\n"
51: token = case @state
52: when nil
53: case
54: when (text = @ss.scan(/\\(\(|\)|:|\*)/))
55: action { [:CHAR, @ss[1]] }
56:
57: when (text = @ss.scan(/\:([a-zA-Z_]\w*)/))
58: action { [:PARAM, @ss[1]] }
59:
60: when (text = @ss.scan(/\*([a-zA-Z_]\w*)/))
61: action { [:GLOB, @ss[1]] }
62:
63: when (text = @ss.scan(/\(/))
64: action { [:LPAREN, text] }
65:
66: when (text = @ss.scan(/\)/))
67: action { [:RPAREN, text] }
68:
69: when (text = @ss.scan(/./))
70: action { [:CHAR, text] }
71:
72: else
73: text = @ss.string[@ss.pos .. 1]
74: raise ScanError, "can not match: '" + text + "'"
75: end # if
76:
77: else
78: raise ScanError, "undefined state: '" + state.to_s + "'"
79: end # case state
80: token
81: end
# File lib/rack/mount/strexp/tokenizer.rb, line 40
40: def scan_file( filename )
41: load_file(filename)
42: do_parse
43: end
# File lib/rack/mount/strexp/tokenizer.rb, line 17
17: def scan_setup(str)
18: @ss = StringScanner.new(str)
19: @lineno = 1
20: @state = nil
21: end
# File lib/rack/mount/strexp/tokenizer.rb, line 27
27: def scan_str(str)
28: scan_setup(str)
29: do_parse
30: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.