EMMA Coverage Report (generated Sat Dec 08 18:09:21 GMT 2007)
[all classes][uk.co.zonetora.fj.ast.parser]

COVERAGE SUMMARY FOR SOURCE FILE [Parser.java]

nameclass, %method, %block, %line, %
Parser.java100% (1/1)41%  (23/56)49%  (1047/2116)50%  (205/406)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class Parser100% (1/1)41%  (23/56)49%  (1047/2116)50%  (205/406)
new11 (): Node 0%   (0/1)0%   (0/51)0%   (0/11)
new12 (): Node 0%   (0/1)0%   (0/21)0%   (0/5)
new14 (): Node 0%   (0/1)0%   (0/66)0%   (0/14)
new15 (): Node 0%   (0/1)0%   (0/16)0%   (0/4)
new16 (): Node 0%   (0/1)0%   (0/11)0%   (0/3)
new18 (): Node 0%   (0/1)0%   (0/14)0%   (0/4)
new19 (): Node 0%   (0/1)0%   (0/16)0%   (0/4)
new2 (): Node 0%   (0/1)0%   (0/16)0%   (0/4)
new20 (): Node 0%   (0/1)0%   (0/16)0%   (0/4)
new21 (): Node 0%   (0/1)0%   (0/11)0%   (0/3)
new23 (): Node 0%   (0/1)0%   (0/16)0%   (0/4)
new24 (): Node 0%   (0/1)0%   (0/16)0%   (0/4)
new25 (): Node 0%   (0/1)0%   (0/16)0%   (0/4)
new26 (): Node 0%   (0/1)0%   (0/14)0%   (0/4)
new27 (): Node 0%   (0/1)0%   (0/16)0%   (0/4)
new28 (): Node 0%   (0/1)0%   (0/16)0%   (0/4)
new29 (): Node 0%   (0/1)0%   (0/11)0%   (0/3)
new31 (): Node 0%   (0/1)0%   (0/11)0%   (0/3)
new32 (): Node 0%   (0/1)0%   (0/16)0%   (0/4)
new33 (): Node 0%   (0/1)0%   (0/36)0%   (0/8)
new35 (): Node 0%   (0/1)0%   (0/21)0%   (0/5)
new36 (): Node 0%   (0/1)0%   (0/36)0%   (0/8)
new37 (): Node 0%   (0/1)0%   (0/26)0%   (0/6)
new38 (): Node 0%   (0/1)0%   (0/11)0%   (0/3)
new42 (): Node 0%   (0/1)0%   (0/14)0%   (0/4)
new43 (): Node 0%   (0/1)0%   (0/16)0%   (0/4)
new44 (): Node 0%   (0/1)0%   (0/16)0%   (0/4)
new45 (): Node 0%   (0/1)0%   (0/11)0%   (0/3)
new47 (): Node 0%   (0/1)0%   (0/16)0%   (0/4)
new5 (): Node 0%   (0/1)0%   (0/49)0%   (0/11)
new6 (): Node 0%   (0/1)0%   (0/16)0%   (0/4)
new7 (): Node 0%   (0/1)0%   (0/11)0%   (0/3)
new9 (): Node 0%   (0/1)0%   (0/16)0%   (0/4)
parse (): Start 100% (1/1)49%  (371/764)58%  (51/88)
goTo (int): int 100% (1/1)93%  (64/69)92%  (12/13)
Parser (Lexer): void 100% (1/1)97%  (196/202)95%  (40/42)
filter (): void 100% (1/1)100% (1/1)100% (1/1)
index (Switchable): int 100% (1/1)100% (12/12)100% (3/3)
new0 (): Node 100% (1/1)100% (9/9)100% (3/3)
new1 (): Node 100% (1/1)100% (11/11)100% (3/3)
new10 (): Node 100% (1/1)100% (11/11)100% (3/3)
new13 (): Node 100% (1/1)100% (64/64)100% (14/14)
new17 (): Node 100% (1/1)100% (56/56)100% (12/12)
new22 (): Node 100% (1/1)100% (6/6)100% (2/2)
new3 (): Node 100% (1/1)100% (11/11)100% (3/3)
new30 (): Node 100% (1/1)100% (6/6)100% (2/2)
new34 (): Node 100% (1/1)100% (11/11)100% (3/3)
new39 (): Node 100% (1/1)100% (11/11)100% (3/3)
new4 (): Node 100% (1/1)100% (47/47)100% (11/11)
new40 (): Node 100% (1/1)100% (31/31)100% (7/7)
new41 (): Node 100% (1/1)100% (21/21)100% (5/5)
new46 (): Node 100% (1/1)100% (6/6)100% (2/2)
new8 (): Node 100% (1/1)100% (49/49)100% (11/11)
pop (): Node 100% (1/1)100% (7/7)100% (1/1)
push (int, Node, boolean): void 100% (1/1)100% (34/34)100% (10/10)
state (): int 100% (1/1)100% (12/12)100% (3/3)

