Class: TDParser::Parser
Instance Method Summary
collapse
Methods included from TDParser
#any_rule, #backref, #chainl, #chainr, #condition_rule, define, #empty_rule, #fail_rule, #leftrec, #none_rule, #rightrec, #rule, #stackref, #state, #token
#prepare, #recover
Instance Method Details
#%(stack) ⇒ Object
156
157
158
|
# File 'lib/tdp.rb', line 156
def %(stack)
StackParser.new(self,stack)
end
|
#*(range) ⇒ Object
138
139
140
141
142
143
144
145
146
|
# File 'lib/tdp.rb', line 138
def *(range)
if( range.is_a?(Range) )
n = range.min
else
n = range
range = nil
end
IterationParser.new(self,n,range)
end
|
#-(r) ⇒ Object
126
127
128
|
# File 'lib/tdp.rb', line 126
def -(r)
ConcatParser.new(self,r)
end
|
#/(label) ⇒ Object
152
153
154
|
# File 'lib/tdp.rb', line 152
def /(label)
LabelParser.new(self,label)
end
|
#==(r) ⇒ Object
118
119
120
|
# File 'lib/tdp.rb', line 118
def ==(r)
false
end
|
#>(symbol) ⇒ Object
160
161
162
163
164
165
|
# File 'lib/tdp.rb', line 160
def >(symbol)
Parser.new{|tokens, buff|
buff[symbol] = buff.dup()
self[tokens, buff]
}
end
|
#>>(act) ⇒ Object
148
149
150
|
# File 'lib/tdp.rb', line 148
def >>(act)
ActionParser.new(self,act)
end
|
#call(*args) ⇒ Object
107
108
|
# File 'lib/tdp.rb', line 107
def call(*args)
end
|
#do(&block) ⇒ Object
200
201
202
|
# File 'lib/tdp.rb', line 200
def do(&block)
self >> block
end
|
#optimize(default = false) ⇒ Object
def [](*args)
call(*args)
end
114
115
116
|
# File 'lib/tdp.rb', line 114
def optimize(default=false)
self.dup()
end
|
#parse(tokens = nil, buff = nil, &blk) ⇒ Object
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
|
# File 'lib/tdp.rb', line 171
def parse(tokens=nil, buff=nil, &blk)
buff ||= TokenBuffer.new()
if( blk.nil? )
if( tokens.respond_to?(:shift) && tokens.respond_to?(:unshift) )
@tokens = tokens
elsif( tokens.respond_to?(:each) )
@tokens = TokenGenerator.new(tokens)
else
@tokens = tokens
end
else
@tokens = TokenGenerator.new(&blk)
end
r = call(@tokens, buff)
if( r.nil? )
nil
else
r[0]
end
end
|
#peek ⇒ Object
192
193
194
195
196
197
198
|
# File 'lib/tdp.rb', line 192
def peek()
t = @tokens.shift()
if( ! t.nil? )
@tokens.unshift(t)
end
t
end
|
#same?(r) ⇒ Boolean
122
123
124
|
# File 'lib/tdp.rb', line 122
def same?(r)
self == r
end
|
#to_proc ⇒ Object
99
100
101
|
# File 'lib/tdp.rb', line 99
def to_proc()
Proc.new{|*x| self.call(*x) }
end
|
#to_s ⇒ Object
103
104
105
|
# File 'lib/tdp.rb', line 103
def to_s()
"??"
end
|