xref: /aosp_15_r20/external/antlr/runtime/JavaScript/tests/functional/t014parser.g (revision 16467b971bd3e2009fad32dd79016f2c7e421deb)
1*16467b97STreehugger Robotgrammar t014parser;
2*16467b97STreehugger Robotoptions {
3*16467b97STreehugger Robot  language = JavaScript;
4*16467b97STreehugger Robot}
5*16467b97STreehugger Robot
6*16467b97STreehugger Robot@parser::members {
7*16467b97STreehugger Robotthis.reportedErrors = [];
8*16467b97STreehugger Robotthis.events = [];
9*16467b97STreehugger Robotthis.emitErrorMessage = function(msg) {
10*16467b97STreehugger Robot    this.reportedErrors.push(msg);
11*16467b97STreehugger Robot};
12*16467b97STreehugger Robotthis.eventMessage = function(msg) {
13*16467b97STreehugger Robot    this.events.push(msg);
14*16467b97STreehugger Robot};
15*16467b97STreehugger Robot}
16*16467b97STreehugger Robot
17*16467b97STreehugger Robot
18*16467b97STreehugger Robotdocument:
19*16467b97STreehugger Robot        ( declaration
20*16467b97STreehugger Robot        | call
21*16467b97STreehugger Robot        )*
22*16467b97STreehugger Robot        EOF
23*16467b97STreehugger Robot    ;
24*16467b97STreehugger Robot
25*16467b97STreehugger Robotdeclaration:
26*16467b97STreehugger Robot        'var' t=IDENTIFIER ';'
27*16467b97STreehugger Robot        {this.eventMessage(['decl', $t.getText()]);}
28*16467b97STreehugger Robot    ;
29*16467b97STreehugger Robot
30*16467b97STreehugger Robotcall:
31*16467b97STreehugger Robot        t=IDENTIFIER '(' ')' ';'
32*16467b97STreehugger Robot        {this.eventMessage(['call', $t.getText()]);}
33*16467b97STreehugger Robot    ;
34*16467b97STreehugger Robot
35*16467b97STreehugger RobotIDENTIFIER: ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')*;
36*16467b97STreehugger RobotWS:  (' '|'\r'|'\t'|'\n') {$channel=HIDDEN;};
37