Method: Grammar::Ruby#sequence
- Defined in:
- lib/grammar/ruby.rb
#sequence(gram1) ⇒ Object
:yield: engine
306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 |
# File 'lib/grammar/ruby.rb', line 306 def sequence(gram1) # :yield: engine nexpected = @expected.size @followed += 1 begin gram1[self] ensure @followed -= 1 end._and{ expected = @expected begin if expected.size>nexpected @expected = [] @consume ? yield(self) : Code::True else yield(self) end ensure @expected = expected end } end |