You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdevelop/languages/pascal/PascalStoreWalker.cpp

3410 lines
82 KiB

/* $ANTLR 2.7.7 (20061129): "pascal.tree.g" -> "PascalStoreWalker.cpp"$ */
#include "PascalStoreWalker.h"
#include <antlr/Token.h>
#include <antlr/AST.h>
#include <antlr/NoViableAltException.h>
#include <antlr/MismatchedTokenException.h>
#include <antlr/SemanticException.h>
#include <antlr/BitSet.h>
#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);