xref: /aosp_15_r20/external/antlr/runtime/JavaScript/tests/functional/t026actions.g (revision 16467b971bd3e2009fad32dd79016f2c7e421deb)
1*16467b97STreehugger Robotgrammar t026actions;
2*16467b97STreehugger Robotoptions {
3*16467b97STreehugger Robot  language = JavaScript;
4*16467b97STreehugger Robot}
5*16467b97STreehugger Robot
6*16467b97STreehugger Robot@lexer::init {
7*16467b97STreehugger Robot    this.xlog = [];
8*16467b97STreehugger Robot    this.foobar = "attribute;";
9*16467b97STreehugger Robot}
10*16467b97STreehugger Robot
11*16467b97STreehugger Robotprog
12*16467b97STreehugger Robot@init {
13*16467b97STreehugger Robot    this.xlog = [];
14*16467b97STreehugger Robot    this.xlog.push("init;");
15*16467b97STreehugger Robot}
16*16467b97STreehugger Robot@after {
17*16467b97STreehugger Robot    this.xlog.push("after;");
18*16467b97STreehugger Robot}
19*16467b97STreehugger Robot    :   IDENTIFIER EOF
20*16467b97STreehugger Robot    ;
21*16467b97STreehugger Robot    catch [ exc ] {
22*16467b97STreehugger Robot        this.xlog.push("catch;");
23*16467b97STreehugger Robot        throw new Error();
24*16467b97STreehugger Robot    }
25*16467b97STreehugger Robot    finally {
26*16467b97STreehugger Robot        this.xlog.push("finally;");
27*16467b97STreehugger Robot    }
28*16467b97STreehugger Robot
29*16467b97STreehugger Robot
30*16467b97STreehugger RobotIDENTIFIER
31*16467b97STreehugger Robot    : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')*
32*16467b97STreehugger Robot        {
33*16467b97STreehugger Robot          // a comment
34*16467b97STreehugger Robot          this.xlog.push("action;");
35*16467b97STreehugger Robot          this.xlog.push([$text, $type, $line, $pos, $index, $channel, $start, $stop].join(" "));
36*16467b97STreehugger Robot          if (true)
37*16467b97STreehugger Robot              this.xlog.push(this.foobar);
38*16467b97STreehugger Robot        }
39*16467b97STreehugger Robot    ;
40*16467b97STreehugger Robot
41*16467b97STreehugger RobotWS: (' ' | '\n')+;
42