spec/rley/support/grammar_ambig01_helper.rb in rley-0.6.09 vs spec/rley/support/grammar_ambig01_helper.rb in rley-0.7.00

- old
+ new

@@ -19,22 +19,31 @@ end builder end # Highly simplified tokenizer implementation. - def tokenizer_ambig01(aText, aGrammar) - tokens = aText.scan(/\S+/).map do |lexeme| + def tokenizer_ambig01(aText) + scanner = StringScanner.new(aText) + tokens = [] + + loop do + scanner.skip(/\s+/) + curr_pos = scanner.pos + lexeme = scanner.scan(/\S+/) + break unless lexeme case lexeme when '+', '*' - terminal = aGrammar.name2symbol[lexeme] + terminal = lexeme when /^[-+]?\d+$/ - terminal = aGrammar.name2symbol['integer'] + terminal = 'integer' else msg = "Unknown input text '#{lexeme}'" raise StandardError, msg end - Rley::Lexical::Token.new(lexeme, terminal) - end + + pos = Rley::Lexical::Position.new(1, curr_pos + 1) + tokens << Rley::Lexical::Token.new(lexeme, terminal, pos) + end return tokens end end # module # End of file