You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.1 KiB
44 lines
1.1 KiB
grammar t039labels;
|
|
options {
|
|
language =Cpp;
|
|
}
|
|
|
|
@lexer::includes
|
|
{
|
|
#include "UserTestTraits.hpp"
|
|
#include <iostream>
|
|
}
|
|
@lexer::namespace
|
|
{ Antlr3Test }
|
|
|
|
@parser::includes {
|
|
#include "UserTestTraits.hpp"
|
|
#include "t039labelsLexer.hpp"
|
|
}
|
|
@parser::namespace
|
|
{ Antlr3Test }
|
|
@parser::members {
|
|
class TokenList {
|
|
public:
|
|
TokenList() : token() {}
|
|
TokenList(TokenList const& other) : tokens(other.tokens), token(other.token) {}
|
|
TokenList(ImplTraits::TokenPtrsListType const& lst, ImplTraits::CommonTokenType *t) : tokens(lst), token(t) {}
|
|
//private:
|
|
ImplTraits::TokenPtrsListType tokens;
|
|
ImplTraits::CommonTokenType* token;
|
|
};
|
|
}
|
|
a returns [t039labelsParser::TokenList retval]
|
|
: ids+=A ( ',' ids+=(A|B) )* C D w=. ids+=. F EOF
|
|
{ retval = t039labelsParser::TokenList($ids, $w); }
|
|
;
|
|
|
|
A: 'a'..'z';
|
|
B: '0'..'9';
|
|
C: a='A' { std::cout << $a << std::endl; };
|
|
D: a='FOOBAR' { std::cout << $a << std::endl; };
|
|
E: 'GNU' a=. { std::cout << $a << std::endl; };
|
|
F: 'BLARZ' a=EOF { std::cout << $a << std::endl; };
|
|
|
|
WS: ' '+ { $channel = HIDDEN; };
|