Sha256: 3a37bc7e3e589fc3d21401648b6ca8598cfb34550980d8e43e0c95eb6f38e2fa
Contents?: true
Size: 1.02 KB
Versions: 1
Compression:
Stored size: 1.02 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 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
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
lrama-0.5.1 | lib/lrama/parser/token_scanner.rb |