diff options
Diffstat (limited to 'languages/pascal/PascalStoreWalker.cpp')
-rw-r--r-- | languages/pascal/PascalStoreWalker.cpp | 3409 |
1 files changed, 3409 insertions, 0 deletions
diff --git a/languages/pascal/PascalStoreWalker.cpp b/languages/pascal/PascalStoreWalker.cpp new file mode 100644 index 00000000..96c69fe4 --- /dev/null +++ b/languages/pascal/PascalStoreWalker.cpp @@ -0,0 +1,3409 @@ +/* $ANTLR 2.7.7 (20061129): "pascal.tree.g" -> "PascalStoreWalker.cpp"$ */ +#include "PascalStoreWalker.hpp" +#include <antlr/Token.hpp> +#include <antlr/AST.hpp> +#include <antlr/NoViableAltException.hpp> +#include <antlr/MismatchedTokenException.hpp> +#include <antlr/SemanticException.hpp> +#include <antlr/BitSet.hpp> +#line 1 "pascal.tree.g" +#line 11 "PascalStoreWalker.cpp" +PascalStoreWalker::PascalStoreWalker() + : ANTLR_USE_NAMESPACE(antlr)TreeParser() { +} + +void PascalStoreWalker::program(RefPascalAST _t) { + RefPascalAST program_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + programHeading(_t); + _t = _retTree; + block(_t); + _t = _retTree; + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::programHeading(RefPascalAST _t) { + RefPascalAST programHeading_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + switch ( _t->getType()) { + case PROGRAM: + { + RefPascalAST __t3 = _t; + RefPascalAST tmp1_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),PROGRAM); + _t = _t->getFirstChild(); + RefPascalAST tmp2_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),IDENT); + _t = _t->getNextSibling(); + identifierList(_t); + _t = _retTree; + _t = __t3; + _t = _t->getNextSibling(); + break; + } + case UNIT: + { + RefPascalAST __t4 = _t; + RefPascalAST tmp3_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),UNIT); + _t = _t->getFirstChild(); + RefPascalAST tmp4_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),IDENT); + _t = _t->getNextSibling(); + _t = __t4; + _t = _t->getNextSibling(); + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t)); + } + } + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::block(RefPascalAST _t) { + RefPascalAST block_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + { // ( ... )* + for (;;) { + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + switch ( _t->getType()) { + case LABEL: + { + labelDeclarationPart(_t); + _t = _retTree; + break; + } + case CONST: + { + constantDefinitionPart(_t); + _t = _retTree; + break; + } + case TYPE: + { + typeDefinitionPart(_t); + _t = _retTree; + break; + } + case VAR: + { + variableDeclarationPart(_t); + _t = _retTree; + break; + } + case PROCEDURE: + case FUNCTION: + { + procedureAndFunctionDeclarationPart(_t); + _t = _retTree; + break; + } + case USES: + { + usesUnitsPart(_t); + _t = _retTree; + break; + } + case IMPLEMENTATION: + { + RefPascalAST tmp5_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),IMPLEMENTATION); + _t = _t->getNextSibling(); + break; + } + default: + { + goto _loop8; + } + } + } + _loop8:; + } // ( ... )* + compoundStatement(_t); + _t = _retTree; + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::identifierList(RefPascalAST _t) { + RefPascalAST identifierList_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + RefPascalAST __t104 = _t; + RefPascalAST tmp6_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),IDLIST); + _t = _t->getFirstChild(); + { // ( ... )+ + int _cnt106=0; + for (;;) { + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + if ((_t->getType() == IDENT)) { + RefPascalAST tmp7_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),IDENT); + _t = _t->getNextSibling(); + } + else { + if ( _cnt106>=1 ) { goto _loop106; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t));} + } + + _cnt106++; + } + _loop106:; + } // ( ... )+ + _t = __t104; + _t = _t->getNextSibling(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::identifier(RefPascalAST _t) { + RefPascalAST identifier_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + RefPascalAST tmp8_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),IDENT); + _t = _t->getNextSibling(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::labelDeclarationPart(RefPascalAST _t) { + RefPascalAST labelDeclarationPart_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + RefPascalAST __t12 = _t; + RefPascalAST tmp9_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),LABEL); + _t = _t->getFirstChild(); + { // ( ... )+ + int _cnt14=0; + for (;;) { + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + if ((_t->getType() == NUM_INT)) { + label(_t); + _t = _retTree; + } + else { + if ( _cnt14>=1 ) { goto _loop14; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t));} + } + + _cnt14++; + } + _loop14:; + } // ( ... )+ + _t = __t12; + _t = _t->getNextSibling(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::constantDefinitionPart(RefPascalAST _t) { + RefPascalAST constantDefinitionPart_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + RefPascalAST __t17 = _t; + RefPascalAST tmp10_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),CONST); + _t = _t->getFirstChild(); + { // ( ... )+ + int _cnt19=0; + for (;;) { + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + if ((_t->getType() == EQUAL)) { + constantDefinition(_t); + _t = _retTree; + } + else { + if ( _cnt19>=1 ) { goto _loop19; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t));} + } + + _cnt19++; + } + _loop19:; + } // ( ... )+ + _t = __t17; + _t = _t->getNextSibling(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::typeDefinitionPart(RefPascalAST _t) { + RefPascalAST typeDefinitionPart_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + RefPascalAST __t31 = _t; + RefPascalAST tmp11_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),TYPE); + _t = _t->getFirstChild(); + { // ( ... )+ + int _cnt33=0; + for (;;) { + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + if ((_t->getType() == TYPEDECL)) { + typeDefinition(_t); + _t = _retTree; + } + else { + if ( _cnt33>=1 ) { goto _loop33; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t));} + } + + _cnt33++; + } + _loop33:; + } // ( ... )+ + _t = __t31; + _t = _t->getNextSibling(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +/** Yields a list of VARDECL-rooted subtrees with VAR at the overall root */ +void PascalStoreWalker::variableDeclarationPart(RefPascalAST _t) { + RefPascalAST variableDeclarationPart_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + RefPascalAST __t83 = _t; + RefPascalAST tmp12_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),VAR); + _t = _t->getFirstChild(); + { // ( ... )+ + int _cnt85=0; + for (;;) { + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + if ((_t->getType() == VARDECL)) { + variableDeclaration(_t); + _t = _retTree; + } + else { + if ( _cnt85>=1 ) { goto _loop85; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t));} + } + + _cnt85++; + } + _loop85:; + } // ( ... )+ + _t = __t83; + _t = _t->getNextSibling(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::procedureAndFunctionDeclarationPart(RefPascalAST _t) { + RefPascalAST procedureAndFunctionDeclarationPart_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + procedureOrFunctionDeclaration(_t); + _t = _retTree; + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::usesUnitsPart(RefPascalAST _t) { + RefPascalAST usesUnitsPart_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + RefPascalAST __t10 = _t; + RefPascalAST tmp13_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),USES); + _t = _t->getFirstChild(); + identifierList(_t); + _t = _retTree; + _t = __t10; + _t = _t->getNextSibling(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::compoundStatement(RefPascalAST _t) { + RefPascalAST compoundStatement_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + statements(_t); + _t = _retTree; + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::label(RefPascalAST _t) { + RefPascalAST label_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + RefPascalAST tmp14_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),NUM_INT); + _t = _t->getNextSibling(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::constantDefinition(RefPascalAST _t) { + RefPascalAST constantDefinition_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + RefPascalAST __t21 = _t; + RefPascalAST tmp15_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),EQUAL); + _t = _t->getFirstChild(); + RefPascalAST tmp16_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),IDENT); + _t = _t->getNextSibling(); + constant(_t); + _t = _retTree; + _t = __t21; + _t = _t->getNextSibling(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::constant(RefPascalAST _t) { + RefPascalAST constant_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + switch ( _t->getType()) { + case NUM_INT: + { + RefPascalAST tmp17_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),NUM_INT); + _t = _t->getNextSibling(); + break; + } + case NUM_REAL: + { + RefPascalAST tmp18_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),NUM_REAL); + _t = _t->getNextSibling(); + break; + } + case PLUS: + { + RefPascalAST __t23 = _t; + RefPascalAST tmp19_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),PLUS); + _t = _t->getFirstChild(); + { + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + switch ( _t->getType()) { + case NUM_INT: + { + RefPascalAST tmp20_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),NUM_INT); + _t = _t->getNextSibling(); + break; + } + case NUM_REAL: + { + RefPascalAST tmp21_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),NUM_REAL); + _t = _t->getNextSibling(); + break; + } + case IDENT: + { + RefPascalAST tmp22_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),IDENT); + _t = _t->getNextSibling(); + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t)); + } + } + } + _t = __t23; + _t = _t->getNextSibling(); + break; + } + case MINUS: + { + RefPascalAST __t25 = _t; + RefPascalAST tmp23_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),MINUS); + _t = _t->getFirstChild(); + { + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + switch ( _t->getType()) { + case NUM_INT: + { + RefPascalAST tmp24_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),NUM_INT); + _t = _t->getNextSibling(); + break; + } + case NUM_REAL: + { + RefPascalAST tmp25_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),NUM_REAL); + _t = _t->getNextSibling(); + break; + } + case IDENT: + { + RefPascalAST tmp26_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),IDENT); + _t = _t->getNextSibling(); + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t)); + } + } + } + _t = __t25; + _t = _t->getNextSibling(); + break; + } + case IDENT: + { + RefPascalAST tmp27_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),IDENT); + _t = _t->getNextSibling(); + break; + } + case STRING_LITERAL: + { + RefPascalAST tmp28_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),STRING_LITERAL); + _t = _t->getNextSibling(); + break; + } + case CHR: + { + RefPascalAST __t27 = _t; + RefPascalAST tmp29_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),CHR); + _t = _t->getFirstChild(); + { + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + switch ( _t->getType()) { + case NUM_INT: + { + RefPascalAST tmp30_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),NUM_INT); + _t = _t->getNextSibling(); + break; + } + case NUM_REAL: + { + RefPascalAST tmp31_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),NUM_REAL); + _t = _t->getNextSibling(); + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t)); + } + } + } + _t = __t27; + _t = _t->getNextSibling(); + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t)); + } + } + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::string(RefPascalAST _t) { + RefPascalAST string_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + RefPascalAST tmp32_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),STRING_LITERAL); + _t = _t->getNextSibling(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::typeDefinition(RefPascalAST _t) { + RefPascalAST typeDefinition_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + RefPascalAST __t35 = _t; + RefPascalAST tmp33_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),TYPEDECL); + _t = _t->getFirstChild(); + RefPascalAST tmp34_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),IDENT); + _t = _t->getNextSibling(); + { + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + switch ( _t->getType()) { + case SCALARTYPE: + case ARRAY: + case INTEGER: + case BOOLEAN: + case CHAR: + case DOTDOT: + case REAL: + case STRING: + case PACKED: + case RECORD: + case SET: + case FILE: + case POINTER: + case IDENT: + { + type(_t); + _t = _retTree; + break; + } + case FUNCTION: + { + RefPascalAST __t37 = _t; + RefPascalAST tmp35_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),FUNCTION); + _t = _t->getFirstChild(); + { + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + switch ( _t->getType()) { + case ARGDECLS: + { + formalParameterList(_t); + _t = _retTree; + break; + } + case INTEGER: + case BOOLEAN: + case CHAR: + case REAL: + case STRING: + case IDENT: + { + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t)); + } + } + } + resultType(_t); + _t = _retTree; + _t = __t37; + _t = _t->getNextSibling(); + break; + } + case PROCEDURE: + { + RefPascalAST __t39 = _t; + RefPascalAST tmp36_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),PROCEDURE); + _t = _t->getFirstChild(); + { + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + switch ( _t->getType()) { + case ARGDECLS: + { + formalParameterList(_t); + _t = _retTree; + break; + } + case 3: + { + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t)); + } + } + } + _t = __t39; + _t = _t->getNextSibling(); + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t)); + } + } + } + _t = __t35; + _t = _t->getNextSibling(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::type(RefPascalAST _t) { + RefPascalAST type_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + switch ( _t->getType()) { + case SCALARTYPE: + { + RefPascalAST __t42 = _t; + RefPascalAST tmp37_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),SCALARTYPE); + _t = _t->getFirstChild(); + identifierList(_t); + _t = _retTree; + _t = __t42; + _t = _t->getNextSibling(); + break; + } + case DOTDOT: + { + RefPascalAST __t43 = _t; + RefPascalAST tmp38_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),DOTDOT); + _t = _t->getFirstChild(); + constant(_t); + _t = _retTree; + constant(_t); + _t = _retTree; + _t = __t43; + _t = _t->getNextSibling(); + break; + } + case INTEGER: + case BOOLEAN: + case CHAR: + case REAL: + case STRING: + case IDENT: + { + typeIdentifier(_t); + _t = _retTree; + break; + } + case ARRAY: + case PACKED: + case RECORD: + case SET: + case FILE: + { + structuredType(_t); + _t = _retTree; + break; + } + case POINTER: + { + RefPascalAST __t44 = _t; + RefPascalAST tmp39_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),POINTER); + _t = _t->getFirstChild(); + typeIdentifier(_t); + _t = _retTree; + _t = __t44; + _t = _t->getNextSibling(); + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t)); + } + } + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::formalParameterList(RefPascalAST _t) { + RefPascalAST formalParameterList_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + RefPascalAST __t94 = _t; + RefPascalAST tmp40_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),ARGDECLS); + _t = _t->getFirstChild(); + { // ( ... )+ + int _cnt96=0; + for (;;) { + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + if ((_tokenSet_0.member(_t->getType()))) { + formalParameterSection(_t); + _t = _retTree; + } + else { + if ( _cnt96>=1 ) { goto _loop96; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t));} + } + + _cnt96++; + } + _loop96:; + } // ( ... )+ + _t = __t94; + _t = _t->getNextSibling(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::resultType(RefPascalAST _t) { + RefPascalAST resultType_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + typeIdentifier(_t); + _t = _retTree; + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::typeIdentifier(RefPascalAST _t) { + RefPascalAST typeIdentifier_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + switch ( _t->getType()) { + case IDENT: + { + RefPascalAST tmp41_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),IDENT); + _t = _t->getNextSibling(); + break; + } + case CHAR: + { + RefPascalAST tmp42_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),CHAR); + _t = _t->getNextSibling(); + break; + } + case BOOLEAN: + { + RefPascalAST tmp43_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),BOOLEAN); + _t = _t->getNextSibling(); + break; + } + case INTEGER: + { + RefPascalAST tmp44_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),INTEGER); + _t = _t->getNextSibling(); + break; + } + case REAL: + { + RefPascalAST tmp45_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),REAL); + _t = _t->getNextSibling(); + break; + } + case STRING: + { + RefPascalAST __t46 = _t; + RefPascalAST tmp46_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),STRING); + _t = _t->getFirstChild(); + { + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + switch ( _t->getType()) { + case IDENT: + { + RefPascalAST tmp47_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),IDENT); + _t = _t->getNextSibling(); + break; + } + case NUM_INT: + { + RefPascalAST tmp48_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),NUM_INT); + _t = _t->getNextSibling(); + break; + } + case NUM_REAL: + { + RefPascalAST tmp49_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),NUM_REAL); + _t = _t->getNextSibling(); + break; + } + case 3: + { + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t)); + } + } + } + _t = __t46; + _t = _t->getNextSibling(); + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t)); + } + } + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::structuredType(RefPascalAST _t) { + RefPascalAST structuredType_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + switch ( _t->getType()) { + case PACKED: + { + RefPascalAST __t49 = _t; + RefPascalAST tmp50_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),PACKED); + _t = _t->getFirstChild(); + unpackedStructuredType(_t); + _t = _retTree; + _t = __t49; + _t = _t->getNextSibling(); + break; + } + case ARRAY: + case RECORD: + case SET: + case FILE: + { + unpackedStructuredType(_t); + _t = _retTree; + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t)); + } + } + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::unpackedStructuredType(RefPascalAST _t) { + RefPascalAST unpackedStructuredType_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + switch ( _t->getType()) { + case ARRAY: + { + arrayType(_t); + _t = _retTree; + break; + } + case RECORD: + { + recordType(_t); + _t = _retTree; + break; + } + case SET: + { + setType(_t); + _t = _retTree; + break; + } + case FILE: + { + fileType(_t); + _t = _retTree; + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t)); + } + } + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +/** Note here that the syntactic diff between brackets disappears. + * If the brackets mean different things semantically, we need + * two different alternatives here. + */ +void PascalStoreWalker::arrayType(RefPascalAST _t) { + RefPascalAST arrayType_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + RefPascalAST __t52 = _t; + RefPascalAST tmp51_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),ARRAY); + _t = _t->getFirstChild(); + typeList(_t); + _t = _retTree; + type(_t); + _t = _retTree; + _t = __t52; + _t = _t->getNextSibling(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::recordType(RefPascalAST _t) { + RefPascalAST recordType_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + RefPascalAST __t58 = _t; + RefPascalAST tmp52_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),RECORD); + _t = _t->getFirstChild(); + fieldList(_t); + _t = _retTree; + _t = __t58; + _t = _t->getNextSibling(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::setType(RefPascalAST _t) { + RefPascalAST setType_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + RefPascalAST __t78 = _t; + RefPascalAST tmp53_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),SET); + _t = _t->getFirstChild(); + type(_t); + _t = _retTree; + _t = __t78; + _t = _t->getNextSibling(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::fileType(RefPascalAST _t) { + RefPascalAST fileType_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + RefPascalAST __t80 = _t; + RefPascalAST tmp54_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),FILE); + _t = _t->getFirstChild(); + { + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + switch ( _t->getType()) { + case SCALARTYPE: + case ARRAY: + case INTEGER: + case BOOLEAN: + case CHAR: + case DOTDOT: + case REAL: + case STRING: + case PACKED: + case RECORD: + case SET: + case FILE: + case POINTER: + case IDENT: + { + type(_t); + _t = _retTree; + break; + } + case 3: + { + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t)); + } + } + } + _t = __t80; + _t = _t->getNextSibling(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::typeList(RefPascalAST _t) { + RefPascalAST typeList_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + RefPascalAST __t54 = _t; + RefPascalAST tmp55_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),TYPELIST); + _t = _t->getFirstChild(); + { // ( ... )+ + int _cnt56=0; + for (;;) { + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + if ((_tokenSet_1.member(_t->getType()))) { + type(_t); + _t = _retTree; + } + else { + if ( _cnt56>=1 ) { goto _loop56; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t));} + } + + _cnt56++; + } + _loop56:; + } // ( ... )+ + _t = __t54; + _t = _t->getNextSibling(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::fieldList(RefPascalAST _t) { + RefPascalAST fieldList_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + RefPascalAST __t60 = _t; + RefPascalAST tmp56_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),FIELDLIST); + _t = _t->getFirstChild(); + { + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + switch ( _t->getType()) { + case FIELD: + { + fixedPart(_t); + _t = _retTree; + { + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + switch ( _t->getType()) { + case CASE: + { + variantPart(_t); + _t = _retTree; + break; + } + case 3: + { + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t)); + } + } + } + break; + } + case CASE: + { + variantPart(_t); + _t = _retTree; + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t)); + } + } + } + _t = __t60; + _t = _t->getNextSibling(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::fixedPart(RefPascalAST _t) { + RefPascalAST fixedPart_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + { // ( ... )+ + int _cnt65=0; + for (;;) { + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + if ((_t->getType() == FIELD)) { + recordSection(_t); + _t = _retTree; + } + else { + if ( _cnt65>=1 ) { goto _loop65; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t));} + } + + _cnt65++; + } + _loop65:; + } // ( ... )+ + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::variantPart(RefPascalAST _t) { + RefPascalAST variantPart_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + RefPascalAST __t69 = _t; + RefPascalAST tmp57_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),CASE); + _t = _t->getFirstChild(); + tag(_t); + _t = _retTree; + { // ( ... )+ + int _cnt71=0; + for (;;) { + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + if ((_t->getType() == VARIANT_CASE)) { + variant(_t); + _t = _retTree; + } + else { + if ( _cnt71>=1 ) { goto _loop71; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t));} + } + + _cnt71++; + } + _loop71:; + } // ( ... )+ + _t = __t69; + _t = _t->getNextSibling(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::recordSection(RefPascalAST _t) { + RefPascalAST recordSection_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + RefPascalAST __t67 = _t; + RefPascalAST tmp58_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),FIELD); + _t = _t->getFirstChild(); + identifierList(_t); + _t = _retTree; + type(_t); + _t = _retTree; + _t = __t67; + _t = _t->getNextSibling(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::tag(RefPascalAST _t) { + RefPascalAST tag_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + switch ( _t->getType()) { + case VARIANT_TAG: + { + RefPascalAST __t73 = _t; + RefPascalAST tmp59_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),VARIANT_TAG); + _t = _t->getFirstChild(); + identifier(_t); + _t = _retTree; + typeIdentifier(_t); + _t = _retTree; + _t = __t73; + _t = _t->getNextSibling(); + break; + } + case VARIANT_TAG_NO_ID: + { + RefPascalAST __t74 = _t; + RefPascalAST tmp60_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),VARIANT_TAG_NO_ID); + _t = _t->getFirstChild(); + typeIdentifier(_t); + _t = _retTree; + _t = __t74; + _t = _t->getNextSibling(); + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t)); + } + } + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::variant(RefPascalAST _t) { + RefPascalAST variant_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + RefPascalAST __t76 = _t; + RefPascalAST tmp61_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),VARIANT_CASE); + _t = _t->getFirstChild(); + constList(_t); + _t = _retTree; + fieldList(_t); + _t = _retTree; + _t = __t76; + _t = _t->getNextSibling(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::constList(RefPascalAST _t) { + RefPascalAST constList_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + RefPascalAST __t108 = _t; + RefPascalAST tmp62_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),CONSTLIST); + _t = _t->getFirstChild(); + { // ( ... )+ + int _cnt110=0; + for (;;) { + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + if ((_tokenSet_2.member(_t->getType()))) { + constant(_t); + _t = _retTree; + } + else { + if ( _cnt110>=1 ) { goto _loop110; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t));} + } + + _cnt110++; + } + _loop110:; + } // ( ... )+ + _t = __t108; + _t = _t->getNextSibling(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::variableDeclaration(RefPascalAST _t) { + RefPascalAST variableDeclaration_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + RefPascalAST __t87 = _t; + RefPascalAST tmp63_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),VARDECL); + _t = _t->getFirstChild(); + identifierList(_t); + _t = _retTree; + type(_t); + _t = _retTree; + _t = __t87; + _t = _t->getNextSibling(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::procedureOrFunctionDeclaration(RefPascalAST _t) { + RefPascalAST procedureOrFunctionDeclaration_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + switch ( _t->getType()) { + case PROCEDURE: + { + procedureDeclaration(_t); + _t = _retTree; + break; + } + case FUNCTION: + { + functionDeclaration(_t); + _t = _retTree; + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t)); + } + } + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::procedureDeclaration(RefPascalAST _t) { + RefPascalAST procedureDeclaration_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + RefPascalAST __t91 = _t; + RefPascalAST tmp64_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),PROCEDURE); + _t = _t->getFirstChild(); + RefPascalAST tmp65_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),IDENT); + _t = _t->getNextSibling(); + { + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + switch ( _t->getType()) { + case ARGDECLS: + { + formalParameterList(_t); + _t = _retTree; + break; + } + case BLOCK: + case USES: + case IMPLEMENTATION: + case LABEL: + case CONST: + case TYPE: + case VAR: + case PROCEDURE: + case FUNCTION: + { + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t)); + } + } + } + block(_t); + _t = _retTree; + _t = __t91; + _t = _t->getNextSibling(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::functionDeclaration(RefPascalAST _t) { + RefPascalAST functionDeclaration_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + RefPascalAST __t112 = _t; + RefPascalAST tmp66_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),FUNCTION); + _t = _t->getFirstChild(); + RefPascalAST tmp67_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),IDENT); + _t = _t->getNextSibling(); + { + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + switch ( _t->getType()) { + case ARGDECLS: + { + formalParameterList(_t); + _t = _retTree; + break; + } + case INTEGER: + case BOOLEAN: + case CHAR: + case REAL: + case STRING: + case IDENT: + { + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t)); + } + } + } + resultType(_t); + _t = _retTree; + block(_t); + _t = _retTree; + _t = __t112; + _t = _t->getNextSibling(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::formalParameterSection(RefPascalAST _t) { + RefPascalAST formalParameterSection_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + switch ( _t->getType()) { + case ARGDECL: + { + parameterGroup(_t); + _t = _retTree; + break; + } + case VAR: + { + RefPascalAST __t98 = _t; + RefPascalAST tmp68_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),VAR); + _t = _t->getFirstChild(); + parameterGroup(_t); + _t = _retTree; + _t = __t98; + _t = _t->getNextSibling(); + break; + } + case FUNCTION: + { + RefPascalAST __t99 = _t; + RefPascalAST tmp69_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),FUNCTION); + _t = _t->getFirstChild(); + parameterGroup(_t); + _t = _retTree; + _t = __t99; + _t = _t->getNextSibling(); + break; + } + case PROCEDURE: + { + RefPascalAST __t100 = _t; + RefPascalAST tmp70_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),PROCEDURE); + _t = _t->getFirstChild(); + parameterGroup(_t); + _t = _retTree; + _t = __t100; + _t = _t->getNextSibling(); + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t)); + } + } + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::parameterGroup(RefPascalAST _t) { + RefPascalAST parameterGroup_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + RefPascalAST __t102 = _t; + RefPascalAST tmp71_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),ARGDECL); + _t = _t->getFirstChild(); + identifierList(_t); + _t = _retTree; + typeIdentifier(_t); + _t = _retTree; + _t = __t102; + _t = _t->getNextSibling(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::statement(RefPascalAST _t) { + RefPascalAST statement_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + switch ( _t->getType()) { + case COLON: + { + RefPascalAST __t116 = _t; + RefPascalAST tmp72_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),COLON); + _t = _t->getFirstChild(); + label(_t); + _t = _retTree; + unlabelledStatement(_t); + _t = _retTree; + _t = __t116; + _t = _t->getNextSibling(); + break; + } + case BLOCK: + case PROC_CALL: + case ASSIGN: + case CASE: + case GOTO: + case IF: + case WHILE: + case REPEAT: + case FOR: + case WITH: + { + unlabelledStatement(_t); + _t = _retTree; + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t)); + } + } + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::unlabelledStatement(RefPascalAST _t) { + RefPascalAST unlabelledStatement_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + switch ( _t->getType()) { + case PROC_CALL: + case ASSIGN: + case GOTO: + { + simpleStatement(_t); + _t = _retTree; + break; + } + case BLOCK: + case CASE: + case IF: + case WHILE: + case REPEAT: + case FOR: + case WITH: + { + structuredStatement(_t); + _t = _retTree; + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t)); + } + } + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::simpleStatement(RefPascalAST _t) { + RefPascalAST simpleStatement_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + switch ( _t->getType()) { + case ASSIGN: + { + assignmentStatement(_t); + _t = _retTree; + break; + } + case PROC_CALL: + { + procedureStatement(_t); + _t = _retTree; + break; + } + case GOTO: + { + gotoStatement(_t); + _t = _retTree; + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t)); + } + } + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::structuredStatement(RefPascalAST _t) { + RefPascalAST structuredStatement_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + switch ( _t->getType()) { + case BLOCK: + { + compoundStatement(_t); + _t = _retTree; + break; + } + case CASE: + case IF: + { + conditionalStatement(_t); + _t = _retTree; + break; + } + case WHILE: + case REPEAT: + case FOR: + { + repetetiveStatement(_t); + _t = _retTree; + break; + } + case WITH: + { + withStatement(_t); + _t = _retTree; + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t)); + } + } + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::assignmentStatement(RefPascalAST _t) { + RefPascalAST assignmentStatement_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + RefPascalAST __t120 = _t; + RefPascalAST tmp73_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),ASSIGN); + _t = _t->getFirstChild(); + variable(_t); + _t = _retTree; + expression(_t); + _t = _retTree; + _t = __t120; + _t = _t->getNextSibling(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::procedureStatement(RefPascalAST _t) { + RefPascalAST procedureStatement_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + RefPascalAST __t166 = _t; + RefPascalAST tmp74_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),PROC_CALL); + _t = _t->getFirstChild(); + RefPascalAST tmp75_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),IDENT); + _t = _t->getNextSibling(); + { + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + switch ( _t->getType()) { + case ARGLIST: + { + parameterList(_t); + _t = _retTree; + break; + } + case 3: + { + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t)); + } + } + } + _t = __t166; + _t = _t->getNextSibling(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::gotoStatement(RefPascalAST _t) { + RefPascalAST gotoStatement_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + RefPascalAST __t170 = _t; + RefPascalAST tmp76_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),GOTO); + _t = _t->getFirstChild(); + label(_t); + _t = _retTree; + _t = __t170; + _t = _t->getNextSibling(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +/** A variable is an id with a suffix and can look like: + * id + * id[expr,...] + * id.id + * id.id[expr,...] + * id^ + * id^.id + * id^.id[expr,...] + * ... + * + * LL has a really hard time with this construct as it's naturally + * left-recursive. We have to turn into a simple loop rather than + * recursive loop, hence, the suffixes. I keep in the same rule + * for easy tree construction. + */ +void PascalStoreWalker::variable(RefPascalAST _t) { + RefPascalAST variable_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + switch ( _t->getType()) { + case LBRACK: + { + RefPascalAST __t122 = _t; + RefPascalAST tmp77_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),LBRACK); + _t = _t->getFirstChild(); + variable(_t); + _t = _retTree; + { // ( ... )+ + int _cnt124=0; + for (;;) { + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + if ((_tokenSet_3.member(_t->getType()))) { + expression(_t); + _t = _retTree; + } + else { + if ( _cnt124>=1 ) { goto _loop124; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t));} + } + + _cnt124++; + } + _loop124:; + } // ( ... )+ + _t = __t122; + _t = _t->getNextSibling(); + break; + } + case LBRACK2: + { + RefPascalAST __t125 = _t; + RefPascalAST tmp78_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),LBRACK2); + _t = _t->getFirstChild(); + variable(_t); + _t = _retTree; + { // ( ... )+ + int _cnt127=0; + for (;;) { + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + if ((_tokenSet_3.member(_t->getType()))) { + expression(_t); + _t = _retTree; + } + else { + if ( _cnt127>=1 ) { goto _loop127; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t));} + } + + _cnt127++; + } + _loop127:; + } // ( ... )+ + _t = __t125; + _t = _t->getNextSibling(); + break; + } + case DOT: + { + RefPascalAST __t128 = _t; + RefPascalAST tmp79_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),DOT); + _t = _t->getFirstChild(); + variable(_t); + _t = _retTree; + RefPascalAST tmp80_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),IDENT); + _t = _t->getNextSibling(); + _t = __t128; + _t = _t->getNextSibling(); + break; + } + case POINTER: + { + RefPascalAST __t129 = _t; + RefPascalAST tmp81_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),POINTER); + _t = _t->getFirstChild(); + variable(_t); + _t = _retTree; + _t = __t129; + _t = _t->getNextSibling(); + break; + } + case AT: + { + RefPascalAST __t130 = _t; + RefPascalAST tmp82_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),AT); + _t = _t->getFirstChild(); + RefPascalAST tmp83_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),IDENT); + _t = _t->getNextSibling(); + _t = __t130; + _t = _t->getNextSibling(); + break; + } + case IDENT: + { + RefPascalAST tmp84_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),IDENT); + _t = _t->getNextSibling(); + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t)); + } + } + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::expression(RefPascalAST _t) { + RefPascalAST expression_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + switch ( _t->getType()) { + case EQUAL: + { + RefPascalAST __t132 = _t; + RefPascalAST tmp85_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),EQUAL); + _t = _t->getFirstChild(); + expression(_t); + _t = _retTree; + expression(_t); + _t = _retTree; + _t = __t132; + _t = _t->getNextSibling(); + break; + } + case NOT_EQUAL: + { + RefPascalAST __t133 = _t; + RefPascalAST tmp86_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),NOT_EQUAL); + _t = _t->getFirstChild(); + expression(_t); + _t = _retTree; + expression(_t); + _t = _retTree; + _t = __t133; + _t = _t->getNextSibling(); + break; + } + case LTH: + { + RefPascalAST __t134 = _t; + RefPascalAST tmp87_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),LTH); + _t = _t->getFirstChild(); + expression(_t); + _t = _retTree; + expression(_t); + _t = _retTree; + _t = __t134; + _t = _t->getNextSibling(); + break; + } + case LE: + { + RefPascalAST __t135 = _t; + RefPascalAST tmp88_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),LE); + _t = _t->getFirstChild(); + expression(_t); + _t = _retTree; + expression(_t); + _t = _retTree; + _t = __t135; + _t = _t->getNextSibling(); + break; + } + case GE: + { + RefPascalAST __t136 = _t; + RefPascalAST tmp89_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),GE); + _t = _t->getFirstChild(); + expression(_t); + _t = _retTree; + expression(_t); + _t = _retTree; + _t = __t136; + _t = _t->getNextSibling(); + break; + } + case GT: + { + RefPascalAST __t137 = _t; + RefPascalAST tmp90_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),GT); + _t = _t->getFirstChild(); + expression(_t); + _t = _retTree; + expression(_t); + _t = _retTree; + _t = __t137; + _t = _t->getNextSibling(); + break; + } + case IN: + { + RefPascalAST __t138 = _t; + RefPascalAST tmp91_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),IN); + _t = _t->getFirstChild(); + expression(_t); + _t = _retTree; + expression(_t); + _t = _retTree; + _t = __t138; + _t = _t->getNextSibling(); + break; + } + case PLUS: + { + RefPascalAST __t139 = _t; + RefPascalAST tmp92_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),PLUS); + _t = _t->getFirstChild(); + expression(_t); + _t = _retTree; + { + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + switch ( _t->getType()) { + case FUNC_CALL: + case DOT: + case EQUAL: + case NUM_INT: + case LBRACK: + case SET: + case POINTER: + case LE: + case GE: + case LTH: + case GT: + case NOT_EQUAL: + case IN: + case PLUS: + case MINUS: + case OR: + case STAR: + case SLASH: + case DIV: + case MOD: + case AND: + case NOT: + case AT: + case LBRACK2: + case STRING_LITERAL: + case CHR: + case NIL: + case NUM_REAL: + case IDENT: + { + expression(_t); + _t = _retTree; + break; + } + case 3: + { + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t)); + } + } + } + _t = __t139; + _t = _t->getNextSibling(); + break; + } + case MINUS: + { + RefPascalAST __t141 = _t; + RefPascalAST tmp93_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),MINUS); + _t = _t->getFirstChild(); + expression(_t); + _t = _retTree; + { + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + switch ( _t->getType()) { + case FUNC_CALL: + case DOT: + case EQUAL: + case NUM_INT: + case LBRACK: + case SET: + case POINTER: + case LE: + case GE: + case LTH: + case GT: + case NOT_EQUAL: + case IN: + case PLUS: + case MINUS: + case OR: + case STAR: + case SLASH: + case DIV: + case MOD: + case AND: + case NOT: + case AT: + case LBRACK2: + case STRING_LITERAL: + case CHR: + case NIL: + case NUM_REAL: + case IDENT: + { + expression(_t); + _t = _retTree; + break; + } + case 3: + { + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t)); + } + } + } + _t = __t141; + _t = _t->getNextSibling(); + break; + } + case OR: + { + RefPascalAST __t143 = _t; + RefPascalAST tmp94_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),OR); + _t = _t->getFirstChild(); + expression(_t); + _t = _retTree; + expression(_t); + _t = _retTree; + _t = __t143; + _t = _t->getNextSibling(); + break; + } + case STAR: + { + RefPascalAST __t144 = _t; + RefPascalAST tmp95_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),STAR); + _t = _t->getFirstChild(); + expression(_t); + _t = _retTree; + expression(_t); + _t = _retTree; + _t = __t144; + _t = _t->getNextSibling(); + break; + } + case SLASH: + { + RefPascalAST __t145 = _t; + RefPascalAST tmp96_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),SLASH); + _t = _t->getFirstChild(); + expression(_t); + _t = _retTree; + expression(_t); + _t = _retTree; + _t = __t145; + _t = _t->getNextSibling(); + break; + } + case DIV: + { + RefPascalAST __t146 = _t; + RefPascalAST tmp97_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),DIV); + _t = _t->getFirstChild(); + expression(_t); + _t = _retTree; + expression(_t); + _t = _retTree; + _t = __t146; + _t = _t->getNextSibling(); + break; + } + case MOD: + { + RefPascalAST __t147 = _t; + RefPascalAST tmp98_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),MOD); + _t = _t->getFirstChild(); + expression(_t); + _t = _retTree; + expression(_t); + _t = _retTree; + _t = __t147; + _t = _t->getNextSibling(); + break; + } + case AND: + { + RefPascalAST __t148 = _t; + RefPascalAST tmp99_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),AND); + _t = _t->getFirstChild(); + expression(_t); + _t = _retTree; + expression(_t); + _t = _retTree; + _t = __t148; + _t = _t->getNextSibling(); + break; + } + case NOT: + { + RefPascalAST __t149 = _t; + RefPascalAST tmp100_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),NOT); + _t = _t->getFirstChild(); + expression(_t); + _t = _retTree; + _t = __t149; + _t = _t->getNextSibling(); + break; + } + case DOT: + case LBRACK: + case POINTER: + case AT: + case LBRACK2: + case IDENT: + { + variable(_t); + _t = _retTree; + break; + } + case FUNC_CALL: + { + functionDesignator(_t); + _t = _retTree; + break; + } + case SET: + { + set(_t); + _t = _retTree; + break; + } + case NUM_INT: + { + RefPascalAST tmp101_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),NUM_INT); + _t = _t->getNextSibling(); + break; + } + case NUM_REAL: + { + RefPascalAST tmp102_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),NUM_REAL); + _t = _t->getNextSibling(); + break; + } + case CHR: + { + RefPascalAST __t150 = _t; + RefPascalAST tmp103_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),CHR); + _t = _t->getFirstChild(); + { + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + switch ( _t->getType()) { + case NUM_INT: + { + RefPascalAST tmp104_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),NUM_INT); + _t = _t->getNextSibling(); + break; + } + case NUM_REAL: + { + RefPascalAST tmp105_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),NUM_REAL); + _t = _t->getNextSibling(); + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t)); + } + } + } + _t = __t150; + _t = _t->getNextSibling(); + break; + } + case STRING_LITERAL: + { + string(_t); + _t = _retTree; + break; + } + case NIL: + { + RefPascalAST tmp106_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),NIL); + _t = _t->getNextSibling(); + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t)); + } + } + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::functionDesignator(RefPascalAST _t) { + RefPascalAST functionDesignator_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + RefPascalAST __t153 = _t; + RefPascalAST tmp107_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),FUNC_CALL); + _t = _t->getFirstChild(); + RefPascalAST tmp108_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),IDENT); + _t = _t->getNextSibling(); + { + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + switch ( _t->getType()) { + case ARGLIST: + { + parameterList(_t); + _t = _retTree; + break; + } + case 3: + { + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t)); + } + } + } + _t = __t153; + _t = _t->getNextSibling(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::set(RefPascalAST _t) { + RefPascalAST set_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + RefPascalAST __t160 = _t; + RefPascalAST tmp109_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),SET); + _t = _t->getFirstChild(); + { // ( ... )* + for (;;) { + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + if ((_tokenSet_4.member(_t->getType()))) { + element(_t); + _t = _retTree; + } + else { + goto _loop162; + } + + } + _loop162:; + } // ( ... )* + _t = __t160; + _t = _t->getNextSibling(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::parameterList(RefPascalAST _t) { + RefPascalAST parameterList_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + RefPascalAST __t156 = _t; + RefPascalAST tmp110_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),ARGLIST); + _t = _t->getFirstChild(); + { // ( ... )+ + int _cnt158=0; + for (;;) { + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + if ((_tokenSet_3.member(_t->getType()))) { + actualParameter(_t); + _t = _retTree; + } + else { + if ( _cnt158>=1 ) { goto _loop158; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t));} + } + + _cnt158++; + } + _loop158:; + } // ( ... )+ + _t = __t156; + _t = _t->getNextSibling(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::actualParameter(RefPascalAST _t) { + RefPascalAST actualParameter_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + expression(_t); + _t = _retTree; + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::element(RefPascalAST _t) { + RefPascalAST element_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + switch ( _t->getType()) { + case DOTDOT: + { + RefPascalAST __t164 = _t; + RefPascalAST tmp111_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),DOTDOT); + _t = _t->getFirstChild(); + expression(_t); + _t = _retTree; + expression(_t); + _t = _retTree; + _t = __t164; + _t = _t->getNextSibling(); + break; + } + case FUNC_CALL: + case DOT: + case EQUAL: + case NUM_INT: + case LBRACK: + case SET: + case POINTER: + case LE: + case GE: + case LTH: + case GT: + case NOT_EQUAL: + case IN: + case PLUS: + case MINUS: + case OR: + case STAR: + case SLASH: + case DIV: + case MOD: + case AND: + case NOT: + case AT: + case LBRACK2: + case STRING_LITERAL: + case CHR: + case NIL: + case NUM_REAL: + case IDENT: + { + expression(_t); + _t = _retTree; + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t)); + } + } + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::conditionalStatement(RefPascalAST _t) { + RefPascalAST conditionalStatement_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + switch ( _t->getType()) { + case IF: + { + ifStatement(_t); + _t = _retTree; + break; + } + case CASE: + { + caseStatement(_t); + _t = _retTree; + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t)); + } + } + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::repetetiveStatement(RefPascalAST _t) { + RefPascalAST repetetiveStatement_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + switch ( _t->getType()) { + case WHILE: + { + whileStatement(_t); + _t = _retTree; + break; + } + case REPEAT: + { + repeatStatement(_t); + _t = _retTree; + break; + } + case FOR: + { + forStatement(_t); + _t = _retTree; + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t)); + } + } + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::withStatement(RefPascalAST _t) { + RefPascalAST withStatement_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + RefPascalAST __t201 = _t; + RefPascalAST tmp112_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),WITH); + _t = _t->getFirstChild(); + recordVariableList(_t); + _t = _retTree; + statement(_t); + _t = _retTree; + _t = __t201; + _t = _t->getNextSibling(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::statements(RefPascalAST _t) { + RefPascalAST statements_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + RefPascalAST __t174 = _t; + RefPascalAST tmp113_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),BLOCK); + _t = _t->getFirstChild(); + { // ( ... )* + for (;;) { + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + if ((_tokenSet_5.member(_t->getType()))) { + statement(_t); + _t = _retTree; + } + else { + goto _loop176; + } + + } + _loop176:; + } // ( ... )* + _t = __t174; + _t = _t->getNextSibling(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::ifStatement(RefPascalAST _t) { + RefPascalAST ifStatement_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + RefPascalAST __t179 = _t; + RefPascalAST tmp114_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),IF); + _t = _t->getFirstChild(); + expression(_t); + _t = _retTree; + statement(_t); + _t = _retTree; + { + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + switch ( _t->getType()) { + case BLOCK: + case PROC_CALL: + case COLON: + case ASSIGN: + case CASE: + case GOTO: + case IF: + case WHILE: + case REPEAT: + case FOR: + case WITH: + { + statement(_t); + _t = _retTree; + break; + } + case 3: + { + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t)); + } + } + } + _t = __t179; + _t = _t->getNextSibling(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::caseStatement(RefPascalAST _t) { + RefPascalAST caseStatement_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + RefPascalAST __t182 = _t; + RefPascalAST tmp115_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),CASE); + _t = _t->getFirstChild(); + expression(_t); + _t = _retTree; + { // ( ... )+ + int _cnt184=0; + for (;;) { + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + if ((_t->getType() == COLON)) { + caseListElement(_t); + _t = _retTree; + } + else { + if ( _cnt184>=1 ) { goto _loop184; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t));} + } + + _cnt184++; + } + _loop184:; + } // ( ... )+ + { + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + switch ( _t->getType()) { + case BLOCK: + { + statements(_t); + _t = _retTree; + break; + } + case 3: + { + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t)); + } + } + } + _t = __t182; + _t = _t->getNextSibling(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::caseListElement(RefPascalAST _t) { + RefPascalAST caseListElement_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + RefPascalAST __t187 = _t; + RefPascalAST tmp116_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),COLON); + _t = _t->getFirstChild(); + constList(_t); + _t = _retTree; + statement(_t); + _t = _retTree; + _t = __t187; + _t = _t->getNextSibling(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::whileStatement(RefPascalAST _t) { + RefPascalAST whileStatement_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + RefPascalAST __t190 = _t; + RefPascalAST tmp117_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),WHILE); + _t = _t->getFirstChild(); + expression(_t); + _t = _retTree; + statement(_t); + _t = _retTree; + _t = __t190; + _t = _t->getNextSibling(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::repeatStatement(RefPascalAST _t) { + RefPascalAST repeatStatement_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + RefPascalAST __t192 = _t; + RefPascalAST tmp118_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),REPEAT); + _t = _t->getFirstChild(); + statements(_t); + _t = _retTree; + expression(_t); + _t = _retTree; + _t = __t192; + _t = _t->getNextSibling(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::forStatement(RefPascalAST _t) { + RefPascalAST forStatement_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + RefPascalAST __t194 = _t; + RefPascalAST tmp119_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),FOR); + _t = _t->getFirstChild(); + RefPascalAST tmp120_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),IDENT); + _t = _t->getNextSibling(); + forList(_t); + _t = _retTree; + statement(_t); + _t = _retTree; + _t = __t194; + _t = _t->getNextSibling(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::forList(RefPascalAST _t) { + RefPascalAST forList_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + switch ( _t->getType()) { + case TO: + { + RefPascalAST __t196 = _t; + RefPascalAST tmp121_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),TO); + _t = _t->getFirstChild(); + initialValue(_t); + _t = _retTree; + finalValue(_t); + _t = _retTree; + _t = __t196; + _t = _t->getNextSibling(); + break; + } + case DOWNTO: + { + RefPascalAST __t197 = _t; + RefPascalAST tmp122_AST_in = _t; + match(ANTLR_USE_NAMESPACE(antlr)RefAST(_t),DOWNTO); + _t = _t->getFirstChild(); + initialValue(_t); + _t = _retTree; + finalValue(_t); + _t = _retTree; + _t = __t197; + _t = _t->getNextSibling(); + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t)); + } + } + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::initialValue(RefPascalAST _t) { + RefPascalAST initialValue_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + expression(_t); + _t = _retTree; + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::finalValue(RefPascalAST _t) { + RefPascalAST finalValue_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + expression(_t); + _t = _retTree; + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::recordVariableList(RefPascalAST _t) { + RefPascalAST recordVariableList_AST_in = (_t == RefPascalAST(ASTNULL)) ? RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) : _t; + + try { // for error handling + { // ( ... )+ + int _cnt204=0; + for (;;) { + if (_t == RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = ASTNULL; + if ((_tokenSet_6.member(_t->getType()))) { + variable(_t); + _t = _retTree; + } + else { + if ( _cnt204>=1 ) { goto _loop204; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(ANTLR_USE_NAMESPACE(antlr)RefAST(_t));} + } + + _cnt204++; + } + _loop204:; + } // ( ... )+ + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + reportError(ex); + if ( _t != RefPascalAST(ANTLR_USE_NAMESPACE(antlr)nullAST) ) + _t = _t->getNextSibling(); + } + _retTree = _t; +} + +void PascalStoreWalker::initializeASTFactory( ANTLR_USE_NAMESPACE(antlr)ASTFactory& ) +{ +} +const char* PascalStoreWalker::tokenNames[] = { + "<0>", + "EOF", + "<2>", + "NULL_TREE_LOOKAHEAD", + "BLOCK", + "IDLIST", + "ELIST", + "FUNC_CALL", + "PROC_CALL", + "SCALARTYPE", + "TYPELIST", + "VARIANT_TAG", + "VARIANT_TAG_NO_ID", + "VARIANT_CASE", + "CONSTLIST", + "FIELDLIST", + "ARGDECLS", + "VARDECL", + "ARGDECL", + "ARGLIST", + "TYPEDECL", + "FIELD", + "DOT", + "\"library\"", + "SEMI", + "\"end\"", + "\"exports\"", + "COMMA", + "\"index\"", + "\"name\"", + "\"uses\"", + "\"unit\"", + "\"interface\"", + "\"implementation\"", + "\"begin\"", + "\"program\"", + "LPAREN", + "RPAREN", + "\"initialization\"", + "\"finalization\"", + "\"label\"", + "\"const\"", + "\"resourcestring\"", + "EQUAL", + "\"type\"", + "\"var\"", + "COLON", + "\"procedure\"", + "\"forward\"", + "\"function\"", + "\"array\"", + "\"of\"", + "\"external\"", + "\"public\"", + "\"alias\"", + "INTERRUPT", + "\"export\"", + "\"register\"", + "\"pascal\"", + "\"cdecl\"", + "\"stdcall\"", + "\"popstack\"", + "\"saveregisters\"", + "\"inline\"", + "\"safecall\"", + "\"near\"", + "\"far\"", + "NUM_INT", + "\"integer\"", + "\"shortint\"", + "\"smallint\"", + "\"longint\"", + "\"int64\"", + "\"byte\"", + "\"word\"", + "\"cardinal\"", + "\"qword\"", + "\"boolean\"", + "BYTEBOOL", + "LONGBOOL", + "\"char\"", + "DOTDOT", + "ASSIGN", + "\"real\"", + "\"single\"", + "\"double\"", + "\"extended\"", + "\"comp\"", + "\"string\"", + "LBRACK", + "RBRACK", + "\"packed\"", + "\"record\"", + "\"case\"", + "\"set\"", + "\"file\"", + "POINTER", + "\"object\"", + "\"virtual\"", + "\"abstract\"", + "\"private\"", + "\"protected\"", + "\"constructor\"", + "\"destructor\"", + "\"class\"", + "\"override\"", + "MESSAGE", + "\"published\"", + "\"property\"", + "\"read\"", + "\"write\"", + "\"default\"", + "\"nodefault\"", + "LE", + "GE", + "LTH", + "GT", + "NOT_EQUAL", + "\"in\"", + "\"is\"", + "PLUS", + "MINUS", + "\"or\"", + "\"xor\"", + "STAR", + "SLASH", + "\"div\"", + "\"mod\"", + "\"and\"", + "\"shl\"", + "\"shr\"", + "\"not\"", + "\"true\"", + "\"false\"", + "AT", + "PLUSEQ", + "MINUSEQ", + "STAREQ", + "SLASHQE", + "\"goto\"", + "\"if\"", + "\"then\"", + "\"else\"", + "\"while\"", + "\"do\"", + "\"repeat\"", + "\"until\"", + "\"for\"", + "\"to\"", + "\"downto\"", + "\"with\"", + "LBRACK2", + "RBRACK2", + "\"operator\"", + "\"raise\"", + "\"try\"", + "\"except\"", + "\"finally\"", + "\"on\"", + "STRING_LITERAL", + "\"chr\"", + "\"nil\"", + "NUM_REAL", + "IDENT", + "\"absolute\"", + "\"as\"", + "\"asm\"", + "\"assembler\"", + "\"break\"", + "\"continue\"", + "\"dispose\"", + "\"exit\"", + "\"inherited\"", + "\"new\"", + "\"self\"", + "METHOD", + "ADDSUBOR", + "ASSIGNEQUAL", + "SIGN", + "FUNC", + "NODE_NOT_EMIT", + "MYASTVAR", + "LF", + "LCURLY", + "RCURLY", + "WS", + "COMMENT_1", + "COMMENT_2", + "COMMENT_3", + "EXPONENT", + 0 +}; + +const unsigned long PascalStoreWalker::_tokenSet_0_data_[] = { 262144UL, 172032UL, 0UL, 0UL, 0UL, 0UL }; +// ARGDECL "var" "procedure" "function" +const ANTLR_USE_NAMESPACE(antlr)BitSet PascalStoreWalker::_tokenSet_0(_tokenSet_0_data_,6); +const unsigned long PascalStoreWalker::_tokenSet_1_data_[] = { 512UL, 262144UL, 3641384976UL, 1UL, 0UL, 8UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL }; +// SCALARTYPE "array" "integer" "boolean" "char" DOTDOT "real" "string" +// "packed" "record" "set" "file" POINTER IDENT +const ANTLR_USE_NAMESPACE(antlr)BitSet PascalStoreWalker::_tokenSet_1(_tokenSet_1_data_,12); +const unsigned long PascalStoreWalker::_tokenSet_2_data_[] = { 0UL, 0UL, 8UL, 50331648UL, 2147483648UL, 13UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL }; +// NUM_INT PLUS MINUS STRING_LITERAL "chr" NUM_REAL IDENT +const ANTLR_USE_NAMESPACE(antlr)BitSet PascalStoreWalker::_tokenSet_2(_tokenSet_2_data_,12); +const unsigned long PascalStoreWalker::_tokenSet_3_data_[] = { 4194432UL, 2048UL, 1107296264UL, 4152229889UL, 2155872329UL, 15UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL }; +// FUNC_CALL DOT EQUAL NUM_INT LBRACK "set" POINTER LE GE LTH GT NOT_EQUAL +// "in" PLUS MINUS "or" STAR SLASH "div" "mod" "and" "not" AT LBRACK2 STRING_LITERAL +// "chr" "nil" NUM_REAL IDENT +const ANTLR_USE_NAMESPACE(antlr)BitSet PascalStoreWalker::_tokenSet_3(_tokenSet_3_data_,12); +const unsigned long PascalStoreWalker::_tokenSet_4_data_[] = { 4194432UL, 2048UL, 1107427336UL, 4152229889UL, 2155872329UL, 15UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL }; +// FUNC_CALL DOT EQUAL NUM_INT DOTDOT LBRACK "set" POINTER LE GE LTH GT +// NOT_EQUAL "in" PLUS MINUS "or" STAR SLASH "div" "mod" "and" "not" AT +// LBRACK2 STRING_LITERAL "chr" "nil" NUM_REAL IDENT +const ANTLR_USE_NAMESPACE(antlr)BitSet PascalStoreWalker::_tokenSet_4(_tokenSet_4_data_,12); +const unsigned long PascalStoreWalker::_tokenSet_5_data_[] = { 272UL, 16384UL, 537133056UL, 0UL, 4888576UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL }; +// BLOCK PROC_CALL COLON ASSIGN "case" "goto" "if" "while" "repeat" "for" +// "with" +const ANTLR_USE_NAMESPACE(antlr)BitSet PascalStoreWalker::_tokenSet_5(_tokenSet_5_data_,12); +const unsigned long PascalStoreWalker::_tokenSet_6_data_[] = { 4194304UL, 0UL, 33554432UL, 1UL, 8388672UL, 8UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL }; +// DOT LBRACK POINTER AT LBRACK2 IDENT +const ANTLR_USE_NAMESPACE(antlr)BitSet PascalStoreWalker::_tokenSet_6(_tokenSet_6_data_,12); + + |