// $ANTLR 2.7.4: "Tests.g" -> "TestsTreeParser.java"$ package cz.muni.fi.bronchus.antlrparsers; import antlr.TreeParser; import antlr.Token; import antlr.collections.AST; import antlr.RecognitionException; import antlr.ANTLRException; import antlr.NoViableAltException; import antlr.MismatchedTokenException; import antlr.SemanticException; import antlr.collections.impl.BitSet; import antlr.ASTPair; import antlr.collections.impl.ASTArray; public class TestsTreeParser extends antlr.TreeParser implements TestsParserTokenTypes { java.util.Stack zasobnik = new java.util.Stack(); public TestsTreeParser() { tokenNames = _tokenNames; } public final String expr(AST _t) throws RecognitionException { String o; AST expr_AST_in = (_t == ASTNULL) ? null : (AST)_t; AST i1 = null; AST i2 = null; AST i3 = null; AST i4 = null; AST i5 = null; AST i6 = null; AST i7 = null; AST i8 = null; AST i9 = null; AST i10 = null; String a,b; o=""; if (zasobnik.empty()) zasobnik.push("expr"); if (_t==null) _t=ASTNULL; switch ( _t.getType()) { case EQUAL: { AST __t69 = _t; AST tmp25_AST_in = (AST)_t; match(_t,EQUAL); _t = _t.getFirstChild(); a=expr(_t); _t = _retTree; b=expr(_t); _t = _retTree; _t = __t69; _t = _t.getNextSibling(); o = ""+b+"\n"; break; } case NOTEQUAL: { AST __t70 = _t; AST tmp26_AST_in = (AST)_t; match(_t,NOTEQUAL); _t = _t.getFirstChild(); a=expr(_t); _t = _retTree; b=expr(_t); _t = _retTree; _t = __t70; _t = _t.getNextSibling(); o = ""+b+"\n"; break; } case AND: { AST __t71 = _t; AST tmp27_AST_in = (AST)_t; match(_t,AND); _t = _t.getFirstChild(); if (((String)zasobnik.lastElement()).compareTo("and")!=0) { o = "\n"; zasobnik.push("and"); } a=expr(_t); _t = _retTree; if (((String)zasobnik.lastElement()).compareTo("or")==0) { zasobnik.pop(); a=a+"\n"; } else if (((String)zasobnik.lastElement()).compareTo("not")==0) { zasobnik.pop(); a=a+"\n"; } b=expr(_t); _t = _retTree; if (((String)zasobnik.lastElement()).compareTo("or")==0) { zasobnik.pop(); b=b+"\n"; } else if (((String)zasobnik.lastElement()).compareTo("not")==0) { zasobnik.pop(); b=b+"\n"; } _t = __t71; _t = _t.getNextSibling(); o = o+a+b; break; } case OR: { AST __t72 = _t; AST tmp28_AST_in = (AST)_t; match(_t,OR); _t = _t.getFirstChild(); if (((String)zasobnik.lastElement()).compareTo("or")!=0) { o = "\n"; zasobnik.push("or"); } a=expr(_t); _t = _retTree; if (((String)zasobnik.lastElement()).compareTo("and")==0) { zasobnik.pop(); a=a+"\n"; } else if (((String)zasobnik.lastElement()).compareTo("not")==0) { zasobnik.pop(); a=a+"\n"; } b=expr(_t); _t = _retTree; if (((String)zasobnik.lastElement()).compareTo("and")==0) { zasobnik.pop(); b=b+"\n"; } else if (((String)zasobnik.lastElement()).compareTo("not")==0) { zasobnik.pop(); b=b+"\n"; } _t = __t72; _t = _t.getNextSibling(); o = o+a+b; break; } case NOT: { AST __t73 = _t; AST tmp29_AST_in = (AST)_t; match(_t,NOT); _t = _t.getFirstChild(); o="\n"; zasobnik.push("not"); a=expr(_t); _t = _retTree; if (((String)zasobnik.lastElement()).compareTo("and")==0) { zasobnik.pop(); a=a+"\n"; } if (((String)zasobnik.lastElement()).compareTo("or")==0) { zasobnik.pop(); a=a+"\n"; } _t = __t73; _t = _t.getNextSibling(); o = o+a; break; } case LT: { AST __t74 = _t; AST tmp30_AST_in = (AST)_t; match(_t,LT); _t = _t.getFirstChild(); a=expr(_t); _t = _retTree; b=expr(_t); _t = _retTree; _t = __t74; _t = _t.getNextSibling(); o = ""+b+"\n"; break; } case GT: { AST __t75 = _t; AST tmp31_AST_in = (AST)_t; match(_t,GT); _t = _t.getFirstChild(); a=expr(_t); _t = _retTree; b=expr(_t); _t = _retTree; _t = __t75; _t = _t.getNextSibling(); o = ""+b+"\n"; break; } case LE: { AST __t76 = _t; AST tmp32_AST_in = (AST)_t; match(_t,LE); _t = _t.getFirstChild(); a=expr(_t); _t = _retTree; b=expr(_t); _t = _retTree; _t = __t76; _t = _t.getNextSibling(); o = ""+b+"\n"; break; } case GE: { AST __t77 = _t; AST tmp33_AST_in = (AST)_t; match(_t,GE); _t = _t.getFirstChild(); a=expr(_t); _t = _retTree; b=expr(_t); _t = _retTree; _t = __t77; _t = _t.getNextSibling(); o = ""+b+"\n"; break; } case LETTER: { i1 = (AST)_t; match(_t,LETTER); _t = _t.getNextSibling(); o = i1.getText(); break; } case TRUE_LIT: { i2 = (AST)_t; match(_t,TRUE_LIT); _t = _t.getNextSibling(); o = i2.getText(); break; } case FALSE_LIT: { i3 = (AST)_t; match(_t,FALSE_LIT); _t = _t.getNextSibling(); o = i3.getText(); break; } case INT_CONST: { i4 = (AST)_t; match(_t,INT_CONST); _t = _t.getNextSibling(); o = i4.getText(); break; } case FLT_CONST: { i5 = (AST)_t; match(_t,FLT_CONST); _t = _t.getNextSibling(); o = i5.getText(); break; } case BINARY_INTEGER: { i6 = (AST)_t; match(_t,BINARY_INTEGER); _t = _t.getNextSibling(); o = i6.getText(); break; } case OCTAL_INTEGER: { i7 = (AST)_t; match(_t,OCTAL_INTEGER); _t = _t.getNextSibling(); o = i7.getText(); break; } case HEXADECIMAL_INTEGER: { i8 = (AST)_t; match(_t,HEXADECIMAL_INTEGER); _t = _t.getNextSibling(); o = i8.getText(); break; } case STR_CONST: { i9 = (AST)_t; match(_t,STR_CONST); _t = _t.getNextSibling(); o = i9.getText(); break; } case PORADI_INT_CONST: { i10 = (AST)_t; match(_t,PORADI_INT_CONST); _t = _t.getNextSibling(); o = i10.getText(); break; } case SEMI: { AST __t78 = _t; AST tmp34_AST_in = (AST)_t; match(_t,SEMI); _t = _t.getFirstChild(); a=expr(_t); _t = _retTree; _t = __t78; _t = _t.getNextSibling(); o=a; while (zasobnik.empty()==false) { String s=(String)zasobnik.pop(); if (s.compareTo("and")==0) { o=o+"\n"; } if (s.compareTo("or")==0) { o=o+"\n"; } if (s.compareTo("not")==0) { o=o+"\n"; } } break; } default: { throw new NoViableAltException(_t); } } _retTree = _t; return o; } public static final String[] _tokenNames = { "<0>", "EOF", "<2>", "NULL_TREE_LOOKAHEAD", "SEMI", "OR", "AND", "LETTER", "EQUAL", "NOTEQUAL", "LT", "GT", "LE", "GE", "NOT", "LPAREN", "RPAREN", "PLUS", "MINUS", "ORDER_INT_CONST", "INT_CONST", "FLT_CONST", "BINARY_INTEGER", "OCTAL_INTEGER", "HEXADECIMAL_INTEGER", "TRUE_LIT", "FALSE_LIT", "STR_CONST", "EXPONENT", "WS", "PORADI_INT_CONST" }; }