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