1*16467b97STreehugger Robotgrammar t039labels; 2*16467b97STreehugger Robotoptions { 3*16467b97STreehugger Robot language =Cpp; 4*16467b97STreehugger Robot} 5*16467b97STreehugger Robot 6*16467b97STreehugger Robot@lexer::includes 7*16467b97STreehugger Robot{ 8*16467b97STreehugger Robot#include "UserTestTraits.hpp" 9*16467b97STreehugger Robot#include <iostream> 10*16467b97STreehugger Robot} 11*16467b97STreehugger Robot@lexer::namespace 12*16467b97STreehugger Robot{ Antlr3Test } 13*16467b97STreehugger Robot 14*16467b97STreehugger Robot@parser::includes { 15*16467b97STreehugger Robot#include "UserTestTraits.hpp" 16*16467b97STreehugger Robot#include "t039labelsLexer.hpp" 17*16467b97STreehugger Robot} 18*16467b97STreehugger Robot@parser::namespace 19*16467b97STreehugger Robot{ Antlr3Test } 20*16467b97STreehugger Robot@parser::members { 21*16467b97STreehugger Robot class TokenList { 22*16467b97STreehugger Robot public: 23*16467b97STreehugger Robot TokenList() : token() {} 24*16467b97STreehugger Robot TokenList(TokenList const& other) : tokens(other.tokens), token(other.token) {} 25*16467b97STreehugger Robot TokenList(ImplTraits::TokenPtrsListType const& lst, ImplTraits::CommonTokenType *t) : tokens(lst), token(t) {} 26*16467b97STreehugger Robot //private: 27*16467b97STreehugger Robot ImplTraits::TokenPtrsListType tokens; 28*16467b97STreehugger Robot ImplTraits::CommonTokenType* token; 29*16467b97STreehugger Robot }; 30*16467b97STreehugger Robot} 31*16467b97STreehugger Robota returns [t039labelsParser::TokenList retval] 32*16467b97STreehugger Robot : ids+=A ( ',' ids+=(A|B) )* C D w=. ids+=. F EOF 33*16467b97STreehugger Robot { retval = t039labelsParser::TokenList($ids, $w); } 34*16467b97STreehugger Robot ; 35*16467b97STreehugger Robot 36*16467b97STreehugger RobotA: 'a'..'z'; 37*16467b97STreehugger RobotB: '0'..'9'; 38*16467b97STreehugger RobotC: a='A' { std::cout << $a << std::endl; }; 39*16467b97STreehugger RobotD: a='FOOBAR' { std::cout << $a << std::endl; }; 40*16467b97STreehugger RobotE: 'GNU' a=. { std::cout << $a << std::endl; }; 41*16467b97STreehugger RobotF: 'BLARZ' a=EOF { std::cout << $a << std::endl; }; 42*16467b97STreehugger Robot 43*16467b97STreehugger RobotWS: ' '+ { $channel = HIDDEN; }; 44