xref: /aosp_15_r20/external/antlr/runtime/JavaScript/tests/functional/t053heteroT9.g (revision 16467b971bd3e2009fad32dd79016f2c7e421deb)
1*16467b97STreehugger Robotgrammar t053heteroT9;
2*16467b97STreehugger Robotoptions {
3*16467b97STreehugger Robot    language=JavaScript;
4*16467b97STreehugger Robot    output=AST;
5*16467b97STreehugger Robot}
6*16467b97STreehugger Robot@header {
7*16467b97STreehugger Robotfunction V2() {
8*16467b97STreehugger Robot    var x, y, z, token, ttype;
9*16467b97STreehugger Robot    if (arguments.length===4) {
10*16467b97STreehugger Robot        ttype = arguments[0];
11*16467b97STreehugger Robot        x = arguments[1];
12*16467b97STreehugger Robot        y = arguments[2];
13*16467b97STreehugger Robot        z = arguments[3];
14*16467b97STreehugger Robot        token = new org.antlr.runtime.CommonToken(ttype, "");
15*16467b97STreehugger Robot    } else if (arguments.length===3) {
16*16467b97STreehugger Robot        ttype = arguments[0];
17*16467b97STreehugger Robot        token = arguments[1];
18*16467b97STreehugger Robot        x = arguments[2];
19*16467b97STreehugger Robot        y = 0;
20*16467b97STreehugger Robot        z = 0;
21*16467b97STreehugger Robot    } else {
22*16467b97STreehugger Robot        throw new Error("Invalid args");
23*16467b97STreehugger Robot    }
24*16467b97STreehugger Robot
25*16467b97STreehugger Robot    V2.superclass.constructor.call(this, token);
26*16467b97STreehugger Robot    this.x = x;
27*16467b97STreehugger Robot    this.y = y;
28*16467b97STreehugger Robot    this.z = z;
29*16467b97STreehugger Robot};
30*16467b97STreehugger Robot
31*16467b97STreehugger Robotorg.antlr.lang.extend(V2, org.antlr.runtime.tree.CommonTree, {
32*16467b97STreehugger Robot    toString: function() {
33*16467b97STreehugger Robot        var txt = "";
34*16467b97STreehugger Robot        if (this.token) {
35*16467b97STreehugger Robot            txt += this.getText();
36*16467b97STreehugger Robot        }
37*16467b97STreehugger Robot        txt += "<V>;"+this.x.toString()+this.y.toString()+this.z.toString();
38*16467b97STreehugger Robot        return txt;
39*16467b97STreehugger Robot    }
40*16467b97STreehugger Robot});
41*16467b97STreehugger Robot}
42*16467b97STreehugger Robota : ID -> ID<V2>[42,19,30] ID<V2>[$ID,99];
43*16467b97STreehugger RobotID : 'a'..'z'+ ;
44*16467b97STreehugger RobotWS : (' '|'\n') {$channel=HIDDEN;} ;
45*16467b97STreehugger Robot
46