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