1/* This file was generated by SableCC (http://www.sablecc.org/). */
2 
3package uk.co.zonetora.fj.ast.parser;
4 
5import uk.co.zonetora.fj.ast.lexer.*;
6import uk.co.zonetora.fj.ast.node.*;
7import uk.co.zonetora.fj.ast.analysis.*;
8import java.util.*;
9 
10import java.io.DataInputStream;
11import java.io.BufferedInputStream;
12import java.io.IOException;
13 
14public class Parser
15{
16    public final Analysis ignoredTokens = new AnalysisAdapter();
17 
18    protected Node node;
19 
20    private final Lexer lexer;
21    private final ListIterator stack = new LinkedList().listIterator();
22    private int last_shift;
23    private int last_pos;
24    private int last_line;
25    private Token last_token;
26    private final TokenIndex converter = new TokenIndex();
27    private final int[] action = new int[2];
28 
29    private final static int SHIFT = 0;
30    private final static int REDUCE = 1;
31    private final static int ACCEPT = 2;
32    private final static int ERROR = 3;
33 
34    protected void filter() throws ParserException, LexerException, IOException
35    {
36    }
37 
38    public Parser(Lexer lexer)
39    {
40        this.lexer = lexer;
41 
42        if(actionTable == null)
43        {
44            try
45            {
46                DataInputStream s = new DataInputStream(
47                    new BufferedInputStream(
48                    Parser.class.getResourceAsStream("parser.dat")));
49 
50                // read actionTable
51                int length = s.readInt();
52                actionTable = new int[length][][];
53                for(int i = 0; i < actionTable.length; i++)
54                {
55                    length = s.readInt();
56                    actionTable[i] = new int[length][3];
57                    for(int j = 0; j < actionTable[i].length; j++)
58                    {
59                        for(int k = 0; k < 3; k++)
60                        {
61                            actionTable[i][j][k] = s.readInt();
62                        }
63                    }
64                }
65 
66                // read gotoTable
67                length = s.readInt();
68                gotoTable = new int[length][][];
69                for(int i = 0; i < gotoTable.length; i++)
70                {
71                    length = s.readInt();
72                    gotoTable[i] = new int[length][2];
73                    for(int j = 0; j < gotoTable[i].length; j++)
74                    {
75                        for(int k = 0; k < 2; k++)
76                        {
77                            gotoTable[i][j][k] = s.readInt();
78                        }
79                    }
80                }
81 
82                // read errorMessages
83                length = s.readInt();
84                errorMessages = new String[length];
85                for(int i = 0; i < errorMessages.length; i++)
86                {
87                    length = s.readInt();
88                    StringBuffer buffer = new StringBuffer();
89 
90                    for(int j = 0; j < length; j++)
91                    {
92                        buffer.append(s.readChar());
93                    }
94                    errorMessages[i] = buffer.toString();
95                }
96 
97                // read errors
98                length = s.readInt();
99                errors = new int[length];
100                for(int i = 0; i < errors.length; i++)
101                {
102                    errors[i] = s.readInt();
103                }
104 
105                s.close();
106            }
107            catch(Exception e)
108            {
109                throw new RuntimeException("The file \"parser.dat\" is either missing or corrupted.");
110            }
111        }
112    }
113 
114    private int goTo(int index)
115    {
116        int state = state();
117        int low = 1;
118        int high = gotoTable[index].length - 1;
119        int value = gotoTable[index][0][1];
120 
121        while(low <= high)
122        {
123            int middle = (low + high) / 2;
124 
125            if(state < gotoTable[index][middle][0])
126            {
127                high = middle - 1;
128            }
129            else if(state > gotoTable[index][middle][0])
130            {
131                low = middle + 1;
132            }
133            else
134            {
135                value = gotoTable[index][middle][1];
136                break;
137            }
138        }
139 
140        return value;
141    }
142 
143    private void push(int state, Node node, boolean filter) throws ParserException, LexerException, IOException
144    {
145        this.node = node;
146 
147        if(filter)
148        {
149            filter();
150        }
151 
152        if(!stack.hasNext())
153        {
154            stack.add(new State(state, this.node));
155            return;
156        }
157 
158        State s = (State) stack.next();
159        s.state = state;
160        s.node = this.node;
161    }
162 
163    private int state()
164    {
165        State s = (State) stack.previous();
166        stack.next();
167        return s.state;
168    }
169 
170    private Node pop()
171    {
172        return (Node) ((State) stack.previous()).node;
173    }
174 
175    private int index(Switchable token)
176    {
177        converter.index = -1;
178        token.apply(converter);
179        return converter.index;
180    }
181 
182    public Start parse() throws ParserException, LexerException, IOException
183    {
184        push(0, null, false);
185 
186        List ign = null;
187        while(true)
188        {
189            while(index(lexer.peek()) == -1)
190            {
191                if(ign == null)
192                {
193                    ign = new TypedLinkedList(NodeCast.instance);
194                }
195 
196                ign.add(lexer.next());
197            }
198 
199            if(ign != null)
200            {
201                ignoredTokens.setIn(lexer.peek(), ign);
202                ign = null;
203            }
204 
205            last_pos = lexer.peek().getPos();
206            last_line = lexer.peek().getLine();
207            last_token = lexer.peek();
208 
209            int index = index(lexer.peek());
210            action[0] = actionTable[state()][0][1];
211            action[1] = actionTable[state()][0][2];
212 
213            int low = 1;
214            int high = actionTable[state()].length - 1;
215 
216            while(low <= high)
217            {
218                int middle = (low + high) / 2;
219 
220                if(index < actionTable[state()][middle][0])
221                {
222                    high = middle - 1;
223                }
224                else if(index > actionTable[state()][middle][0])
225                {
226                    low = middle + 1;
227                }
228                else
229                {
230                    action[0] = actionTable[state()][middle][1];
231                    action[1] = actionTable[state()][middle][2];
232                    break;
233                }
234            }
235 
236            switch(action[0])
237            {
238                case SHIFT:
239                    push(action[1], lexer.next(), true);
240                    last_shift = action[1];
241                    break;
242                case REDUCE:
243                    switch(action[1])
244                    {
245                    case 0: { Node node = new0(); push(goTo(0), node, true); } break;
246                    case 1: { Node node = new1(); push(goTo(0), node, true); } break;
247                    case 2: { Node node = new2(); push(goTo(16), node, false); } break;
248                    case 3: { Node node = new3(); push(goTo(16), node, false); } break;
249                    case 4: { Node node = new4(); push(goTo(1), node, true); } break;
250                    case 5: { Node node = new5(); push(goTo(1), node, true); } break;
251                    case 6: { Node node = new6(); push(goTo(17), node, false); } break;
252                    case 7: { Node node = new7(); push(goTo(17), node, false); } break;
253                    case 8: { Node node = new8(); push(goTo(1), node, true); } break;
254                    case 9: { Node node = new9(); push(goTo(18), node, false); } break;
255                    case 10: { Node node = new10(); push(goTo(18), node, false); } break;
256                    case 11: { Node node = new11(); push(goTo(1), node, true); } break;
257                    case 12: { Node node = new12(); push(goTo(2), node, true); } break;
258                    case 13: { Node node = new13(); push(goTo(3), node, true); } break;
259                    case 14: { Node node = new14(); push(goTo(3), node, true); } break;
260                    case 15: { Node node = new15(); push(goTo(19), node, false); } break;
261                    case 16: { Node node = new16(); push(goTo(19), node, false); } break;
262                    case 17: { Node node = new17(); push(goTo(4), node, true); } break;
263                    case 18: { Node node = new18(); push(goTo(5), node, true); } break;
264                    case 19: { Node node = new19(); push(goTo(5), node, true); } break;
265                    case 20: { Node node = new20(); push(goTo(20), node, false); } break;
266                    case 21: { Node node = new21(); push(goTo(20), node, false); } break;
267                    case 22: { Node node = new22(); push(goTo(5), node, true); } break;
268                    case 23: { Node node = new23(); push(goTo(6), node, true); } break;
269                    case 24: { Node node = new24(); push(goTo(6), node, true); } break;
270                    case 25: { Node node = new25(); push(goTo(7), node, true); } break;
271                    case 26: { Node node = new26(); push(goTo(8), node, true); } break;
272                    case 27: { Node node = new27(); push(goTo(8), node, true); } break;
273                    case 28: { Node node = new28(); push(goTo(21), node, false); } break;
274                    case 29: { Node node = new29(); push(goTo(21), node, false); } break;
275                    case 30: { Node node = new30(); push(goTo(8), node, true); } break;
276                    case 31: { Node node = new31(); push(goTo(9), node, true); } break;
277                    case 32: { Node node = new32(); push(goTo(10), node, true); } break;
278                    case 33: { Node node = new33(); push(goTo(11), node, true); } break;
279                    case 34: { Node node = new34(); push(goTo(12), node, true); } break;
280                    case 35: { Node node = new35(); push(goTo(12), node, true); } break;
281                    case 36: { Node node = new36(); push(goTo(12), node, true); } break;
282                    case 37: { Node node = new37(); push(goTo(12), node, true); } break;
283                    case 38: { Node node = new38(); push(goTo(13), node, true); } break;
284                    case 39: { Node node = new39(); push(goTo(13), node, true); } break;
285                    case 40: { Node node = new40(); push(goTo(13), node, true); } break;
286                    case 41: { Node node = new41(); push(goTo(13), node, true); } break;
287                    case 42: { Node node = new42(); push(goTo(14), node, true); } break;
288                    case 43: { Node node = new43(); push(goTo(14), node, true); } break;
289                    case 44: { Node node = new44(); push(goTo(22), node, false); } break;
290                    case 45: { Node node = new45(); push(goTo(22), node, false); } break;
291                    case 46: { Node node = new46(); push(goTo(14), node, true); } break;
292                    case 47: { Node node = new47(); push(goTo(15), node, true); } break;
293                    }
294                    break;
295                case ACCEPT:
296                    {
297                        EOF node2 = (EOF) lexer.next();
298                        PProg node1 = (PProg) pop();
299                        Start node = new Start(node1, node2);
300                        return node;
301                    }
302                case ERROR:
303                    throw new ParserException(last_token,
304                        "[" + last_line + "," + last_pos + "] " +
305                        errorMessages[errors[action[1]]]);
306            }
307        }
308    }
309 
310    Node new0()
311    {
312        XPClassDecl node1 = null;
313        AProg node = new AProg(node1);
314        return node;
315    }
316 
317    Node new1()
318    {
319        XPClassDecl node1 = (XPClassDecl) pop();
320        AProg node = new AProg(node1);
321        return node;
322    }
323 
324    Node new2()
325    {
326        PClassDecl node2 = (PClassDecl) pop();
327        XPClassDecl node1 = (XPClassDecl) pop();
328        X1PClassDecl node = new X1PClassDecl(node1, node2);
329        return node;
330    }
331 
332    Node new3()
333    {
334        PClassDecl node1 = (PClassDecl) pop();
335        X2PClassDecl node = new X2PClassDecl(node1);
336        return node;
337    }
338 
339    Node new4()
340    {
341        TRBrace node9 = (TRBrace) pop();
342        XPMethodDecl node8 = null;
343        PConstructorDecl node7 = (PConstructorDecl) pop();
344        XPFieldDecl node6 = null;
345        TLBrace node5 = (TLBrace) pop();
346        TIdentifier node4 = (TIdentifier) pop();
347        TExtends node3 = (TExtends) pop();
348        TIdentifier node2 = (TIdentifier) pop();
349        TTclass node1 = (TTclass) pop();
350        AClassDecl node = new AClassDecl(node1, node2, node3, node4, node5, node6, node7, node8, node9);
351        return node;
352    }
353 
354    Node new5()
355    {
356        TRBrace node9 = (TRBrace) pop();
357        XPMethodDecl node8 = null;
358        PConstructorDecl node7 = (PConstructorDecl) pop();
359        XPFieldDecl node6 = (XPFieldDecl) pop();
360        TLBrace node5 = (TLBrace) pop();
361        TIdentifier node4 = (TIdentifier) pop();
362        TExtends node3 = (TExtends) pop();
363        TIdentifier node2 = (TIdentifier) pop();
364        TTclass node1 = (TTclass) pop();
365        AClassDecl node = new AClassDecl(node1, node2, node3, node4, node5, node6, node7, node8, node9);
366        return node;
367    }
368 
369    Node new6()
370    {
371        PFieldDecl node2 = (PFieldDecl) pop();
372        XPFieldDecl node1 = (XPFieldDecl) pop();
373        X1PFieldDecl node = new X1PFieldDecl(node1, node2);
374        return node;
375    }
376 
377    Node new7()
378    {
379        PFieldDecl node1 = (PFieldDecl) pop();
380        X2PFieldDecl node = new X2PFieldDecl(node1);
381        return node;
382    }
383 
384    Node new8()
385    {
386        TRBrace node9 = (TRBrace) pop();
387        XPMethodDecl node8 = (XPMethodDecl) pop();
388        PConstructorDecl node7 = (PConstructorDecl) pop();
389        XPFieldDecl node6 = null;
390        TLBrace node5 = (TLBrace) pop();
391        TIdentifier node4 = (TIdentifier) pop();
392        TExtends node3 = (TExtends) pop();
393        TIdentifier node2 = (TIdentifier) pop();
394        TTclass node1 = (TTclass) pop();
395        AClassDecl node = new AClassDecl(node1, node2, node3, node4, node5, node6, node7, node8, node9);
396        return node;
397    }
398 
399    Node new9()
400    {
401        PMethodDecl node2 = (PMethodDecl) pop();
402        XPMethodDecl node1 = (XPMethodDecl) pop();
403        X1PMethodDecl node = new X1PMethodDecl(node1, node2);
404        return node;
405    }
406 
407    Node new10()
408    {
409        PMethodDecl node1 = (PMethodDecl) pop();
410        X2PMethodDecl node = new X2PMethodDecl(node1);
411        return node;
412    }
413 
414    Node new11()
415    {
416        TRBrace node9 = (TRBrace) pop();
417        XPMethodDecl node8 = (XPMethodDecl) pop();
418        PConstructorDecl node7 = (PConstructorDecl) pop();
419        XPFieldDecl node6 = (XPFieldDecl) pop();
420        TLBrace node5 = (TLBrace) pop();
421        TIdentifier node4 = (TIdentifier) pop();
422        TExtends node3 = (TExtends) pop();
423        TIdentifier node2 = (TIdentifier) pop();
424        TTclass node1 = (TTclass) pop();
425        AClassDecl node = new AClassDecl(node1, node2, node3, node4, node5, node6, node7, node8, node9);
426        return node;
427    }
428 
429    Node new12()
430    {
431        TSemicolon node3 = (TSemicolon) pop();
432        TIdentifier node2 = (TIdentifier) pop();
433        TIdentifier node1 = (TIdentifier) pop();
434        AFieldDecl node = new AFieldDecl(node1, node2, node3);
435        return node;
436    }
437 
438    Node new13()
439    {
440        TRBrace node12 = (TRBrace) pop();
441        XPThisFieldAssig node11 = null;
442        TSemicolon node10 = (TSemicolon) pop();
443        TRPar node9 = (TRPar) pop();
444        PFieldList node8 = (PFieldList) pop();
445        TLPar node7 = (TLPar) pop();
446        TSuper node6 = (TSuper) pop();
447        TLBrace node5 = (TLBrace) pop();
448        TRPar node4 = (TRPar) pop();
449        PParamDeclList node3 = (PParamDeclList) pop();
450        TLPar node2 = (TLPar) pop();
451        TIdentifier node1 = (TIdentifier) pop();
452        AConstructorDecl node = new AConstructorDecl(node1, node2, node3, node4, node5, node6, node7, node8, node9, node10, node11, node12);
453        return node;
454    }
455 
456    Node new14()
457    {
458        TRBrace node12 = (TRBrace) pop();
459        XPThisFieldAssig node11 = (XPThisFieldAssig) pop();
460        TSemicolon node10 = (TSemicolon) pop();
461        TRPar node9 = (TRPar) pop();
462        PFieldList node8 = (PFieldList) pop();
463        TLPar node7 = (TLPar) pop();
464        TSuper node6 = (TSuper) pop();
465        TLBrace node5 = (TLBrace) pop();
466        TRPar node4 = (TRPar) pop();
467        PParamDeclList node3 = (PParamDeclList) pop();
468        TLPar node2 = (TLPar) pop();
469        TIdentifier node1 = (TIdentifier) pop();
470        AConstructorDecl node = new AConstructorDecl(node1, node2, node3, node4, node5, node6, node7, node8, node9, node10, node11, node12);
471        return node;
472    }
473 
474    Node new15()
475    {
476        PThisFieldAssig node2 = (PThisFieldAssig) pop();
477        XPThisFieldAssig node1 = (XPThisFieldAssig) pop();
478        X1PThisFieldAssig node = new X1PThisFieldAssig(node1, node2);
479        return node;
480    }
481 
482    Node new16()
483    {
484        PThisFieldAssig node1 = (PThisFieldAssig) pop();
485        X2PThisFieldAssig node = new X2PThisFieldAssig(node1);
486        return node;
487    }
488 
489    Node new17()
490    {
491        TRBrace node10 = (TRBrace) pop();
492        TSemicolon node9 = (TSemicolon) pop();
493        PTerm node8 = (PTerm) pop();
494        TReturn node7 = (TReturn) pop();
495        TLBrace node6 = (TLBrace) pop();
496        TRPar node5 = (TRPar) pop();
497        PParamDeclList node4 = (PParamDeclList) pop();
498        TLPar node3 = (TLPar) pop();
499        TIdentifier node2 = (TIdentifier) pop();
500        TIdentifier node1 = (TIdentifier) pop();
501        AMethodDecl node = new AMethodDecl(node1, node2, node3, node4, node5, node6, node7, node8, node9, node10);
502        return node;
503    }
504 
505    Node new18()
506    {
507        XPCommaParamArgList node2 = null;
508        PParamArg node1 = (PParamArg) pop();
509        AParamArgsParamDeclList node = new AParamArgsParamDeclList(node1, node2);
510        return node;
511    }
512 
513    Node new19()
514    {
515        XPCommaParamArgList node2 = (XPCommaParamArgList) pop();
516        PParamArg node1 = (PParamArg) pop();
517        AParamArgsParamDeclList node = new AParamArgsParamDeclList(node1, node2);
518        return node;
519    }
520 
521    Node new20()
522    {
523        PCommaParamArgList node2 = (PCommaParamArgList) pop();
524        XPCommaParamArgList node1 = (XPCommaParamArgList) pop();
525        X1PCommaParamArgList node = new X1PCommaParamArgList(node1, node2);
526        return node;
527    }
528 
529    Node new21()
530    {
531        PCommaParamArgList node1 = (PCommaParamArgList) pop();
532        X2PCommaParamArgList node = new X2PCommaParamArgList(node1);
533        return node;
534    }
535 
536    Node new22()
537    {
538        AEmptyParamDeclList node = new AEmptyParamDeclList();
539        return node;
540    }
541 
542    Node new23()
543    {
544        TIdentifier node2 = (TIdentifier) pop();
545        TIdentifier node1 = (TIdentifier) pop();
546        AIdentParamArg node = new AIdentParamArg(node1, node2);
547        return node;
548    }
549 
550    Node new24()
551    {
552        TIdentifier node2 = (TIdentifier) pop();
553        TThis node1 = (TThis) pop();
554        AThisParamArg node = new AThisParamArg(node1, node2);
555        return node;
556    }
557 
558    Node new25()
559    {
560        PParamArg node2 = (PParamArg) pop();
561        TComma node1 = (TComma) pop();
562        ACommaParamArgList node = new ACommaParamArgList(node1, node2);
563        return node;
564    }
565 
566    Node new26()
567    {
568        XPCommaField node2 = null;
569        PFieldName node1 = (PFieldName) pop();
570        AFieldListFieldList node = new AFieldListFieldList(node1, node2);
571        return node;
572    }
573 
574    Node new27()
575    {
576        XPCommaField node2 = (XPCommaField) pop();
577        PFieldName node1 = (PFieldName) pop();
578        AFieldListFieldList node = new AFieldListFieldList(node1, node2);
579        return node;
580    }
581 
582    Node new28()
583    {
584        PCommaField node2 = (PCommaField) pop();
585        XPCommaField node1 = (XPCommaField) pop();
586        X1PCommaField node = new X1PCommaField(node1, node2);
587        return node;
588    }
589 
590    Node new29()
591    {
592        PCommaField node1 = (PCommaField) pop();
593        X2PCommaField node = new X2PCommaField(node1);
594        return node;
595    }
596 
597    Node new30()
598    {
599        AEmptyFieldList node = new AEmptyFieldList();
600        return node;
601    }
602 
603    Node new31()
604    {
605        TIdentifier node1 = (TIdentifier) pop();
606        AFieldName node = new AFieldName(node1);
607        return node;
608    }
609 
610    Node new32()
611    {
612        PFieldName node2 = (PFieldName) pop();
613        TComma node1 = (TComma) pop();
614        ACommaField node = new ACommaField(node1, node2);
615        return node;
616    }
617 
618    Node new33()
619    {
620        TSemicolon node6 = (TSemicolon) pop();
621        TIdentifier node5 = (TIdentifier) pop();
622        TEq node4 = (TEq) pop();
623        TIdentifier node3 = (TIdentifier) pop();
624        TPeriod node2 = (TPeriod) pop();
625        TThis node1 = (TThis) pop();
626        AThisFieldAssig node = new AThisFieldAssig(node1, node2, node3, node4, node5, node6);
627        return node;
628    }
629 
630    Node new34()
631    {
632        PNonLeftRecTerm node1 = (PNonLeftRecTerm) pop();
633        ANonLeftRecTermTerm node = new ANonLeftRecTermTerm(node1);
634        return node;
635    }
636 
637    Node new35()
638    {
639        TIdentifier node3 = (TIdentifier) pop();
640        TPeriod node2 = (TPeriod) pop();
641        PNonLeftRecTerm node1 = (PNonLeftRecTerm) pop();
642        AFieldAccessTerm node = new AFieldAccessTerm(node1, node2, node3);
643        return node;
644    }
645 
646    Node new36()
647    {
648        TRPar node6 = (TRPar) pop();
649        PTermList node5 = (PTermList) pop();
650        TLPar node4 = (TLPar) pop();
651        TIdentifier node3 = (TIdentifier) pop();
652        TPeriod node2 = (TPeriod) pop();
653        PNonLeftRecTerm node1 = (PNonLeftRecTerm) pop();
654        AMethodCallTerm node = new AMethodCallTerm(node1, node2, node3, node4, node5, node6);
655        return node;
656    }
657 
658    Node new37()
659    {
660        PNonLeftRecTerm node4 = (PNonLeftRecTerm) pop();
661        TRSq node3 = (TRSq) pop();
662        TIdentifier node2 = (TIdentifier) pop();
663        TLSq node1 = (TLSq) pop();
664        ACastTerm node = new ACastTerm(node1, node2, node3, node4);
665        return node;
666    }
667 
668    Node new38()
669    {
670        TIdentifier node1 = (TIdentifier) pop();
671        AVariableNonLeftRecTerm node = new AVariableNonLeftRecTerm(node1);
672        return node;
673    }
674 
675    Node new39()
676    {
677        TThis node1 = (TThis) pop();
678        AThisNonLeftRecTerm node = new AThisNonLeftRecTerm(node1);
679        return node;
680    }
681 
682    Node new40()
683    {
684        TRPar node5 = (TRPar) pop();
685        PTermList node4 = (PTermList) pop();
686        TLPar node3 = (TLPar) pop();
687        TIdentifier node2 = (TIdentifier) pop();
688        TNew node1 = (TNew) pop();
689        AObjectCreationNonLeftRecTerm node = new AObjectCreationNonLeftRecTerm(node1, node2, node3, node4, node5);
690        return node;
691    }
692 
693    Node new41()
694    {
695        TRPar node3 = (TRPar) pop();
696        PTerm node2 = (PTerm) pop();
697        TLPar node1 = (TLPar) pop();
698        ABracketNonLeftRecTerm node = new ABracketNonLeftRecTerm(node1, node2, node3);
699        return node;
700    }
701 
702    Node new42()
703    {
704        XPCommaTerm node2 = null;
705        PTerm node1 = (PTerm) pop();
706        ATermListTermList node = new ATermListTermList(node1, node2);
707        return node;
708    }
709 
710    Node new43()
711    {
712        XPCommaTerm node2 = (XPCommaTerm) pop();
713        PTerm node1 = (PTerm) pop();
714        ATermListTermList node = new ATermListTermList(node1, node2);
715        return node;
716    }
717 
718    Node new44()
719    {
720        PCommaTerm node2 = (PCommaTerm) pop();
721        XPCommaTerm node1 = (XPCommaTerm) pop();
722        X1PCommaTerm node = new X1PCommaTerm(node1, node2);
723        return node;
724    }
725 
726    Node new45()
727    {
728        PCommaTerm node1 = (PCommaTerm) pop();
729        X2PCommaTerm node = new X2PCommaTerm(node1);
730        return node;
731    }
732 
733    Node new46()
734    {
735        AEmptyTermList node = new AEmptyTermList();
736        return node;
737    }
738 
739    Node new47()
740    {
741        PTerm node2 = (PTerm) pop();
742        TComma node1 = (TComma) pop();
743        ACommaTerm node = new ACommaTerm(node1, node2);
744        return node;
745    }
746 
747    private static int[][][] actionTable;
748/*      {
749                        {{-1, REDUCE, 0}, {0, SHIFT, 1}, },
750                        {{-1, ERROR, 1}, {16, SHIFT, 5}, },
751                        {{-1, ERROR, 2}, {17, ACCEPT, -1}, },
752                        {{-1, REDUCE, 3}, },
753                        {{-1, REDUCE, 1}, {0, SHIFT, 1}, },
754                        {{-1, ERROR, 5}, {1, SHIFT, 7}, },
755                        {{-1, REDUCE, 2}, },
756                        {{-1, ERROR, 7}, {16, SHIFT, 8}, },
757                        {{-1, ERROR, 8}, {6, SHIFT, 9}, },
758                        {{-1, ERROR, 9}, {16, SHIFT, 10}, },
759                        {{-1, ERROR, 10}, {10, SHIFT, 14}, {16, SHIFT, 15}, },
760                        {{-1, REDUCE, 7}, },
761                        {{-1, ERROR, 12}, {7, SHIFT, 16}, {16, SHIFT, 17}, },
762                        {{-1, ERROR, 13}, {16, SHIFT, 10}, },
763                        {{-1, REDUCE, 22}, {3, SHIFT, 22}, {16, SHIFT, 23}, },
764                        {{-1, ERROR, 15}, {8, SHIFT, 26}, },
765                        {{-1, REDUCE, 4}, },
766                        {{-1, ERROR, 17}, {16, SHIFT, 27}, },
767                        {{-1, REDUCE, 10}, },
768                        {{-1, ERROR, 19}, {7, SHIFT, 28}, {16, SHIFT, 17}, },
769                        {{-1, REDUCE, 6}, },
770                        {{-1, ERROR, 21}, {7, SHIFT, 30}, {16, SHIFT, 17}, },
771                        {{-1, ERROR, 22}, {16, SHIFT, 32}, },
772                        {{-1, ERROR, 23}, {16, SHIFT, 33}, },
773                        {{-1, ERROR, 24}, {11, SHIFT, 34}, },
774                        {{-1, REDUCE, 18}, {9, SHIFT, 35}, },
775                        {{-1, REDUCE, 12}, },
776                        {{-1, ERROR, 27}, {10, SHIFT, 38}, },
777                        {{-1, REDUCE, 8}, },
778                        {{-1, REDUCE, 9}, },
779                        {{-1, REDUCE, 5}, },
780                        {{-1, ERROR, 31}, {7, SHIFT, 39}, {16, SHIFT, 17}, },
781                        {{-1, REDUCE, 24}, },
782                        {{-1, REDUCE, 23}, },
783                        {{-1, ERROR, 34}, {6, SHIFT, 40}, },
784                        {{-1, ERROR, 35}, {3, SHIFT, 22}, {16, SHIFT, 23}, },
785                        {{-1, REDUCE, 21}, },
786                        {{-1, REDUCE, 19}, {9, SHIFT, 35}, },
787                        {{-1, REDUCE, 22}, {3, SHIFT, 22}, {16, SHIFT, 23}, },
788                        {{-1, REDUCE, 11}, },
789                        {{-1, ERROR, 40}, {2, SHIFT, 44}, },
790                        {{-1, REDUCE, 25}, },
791                        {{-1, REDUCE, 20}, },
792                        {{-1, ERROR, 43}, {11, SHIFT, 45}, },
793                        {{-1, ERROR, 44}, {10, SHIFT, 46}, },
794                        {{-1, ERROR, 45}, {6, SHIFT, 47}, },
795                        {{-1, REDUCE, 30}, {16, SHIFT, 48}, },
796                        {{-1, ERROR, 47}, {5, SHIFT, 51}, },
797                        {{-1, REDUCE, 31}, },
798                        {{-1, ERROR, 49}, {11, SHIFT, 52}, },
799                        {{-1, REDUCE, 26}, {9, SHIFT, 53}, },
800                        {{-1, ERROR, 51}, {3, SHIFT, 56}, {4, SHIFT, 57}, {10, SHIFT, 58}, {12, SHIFT, 59}, {16, SHIFT, 60}, },
801                        {{-1, ERROR, 52}, {8, SHIFT, 63}, },
802                        {{-1, ERROR, 53}, {16, SHIFT, 48}, },
803                        {{-1, REDUCE, 29}, },
804                        {{-1, REDUCE, 27}, {9, SHIFT, 53}, },
805                        {{-1, REDUCE, 39}, },
806                        {{-1, ERROR, 57}, {16, SHIFT, 66}, },
807                        {{-1, ERROR, 58}, {3, SHIFT, 56}, {4, SHIFT, 57}, {10, SHIFT, 58}, {12, SHIFT, 59}, {16, SHIFT, 60}, },
808                        {{-1, ERROR, 59}, {16, SHIFT, 68}, },
809                        {{-1, REDUCE, 38}, },
810                        {{-1, ERROR, 61}, {8, SHIFT, 69}, },
811                        {{-1, REDUCE, 34}, {14, SHIFT, 70}, },
812                        {{-1, ERROR, 63}, {3, SHIFT, 71}, {7, SHIFT, 72}, },
813                        {{-1, REDUCE, 32}, },
814                        {{-1, REDUCE, 28}, },
815                        {{-1, ERROR, 66}, {10, SHIFT, 75}, },
816                        {{-1, ERROR, 67}, {11, SHIFT, 76}, },
817                        {{-1, ERROR, 68}, {13, SHIFT, 77}, },
818                        {{-1, ERROR, 69}, {7, SHIFT, 78}, },
819                        {{-1, ERROR, 70}, {16, SHIFT, 79}, },
820                        {{-1, ERROR, 71}, {14, SHIFT, 80}, },
821                        {{-1, REDUCE, 13}, },
822                        {{-1, REDUCE, 16}, },
823                        {{-1, ERROR, 74}, {3, SHIFT, 71}, {7, SHIFT, 81}, },
824                        {{-1, REDUCE, 46}, {3, SHIFT, 56}, {4, SHIFT, 57}, {10, SHIFT, 58}, {12, SHIFT, 59}, {16, SHIFT, 60}, },
825                        {{-1, REDUCE, 41}, },
826                        {{-1, ERROR, 77}, {3, SHIFT, 56}, {4, SHIFT, 57}, {10, SHIFT, 58}, {16, SHIFT, 60}, },
827                        {{-1, REDUCE, 17}, },
828                        {{-1, REDUCE, 35}, {10, SHIFT, 86}, },
829                        {{-1, ERROR, 80}, {16, SHIFT, 87}, },
830                        {{-1, REDUCE, 14}, },
831                        {{-1, REDUCE, 15}, },
832                        {{-1, REDUCE, 42}, {9, SHIFT, 88}, },
833                        {{-1, ERROR, 84}, {11, SHIFT, 91}, },
834                        {{-1, REDUCE, 37}, },
835                        {{-1, REDUCE, 46}, {3, SHIFT, 56}, {4, SHIFT, 57}, {10, SHIFT, 58}, {12, SHIFT, 59}, {16, SHIFT, 60}, },
836                        {{-1, ERROR, 87}, {15, SHIFT, 93}, },
837                        {{-1, ERROR, 88}, {3, SHIFT, 56}, {4, SHIFT, 57}, {10, SHIFT, 58}, {12, SHIFT, 59}, {16, SHIFT, 60}, },
838                        {{-1, REDUCE, 45}, },
839                        {{-1, REDUCE, 43}, {9, SHIFT, 88}, },
840                        {{-1, REDUCE, 40}, },
841                        {{-1, ERROR, 92}, {11, SHIFT, 96}, },
842                        {{-1, ERROR, 93}, {16, SHIFT, 97}, },
843                        {{-1, REDUCE, 47}, },
844                        {{-1, REDUCE, 44}, },
845                        {{-1, REDUCE, 36}, },
846                        {{-1, ERROR, 97}, {8, SHIFT, 98}, },
847                        {{-1, REDUCE, 33}, },
848        };*/
849    private static int[][][] gotoTable;
850/*      {
851                        {{-1, 2}, },
852                        {{-1, 3}, {4, 6}, },
853                        {{-1, 11}, {13, 20}, },
854                        {{-1, 12}, {13, 21}, },
855                        {{-1, 18}, {19, 29}, {31, 29}, },
856                        {{-1, 24}, {38, 43}, },
857                        {{-1, 25}, {35, 41}, },
858                        {{-1, 36}, {37, 42}, },
859                        {{-1, 49}, },
860                        {{-1, 50}, {53, 64}, },
861                        {{-1, 54}, {55, 65}, },
862                        {{-1, 73}, {74, 82}, },
863                        {{-1, 83}, {51, 61}, {58, 67}, {88, 94}, },
864                        {{-1, 62}, {77, 85}, },
865                        {{-1, 84}, {86, 92}, },
866                        {{-1, 89}, {90, 95}, },
867                        {{-1, 4}, },
868                        {{-1, 13}, },
869                        {{-1, 19}, {21, 31}, },
870                        {{-1, 74}, },
871                        {{-1, 37}, },
872                        {{-1, 55}, },
873                        {{-1, 90}, },
874        };*/
875    private static String[] errorMessages;
876/*      {
877                        "expecting: 'class', EOF",
878                        "expecting: identifier",
879                        "expecting: EOF",
880                        "expecting: 'extends'",
881                        "expecting: '{'",
882                        "expecting: '(', identifier",
883                        "expecting: '}', identifier",
884                        "expecting: 'this', ')', identifier",
885                        "expecting: ';'",
886                        "expecting: ')'",
887                        "expecting: ',', ')'",
888                        "expecting: '('",
889                        "expecting: 'this', identifier",
890                        "expecting: 'super'",
891                        "expecting: ')', identifier",
892                        "expecting: 'return'",
893                        "expecting: 'this', 'new', '(', '[', identifier",
894                        "expecting: ';', ',', ')', '.'",
895                        "expecting: 'this', '}'",
896                        "expecting: ']'",
897                        "expecting: '}'",
898                        "expecting: '.'",
899                        "expecting: 'this', 'new', '(', ')', '[', identifier",
900                        "expecting: 'this', 'new', '(', identifier",
901                        "expecting: ';', ',', '(', ')'",
902                        "expecting: ';', ',', ')'",
903                        "expecting: '='",
904        };*/
905    private static int[] errors;
906/*      {
907                        0, 1, 2, 0, 0, 3, 0, 1, 4, 1, 5, 1, 6, 1, 7, 8, 0, 1, 6, 6, 1, 6, 1, 1, 9, 10, 1, 11, 0, 6, 0, 6, 10, 10, 4, 12, 10, 10, 7, 0, 13, 10, 10, 9, 11, 4, 14, 15, 10, 9, 10, 16, 8, 1, 10, 10, 17, 1, 16, 1, 17, 8, 17, 18, 10, 10, 11, 9, 19, 20, 1, 21, 6, 18, 18, 22, 17, 23, 6, 24, 1, 6, 18, 10, 9, 25, 22, 26, 16, 10, 10, 17, 9, 1, 10, 10, 25, 8, 18, 
908        };*/
909}

[all classes][uk.co.zonetora.fj.ast.parser]
EMMA 2.0.5312 (C) Vladimir Roubtsov