1324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#!/usr/bin/ruby 2324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver# encoding: utf-8 3324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 4324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverrequire 'antlr3/test/functional' 5324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 6324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverclass TestBug80 < ANTLR3::Test::Functional 7324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 8324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer grammar Bug80; 9324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { language = Ruby; } 10324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 11324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID_LIKE 12324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver : 'defined' 13324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver | {false}? Identifier 14324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver | Identifier 15324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ; 16324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 17324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver fragment 18324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver // with just 'a', output compiles 19324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Identifier: 'a'..'z'+ ; 20324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 21324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 22324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "um... something" do 23324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = Bug80::Lexer.new( 'defined' ) 24324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = lexer.each { |tk| tk } 25324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 26324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverend 27324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 28324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 29324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverclass TestEOF < ANTLR3::Test::Functional 30324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 31324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 32324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer grammar EndOfFile; 33324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 34324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 35324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language = Ruby; 36324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 37324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 38324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver KEND: EOF; 39324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver SPACE: ' '; 40324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 41324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 42324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example 'referencing EOF in a rule' do 43324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = EndOfFile::Lexer.new( " " ) 44324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tks = lexer.map { |tk| tk } 45324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 46324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverend 47