xref: /aosp_15_r20/external/antlr/runtime/Cpp/tests/t045dfabug.g (revision 16467b971bd3e2009fad32dd79016f2c7e421deb)
1*16467b97STreehugger Robotgrammar t045dfabug;
2*16467b97STreehugger Robotoptions {
3*16467b97STreehugger Robot    language =Cpp;
4*16467b97STreehugger Robot    output = AST;
5*16467b97STreehugger Robot}
6*16467b97STreehugger Robot
7*16467b97STreehugger Robot@lexer::includes
8*16467b97STreehugger Robot{
9*16467b97STreehugger Robot#include "UserTestTraits.hpp"
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}
17*16467b97STreehugger Robot@parser::namespace
18*16467b97STreehugger Robot{ Antlr3Test }
19*16467b97STreehugger Robot
20*16467b97STreehugger Robot// this rule used to generate an infinite loop in DFA.predict
21*16467b97STreehugger Robotr
22*16467b97STreehugger Robotoptions { backtrack=true; }
23*16467b97STreehugger Robot    : (modifier+ INT)=> modifier+ expression
24*16467b97STreehugger Robot    | modifier+ statement
25*16467b97STreehugger Robot    ;
26*16467b97STreehugger Robot
27*16467b97STreehugger Robotexpression
28*16467b97STreehugger Robot    : INT '+' INT
29*16467b97STreehugger Robot    ;
30*16467b97STreehugger Robot
31*16467b97STreehugger Robotstatement
32*16467b97STreehugger Robot    : 'fooze'
33*16467b97STreehugger Robot    | 'fooze2'
34*16467b97STreehugger Robot    ;
35*16467b97STreehugger Robot
36*16467b97STreehugger Robotmodifier
37*16467b97STreehugger Robot    : 'public'
38*16467b97STreehugger Robot    | 'private'
39*16467b97STreehugger Robot    ;
40*16467b97STreehugger Robot
41*16467b97STreehugger RobotID : 'a'..'z' + ;
42*16467b97STreehugger RobotINT : '0'..'9' +;
43*16467b97STreehugger RobotWS: (' ' | '\n' | '\t')+ {$channel = HIDDEN;};
44*16467b97STreehugger Robot
45