Sha256: 03b96d7bae01dc41b6131e7d50ad46ea6e4cf8d82d06457f0196efb606d7c525
Contents?: true
Size: 1.08 KB
Versions: 2
Compression:
Stored size: 1.08 KB
Contents
module Lrama class Parser class TokenScanner def initialize(tokens) @tokens = tokens @index = 0 end def current_token @tokens[@index] end def current_type current_token && current_token.type end def previous_token @tokens[@index - 1] end def next token = current_token @index += 1 return token end def consume(*token_types) if token_types.include?(current_type) token = current_token self.next return token end return nil end def consume!(*token_types) consume(*token_types) || (raise "#{token_types} is expected but #{current_type}. #{current_token}") end def consume_multi(*token_types) a = [] while token_types.include?(current_type) a << current_token self.next end raise "No token is consumed. #{token_types}" if a.empty? return a end def eots? current_token.nil? end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
lrama-0.5.3 | lib/lrama/parser/token_scanner.rb |
lrama-0.5.2 | lib/lrama/parser/token_scanner.rb |