in ragel/src/ragel/rlparse.cpp [3877:6881]
int Parser::parseLangEl( int type, const Token *token )
{
#line 3880 "rlparse.cpp"
#define reject() induceReject = 1
int pos, targState;
unsigned int *action;
int rhsLen;
struct Parser_LangEl *rhs[32];
struct Parser_LangEl *lel = 0;
struct Parser_LangEl *input = 0;
struct Parser_LangEl *queue = 0;
char induceReject;
if ( curs < 0 )
return 0;
if ( pool == 0 ) {
if ( freshPos == 8128 ) {
struct Parser_Block* newBlock = (struct Parser_Block*) malloc( sizeof(struct Parser_Block) );
newBlock->next = block;
block = newBlock;
freshEl = newBlock->data;
#ifdef KELBT_LOG_ACTIONS
cerr << "allocating 8128 LangEls" << endl;
#endif
freshPos = 0;
}
queue = freshEl + freshPos++;
}
else {
queue = pool;
pool = pool->next;
}
numNodes += 1;
queue->type = type;
queue->user.token = *token;
queue->next = 0;
queue->retry = 0;
queue->child = 0;
queue->causeReduce = 0;
again:
if ( input == 0 ) {
if ( queue == 0 )
goto _out;
input = queue;
queue = queue->next;
input->next = 0;
}
lel = input;
if ( lel->type < Parser_keys[curs<<1] || lel->type > Parser_keys[(curs<<1)+1] )
goto parseError;
pos = Parser_indicies[Parser_offsets[curs] + (lel->type - Parser_keys[curs<<1])];
if ( pos < 0 )
goto parseError;
induceReject = 0;
targState = Parser_targs[pos];
action = Parser_actions + Parser_actInds[pos];
if ( lel->retry & 0x0000ffff )
action += (lel->retry & 0x0000ffff);
if ( *action & 0x1 ) {
#ifdef KELBT_LOG_ACTIONS
cerr << "shifted: " << Parser_lelNames[lel->type];
#endif
input = input->next;
lel->state = curs;
lel->next = stackTop;
stackTop = lel;
if ( action[1] == 0 )
lel->retry &= 0xffff0000;
else {
lel->retry += 1;
numRetry += 1;
#ifdef KELBT_LOG_ACTIONS
cerr << " retry: " << stackTop;
#endif
}
#ifdef KELBT_LOG_ACTIONS
cerr << endl;
#endif
}
if ( Parser_commitLen[pos] != 0 ) {
struct Parser_LangEl *commitHead = stackTop, *lel;
int sp = 0, doExec = 0;
#ifdef KELBT_LOG_ACTIONS
cerr << "commit encountered, executing final actions" << endl;
#endif
if ( Parser_commitLen[pos] < 0 )
commitHead = commitHead->next;
lel = commitHead;
commit_head:
if ( lel == lastFinal ) {
doExec = 1;
goto commit_base;
}
if ( lel->next != 0 ) {
sp += 1;
lel->next->prev = lel;
lel = lel->next;
lel->retry = 0;
goto commit_head;
}
commit_reverse:
if ( lel->child != 0 ) {
sp += 1;
lel->child->prev = lel;
lel = lel->child;
lel->retry = 1;
goto commit_head;
}
commit_upwards:
if ( doExec ) {
if ( lel->type < 226 ) {
}
else {
struct Parser_LangEl *redLel = lel;
if ( redLel->child != 0 ) {
int r = Parser_prodLengths[redLel->reduction] - 1;
struct Parser_LangEl *rhsEl = redLel->child;
while ( rhsEl != 0 ) {
rhs[r--] = rhsEl;
rhsEl = rhsEl->next;
}
}
switch ( lel->reduction ) {
case 17: {
Token *__ref0 = (Token*)&rhs[1]->user.token;
Token *__ref1 = (Token*)&rhs[1]->user.token;
Token *__ref2 = (Token*)&rhs[1]->user.token;
#line 61 "rlparse.kl"
LengthDef *lengthDef = new LengthDef( (__ref0)->data );
pd->lengthDefList.append( lengthDef );
/* Generic creation of machine for instantiation and assignment. */
MachineDef *machineDef = new MachineDef( lengthDef );
tryMachineDef( (__ref1)->loc, (__ref2)->data, machineDef, false );
#line 4031 "rlparse.cpp"
} break;
case 18: {
Token *__ref0 = (Token*)&rhs[1]->user.token;
Parser_Lel_inline_list *__ref1 = (Parser_Lel_inline_list*)&rhs[2]->user.inline_list;
#line 72 "rlparse.kl"
if ( pd->prePushExpr != 0 ) {
/* Recover by just ignoring the duplicate. */
error((__ref0)->loc) << "pre_push code already defined" << endl;
}
pd->prePushExpr = (__ref1)->inlineList;
#line 4046 "rlparse.cpp"
} break;
case 19: {
Token *__ref0 = (Token*)&rhs[1]->user.token;
Parser_Lel_inline_list *__ref1 = (Parser_Lel_inline_list*)&rhs[2]->user.inline_list;
#line 84 "rlparse.kl"
if ( pd->postPopExpr != 0 ) {
/* Recover by just ignoring the duplicate. */
error((__ref0)->loc) << "post_pop code already defined" << endl;
}
pd->postPopExpr = (__ref1)->inlineList;
#line 4061 "rlparse.cpp"
} break;
case 20: {
#line 95 "rlparse.kl"
exportContext.append( true );
#line 4069 "rlparse.cpp"
} break;
case 21: {
Parser_Lel_opt_export *__ref0 = (Parser_Lel_opt_export*)&redLel->user.opt_export;
#line 104 "rlparse.kl"
(__ref0)->isSet = true;
#line 4076 "rlparse.cpp"
} break;
case 22: {
Parser_Lel_opt_export *__ref0 = (Parser_Lel_opt_export*)&redLel->user.opt_export;
#line 105 "rlparse.kl"
(__ref0)->isSet = false;
#line 4083 "rlparse.cpp"
} break;
case 23: {
#line 108 "rlparse.kl"
exportContext.remove( exportContext.length()-1 );
#line 4091 "rlparse.cpp"
} break;
case 24: {
Parser_Lel_token_type *__ref0 = (Parser_Lel_token_type*)&rhs[1]->user.token_type;
Parser_Lel_token_type *__ref1 = (Parser_Lel_token_type*)&rhs[1]->user.token_type;
Parser_Lel_join *__ref2 = (Parser_Lel_join*)&rhs[3]->user.join;
Parser_Lel_token_type *__ref3 = (Parser_Lel_token_type*)&rhs[1]->user.token_type;
Parser_Lel_token_type *__ref4 = (Parser_Lel_token_type*)&rhs[1]->user.token_type;
Parser_Lel_opt_export *__ref5 = (Parser_Lel_opt_export*)&rhs[0]->user.opt_export;
Parser_Lel_join *__ref6 = (Parser_Lel_join*)&rhs[3]->user.join;
Token *__ref7 = (Token*)&rhs[2]->user.token;
#line 113 "rlparse.kl"
/* Main machine must be an instance. */
bool isInstance = false;
if ( strcmp((__ref0)->token.data, mainMachine) == 0 ) {
warning((__ref1)->token.loc) <<
"main machine will be implicitly instantiated" << endl;
isInstance = true;
}
/* Generic creation of machine for instantiation and assignment. */
MachineDef *machineDef = new MachineDef( (__ref2)->join );
tryMachineDef( (__ref3)->token.loc, (__ref4)->token.data, machineDef, isInstance );
if ( (__ref5)->isSet )
exportContext.remove( exportContext.length()-1 );
(__ref6)->join->loc = (__ref7)->loc;
#line 4122 "rlparse.cpp"
} break;
case 25: {
Parser_Lel_token_type *__ref0 = (Parser_Lel_token_type*)&rhs[1]->user.token_type;
Parser_Lel_token_type *__ref1 = (Parser_Lel_token_type*)&rhs[1]->user.token_type;
Parser_Lel_join_or_lm *__ref2 = (Parser_Lel_join_or_lm*)&rhs[3]->user.join_or_lm;
Parser_Lel_opt_export *__ref3 = (Parser_Lel_opt_export*)&rhs[0]->user.opt_export;
Parser_Lel_join_or_lm *__ref4 = (Parser_Lel_join_or_lm*)&rhs[3]->user.join_or_lm;
Parser_Lel_join_or_lm *__ref5 = (Parser_Lel_join_or_lm*)&rhs[3]->user.join_or_lm;
Token *__ref6 = (Token*)&rhs[2]->user.token;
#line 133 "rlparse.kl"
/* Generic creation of machine for instantiation and assignment. */
tryMachineDef( (__ref0)->token.loc, (__ref1)->token.data, (__ref2)->machineDef, true );
if ( (__ref3)->isSet )
exportContext.remove( exportContext.length()-1 );
/* Pass a location to join_or_lm */
if ( (__ref4)->machineDef->join != 0 )
(__ref5)->machineDef->join->loc = (__ref6)->loc;
#line 4145 "rlparse.cpp"
} break;
case 26: {
Token *__ref0 = (Token*)&rhs[0]->user.token;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_token_type *__ref2 = (Parser_Lel_token_type*)&redLel->user.token_type;
Token *__ref3 = (Token*)&rhs[0]->user.token;
#line 153 "rlparse.kl"
/* Make/get the priority key. The name may have already been referenced
* and therefore exist. */
PriorDictEl *priorDictEl;
if ( pd->priorDict.insert( (__ref0)->data, pd->nextPriorKey, &priorDictEl ) )
pd->nextPriorKey += 1;
pd->curDefPriorKey = priorDictEl->value;
/* Make/get the local error key. */
LocalErrDictEl *localErrDictEl;
if ( pd->localErrDict.insert( (__ref1)->data, pd->nextLocalErrKey, &localErrDictEl ) )
pd->nextLocalErrKey += 1;
pd->curDefLocalErrKey = localErrDictEl->value;
(__ref2)->token = *(__ref3);
#line 4170 "rlparse.cpp"
} break;
case 27: {
Token *__ref0 = (Token*)&rhs[1]->user.token;
Token *__ref1 = (Token*)&rhs[1]->user.token;
Token *__ref2 = (Token*)&rhs[1]->user.token;
Token *__ref3 = (Token*)&rhs[2]->user.token;
Token *__ref4 = (Token*)&rhs[1]->user.token;
Parser_Lel_inline_list *__ref5 = (Parser_Lel_inline_list*)&rhs[3]->user.inline_list;
#line 171 "rlparse.kl"
if ( pd->actionDict.find( (__ref0)->data ) ) {
/* Recover by just ignoring the duplicate. */
error((__ref1)->loc) << "action \"" << (__ref2)->data << "\" already defined" << endl;
}
else {
//cerr << "NEW ACTION " << $2->data << " " << $4->inlineList << endl;
/* Add the action to the list of actions. */
Action *newAction = new Action( (__ref3)->loc, (__ref4)->data,
(__ref5)->inlineList, pd->nextCondId++ );
/* Insert to list and dict. */
pd->actionList.append( newAction );
pd->actionDict.insert( newAction );
}
#line 4197 "rlparse.cpp"
} break;
case 28: {
Token *__ref0 = (Token*)&rhs[0]->user.token;
Token *__ref1 = (Token*)&rhs[1]->user.token;
Token *__ref2 = (Token*)&rhs[2]->user.token;
Token *__ref3 = (Token*)&rhs[1]->user.token;
Token *__ref4 = (Token*)&rhs[1]->user.token;
Token *__ref5 = (Token*)&rhs[2]->user.token;
#line 191 "rlparse.kl"
if ( ! pd->setAlphType( (__ref0)->loc, (__ref1)->data, (__ref2)->data ) ) {
// Recover by ignoring the alphtype statement.
error((__ref3)->loc) << "\"" << (__ref4)->data <<
" " << (__ref5)->data << "\" is not a valid alphabet type" << endl;
}
#line 4215 "rlparse.cpp"
} break;
case 29: {
Token *__ref0 = (Token*)&rhs[0]->user.token;
Token *__ref1 = (Token*)&rhs[1]->user.token;
Token *__ref2 = (Token*)&rhs[1]->user.token;
Token *__ref3 = (Token*)&rhs[1]->user.token;
#line 200 "rlparse.kl"
if ( ! pd->setAlphType( (__ref0)->loc, (__ref1)->data ) ) {
// Recover by ignoring the alphtype statement.
error((__ref2)->loc) << "\"" << (__ref3)->data <<
"\" is not a valid alphabet type" << endl;
}
#line 4231 "rlparse.cpp"
} break;
case 30: {
Parser_Lel_token_type *__ref0 = (Parser_Lel_token_type*)&rhs[1]->user.token_type;
Parser_Lel_token_type *__ref1 = (Parser_Lel_token_type*)&rhs[2]->user.token_type;
Parser_Lel_token_type *__ref2 = (Parser_Lel_token_type*)&rhs[1]->user.token_type;
Parser_Lel_token_type *__ref3 = (Parser_Lel_token_type*)&rhs[2]->user.token_type;
#line 210 "rlparse.kl"
// Save the upper and lower ends of the range and emit the line number.
pd->lowerNum = (__ref0)->token.data;
pd->upperNum = (__ref1)->token.data;
pd->rangeLowLoc = (__ref2)->token.loc;
pd->rangeHighLoc = (__ref3)->token.loc;
#line 4247 "rlparse.cpp"
} break;
case 31: {
Parser_Lel_inline_list *__ref0 = (Parser_Lel_inline_list*)&rhs[1]->user.inline_list;
#line 219 "rlparse.kl"
pd->getKeyExpr = (__ref0)->inlineList;
#line 4256 "rlparse.cpp"
} break;
case 32: {
Parser_Lel_inline_list *__ref0 = (Parser_Lel_inline_list*)&rhs[1]->user.inline_list;
#line 224 "rlparse.kl"
pd->accessExpr = (__ref0)->inlineList;
#line 4265 "rlparse.cpp"
} break;
case 33: {
Token *__ref0 = (Token*)&rhs[2]->user.token;
Parser_Lel_inline_list *__ref1 = (Parser_Lel_inline_list*)&rhs[3]->user.inline_list;
Token *__ref2 = (Token*)&rhs[2]->user.token;
#line 229 "rlparse.kl"
/* FIXME: Need to implement the rest of this. */
bool wasSet = pd->setVariable( (__ref0)->data, (__ref1)->inlineList );
if ( !wasSet )
error((__ref2)->loc) << "bad variable name" << endl;
#line 4279 "rlparse.cpp"
} break;
case 36: {
Parser_Lel_join_or_lm *__ref0 = (Parser_Lel_join_or_lm*)&redLel->user.join_or_lm;
Parser_Lel_join *__ref1 = (Parser_Lel_join*)&rhs[0]->user.join;
#line 249 "rlparse.kl"
(__ref0)->machineDef = new MachineDef( (__ref1)->join );
#line 4289 "rlparse.cpp"
} break;
case 37: {
Token *__ref0 = (Token*)&rhs[0]->user.token;
Parser_Lel_lm_part_list *__ref1 = (Parser_Lel_lm_part_list*)&rhs[1]->user.lm_part_list;
Parser_Lel_lm_part_list *__ref2 = (Parser_Lel_lm_part_list*)&rhs[1]->user.lm_part_list;
Parser_Lel_join_or_lm *__ref3 = (Parser_Lel_join_or_lm*)&redLel->user.join_or_lm;
#line 253 "rlparse.kl"
/* Create a new factor going to a longest match structure. Record
* in the parse data that we have a longest match. */
LongestMatch *lm = new LongestMatch( (__ref0)->loc, (__ref1)->lmPartList );
pd->lmList.append( lm );
for ( LmPartList::Iter lmp = *((__ref2)->lmPartList); lmp.lte(); lmp++ )
lmp->longestMatch = lm;
(__ref3)->machineDef = new MachineDef( lm );
#line 4307 "rlparse.cpp"
} break;
case 38: {
Parser_Lel_longest_match_part *__ref0 = (Parser_Lel_longest_match_part*)&rhs[1]->user.longest_match_part;
Parser_Lel_lm_part_list *__ref1 = (Parser_Lel_lm_part_list*)&rhs[0]->user.lm_part_list;
Parser_Lel_longest_match_part *__ref2 = (Parser_Lel_longest_match_part*)&rhs[1]->user.longest_match_part;
Parser_Lel_lm_part_list *__ref3 = (Parser_Lel_lm_part_list*)&redLel->user.lm_part_list;
Parser_Lel_lm_part_list *__ref4 = (Parser_Lel_lm_part_list*)&rhs[0]->user.lm_part_list;
#line 270 "rlparse.kl"
if ( (__ref0)->lmPart != 0 )
(__ref1)->lmPartList->append( (__ref2)->lmPart );
(__ref3)->lmPartList = (__ref4)->lmPartList;
#line 4322 "rlparse.cpp"
} break;
case 39: {
Parser_Lel_lm_part_list *__ref0 = (Parser_Lel_lm_part_list*)&redLel->user.lm_part_list;
Parser_Lel_longest_match_part *__ref1 = (Parser_Lel_longest_match_part*)&rhs[0]->user.longest_match_part;
Parser_Lel_lm_part_list *__ref2 = (Parser_Lel_lm_part_list*)&redLel->user.lm_part_list;
Parser_Lel_longest_match_part *__ref3 = (Parser_Lel_longest_match_part*)&rhs[0]->user.longest_match_part;
#line 277 "rlparse.kl"
/* Create a new list with the part. */
(__ref0)->lmPartList = new LmPartList;
if ( (__ref1)->lmPart != 0 )
(__ref2)->lmPartList->append( (__ref3)->lmPart );
#line 4337 "rlparse.cpp"
} break;
case 40: {
Parser_Lel_longest_match_part *__ref0 = (Parser_Lel_longest_match_part*)&redLel->user.longest_match_part;
#line 290 "rlparse.kl"
(__ref0)->lmPart = 0;
#line 4344 "rlparse.cpp"
} break;
case 41: {
Parser_Lel_longest_match_part *__ref0 = (Parser_Lel_longest_match_part*)&redLel->user.longest_match_part;
#line 292 "rlparse.kl"
(__ref0)->lmPart = 0;
#line 4351 "rlparse.cpp"
} break;
case 42: {
Parser_Lel_longest_match_part *__ref0 = (Parser_Lel_longest_match_part*)&redLel->user.longest_match_part;
Parser_Lel_opt_lm_part_action *__ref1 = (Parser_Lel_opt_lm_part_action*)&rhs[1]->user.opt_lm_part_action;
Parser_Lel_longest_match_part *__ref2 = (Parser_Lel_longest_match_part*)&redLel->user.longest_match_part;
Parser_Lel_join *__ref3 = (Parser_Lel_join*)&rhs[0]->user.join;
Token *__ref4 = (Token*)&rhs[2]->user.token;
Parser_Lel_join *__ref5 = (Parser_Lel_join*)&rhs[0]->user.join;
Token *__ref6 = (Token*)&rhs[2]->user.token;
#line 294 "rlparse.kl"
(__ref0)->lmPart = 0;
Action *action = (__ref1)->action;
if ( action != 0 )
action->isLmAction = true;
(__ref2)->lmPart = new LongestMatchPart( (__ref3)->join, action,
(__ref4)->loc, pd->nextLongestMatchId++ );
/* Provide a location to join. Unfortunately We don't
* have the start of the join as in other occurances. Use the end. */
(__ref5)->join->loc = (__ref6)->loc;
#line 4375 "rlparse.cpp"
} break;
case 43: {
Parser_Lel_opt_lm_part_action *__ref0 = (Parser_Lel_opt_lm_part_action*)&redLel->user.opt_lm_part_action;
Parser_Lel_action_ref *__ref1 = (Parser_Lel_action_ref*)&rhs[1]->user.action_ref;
#line 313 "rlparse.kl"
(__ref0)->action = (__ref1)->action;
#line 4385 "rlparse.cpp"
} break;
case 44: {
Parser_Lel_opt_lm_part_action *__ref0 = (Parser_Lel_opt_lm_part_action*)&redLel->user.opt_lm_part_action;
Parser_Lel_action_ref *__ref1 = (Parser_Lel_action_ref*)&rhs[0]->user.action_ref;
#line 317 "rlparse.kl"
(__ref0)->action = (__ref1)->action;
#line 4395 "rlparse.cpp"
} break;
case 45: {
Parser_Lel_opt_lm_part_action *__ref0 = (Parser_Lel_opt_lm_part_action*)&redLel->user.opt_lm_part_action;
#line 321 "rlparse.kl"
(__ref0)->action = 0;
#line 4404 "rlparse.cpp"
} break;
case 46: {
Parser_Lel_join *__ref0 = (Parser_Lel_join*)&rhs[0]->user.join;
Parser_Lel_expression *__ref1 = (Parser_Lel_expression*)&rhs[2]->user.expression;
Parser_Lel_join *__ref2 = (Parser_Lel_join*)&redLel->user.join;
Parser_Lel_join *__ref3 = (Parser_Lel_join*)&rhs[0]->user.join;
#line 332 "rlparse.kl"
/* Append the expression to the list and return it. */
(__ref0)->join->exprList.append( (__ref1)->expression );
(__ref2)->join = (__ref3)->join;
#line 4418 "rlparse.cpp"
} break;
case 47: {
Parser_Lel_join *__ref0 = (Parser_Lel_join*)&redLel->user.join;
Parser_Lel_expression *__ref1 = (Parser_Lel_expression*)&rhs[0]->user.expression;
#line 338 "rlparse.kl"
(__ref0)->join = new Join( (__ref1)->expression );
#line 4428 "rlparse.cpp"
} break;
case 48: {
Parser_Lel_expression *__ref0 = (Parser_Lel_expression*)&redLel->user.expression;
Parser_Lel_expression *__ref1 = (Parser_Lel_expression*)&rhs[0]->user.expression;
Parser_Lel_term_short *__ref2 = (Parser_Lel_term_short*)&rhs[2]->user.term_short;
#line 348 "rlparse.kl"
(__ref0)->expression = new Expression( (__ref1)->expression,
(__ref2)->term, Expression::OrType );
#line 4440 "rlparse.cpp"
} break;
case 49: {
Parser_Lel_expression *__ref0 = (Parser_Lel_expression*)&redLel->user.expression;
Parser_Lel_expression *__ref1 = (Parser_Lel_expression*)&rhs[0]->user.expression;
Parser_Lel_term_short *__ref2 = (Parser_Lel_term_short*)&rhs[2]->user.term_short;
#line 353 "rlparse.kl"
(__ref0)->expression = new Expression( (__ref1)->expression,
(__ref2)->term, Expression::IntersectType );
#line 4452 "rlparse.cpp"
} break;
case 50: {
Parser_Lel_expression *__ref0 = (Parser_Lel_expression*)&redLel->user.expression;
Parser_Lel_expression *__ref1 = (Parser_Lel_expression*)&rhs[0]->user.expression;
Parser_Lel_term_short *__ref2 = (Parser_Lel_term_short*)&rhs[2]->user.term_short;
#line 358 "rlparse.kl"
(__ref0)->expression = new Expression( (__ref1)->expression,
(__ref2)->term, Expression::SubtractType );
#line 4464 "rlparse.cpp"
} break;
case 51: {
Parser_Lel_expression *__ref0 = (Parser_Lel_expression*)&redLel->user.expression;
Parser_Lel_expression *__ref1 = (Parser_Lel_expression*)&rhs[0]->user.expression;
Parser_Lel_term_short *__ref2 = (Parser_Lel_term_short*)&rhs[2]->user.term_short;
#line 363 "rlparse.kl"
(__ref0)->expression = new Expression( (__ref1)->expression,
(__ref2)->term, Expression::StrongSubtractType );
#line 4476 "rlparse.cpp"
} break;
case 52: {
Parser_Lel_expression *__ref0 = (Parser_Lel_expression*)&redLel->user.expression;
Parser_Lel_term_short *__ref1 = (Parser_Lel_term_short*)&rhs[0]->user.term_short;
#line 368 "rlparse.kl"
(__ref0)->expression = new Expression( (__ref1)->term );
#line 4486 "rlparse.cpp"
} break;
case 53: {
Parser_Lel_term_short *__ref0 = (Parser_Lel_term_short*)&redLel->user.term_short;
Parser_Lel_term *__ref1 = (Parser_Lel_term*)&rhs[0]->user.term;
#line 389 "rlparse.kl"
(__ref0)->term = (__ref1)->term;
#line 4496 "rlparse.cpp"
} break;
case 54: {
Parser_Lel_term *__ref0 = (Parser_Lel_term*)&redLel->user.term;
Parser_Lel_term *__ref1 = (Parser_Lel_term*)&rhs[0]->user.term;
Parser_Lel_factor_with_label *__ref2 = (Parser_Lel_factor_with_label*)&rhs[1]->user.factor_with_label;
#line 399 "rlparse.kl"
(__ref0)->term = new Term( (__ref1)->term, (__ref2)->factorWithAug );
#line 4507 "rlparse.cpp"
} break;
case 55: {
Parser_Lel_term *__ref0 = (Parser_Lel_term*)&redLel->user.term;
Parser_Lel_term *__ref1 = (Parser_Lel_term*)&rhs[0]->user.term;
Parser_Lel_factor_with_label *__ref2 = (Parser_Lel_factor_with_label*)&rhs[2]->user.factor_with_label;
#line 403 "rlparse.kl"
(__ref0)->term = new Term( (__ref1)->term, (__ref2)->factorWithAug );
#line 4518 "rlparse.cpp"
} break;
case 56: {
Parser_Lel_term *__ref0 = (Parser_Lel_term*)&redLel->user.term;
Parser_Lel_term *__ref1 = (Parser_Lel_term*)&rhs[0]->user.term;
Parser_Lel_factor_with_label *__ref2 = (Parser_Lel_factor_with_label*)&rhs[2]->user.factor_with_label;
#line 407 "rlparse.kl"
(__ref0)->term = new Term( (__ref1)->term, (__ref2)->factorWithAug, Term::RightStartType );
#line 4529 "rlparse.cpp"
} break;
case 57: {
Parser_Lel_term *__ref0 = (Parser_Lel_term*)&redLel->user.term;
Parser_Lel_term *__ref1 = (Parser_Lel_term*)&rhs[0]->user.term;
Parser_Lel_factor_with_label *__ref2 = (Parser_Lel_factor_with_label*)&rhs[2]->user.factor_with_label;
#line 411 "rlparse.kl"
(__ref0)->term = new Term( (__ref1)->term, (__ref2)->factorWithAug, Term::RightFinishType );
#line 4540 "rlparse.cpp"
} break;
case 58: {
Parser_Lel_term *__ref0 = (Parser_Lel_term*)&redLel->user.term;
Parser_Lel_term *__ref1 = (Parser_Lel_term*)&rhs[0]->user.term;
Parser_Lel_factor_with_label *__ref2 = (Parser_Lel_factor_with_label*)&rhs[2]->user.factor_with_label;
#line 415 "rlparse.kl"
(__ref0)->term = new Term( (__ref1)->term,
(__ref2)->factorWithAug, Term::LeftType );
#line 4552 "rlparse.cpp"
} break;
case 59: {
Parser_Lel_term *__ref0 = (Parser_Lel_term*)&redLel->user.term;
Parser_Lel_factor_with_label *__ref1 = (Parser_Lel_factor_with_label*)&rhs[0]->user.factor_with_label;
#line 420 "rlparse.kl"
(__ref0)->term = new Term( (__ref1)->factorWithAug );
#line 4562 "rlparse.cpp"
} break;
case 60: {
Parser_Lel_factor_with_label *__ref0 = (Parser_Lel_factor_with_label*)&rhs[2]->user.factor_with_label;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Token *__ref2 = (Token*)&rhs[0]->user.token;
Parser_Lel_factor_with_label *__ref3 = (Parser_Lel_factor_with_label*)&redLel->user.factor_with_label;
Parser_Lel_factor_with_label *__ref4 = (Parser_Lel_factor_with_label*)&rhs[2]->user.factor_with_label;
#line 430 "rlparse.kl"
/* Add the label to the list and pass the factor up. */
(__ref0)->factorWithAug->labels.prepend( Label((__ref1)->loc, (__ref2)->data) );
(__ref3)->factorWithAug = (__ref4)->factorWithAug;
#line 4577 "rlparse.cpp"
} break;
case 61: {
Parser_Lel_factor_with_label *__ref0 = (Parser_Lel_factor_with_label*)&redLel->user.factor_with_label;
Parser_Lel_factor_with_ep *__ref1 = (Parser_Lel_factor_with_ep*)&rhs[0]->user.factor_with_ep;
#line 436 "rlparse.kl"
(__ref0)->factorWithAug = (__ref1)->factorWithAug;
#line 4587 "rlparse.cpp"
} break;
case 62: {
Parser_Lel_factor_with_ep *__ref0 = (Parser_Lel_factor_with_ep*)&rhs[0]->user.factor_with_ep;
Token *__ref1 = (Token*)&rhs[1]->user.token;
Parser_Lel_factor_with_ep *__ref2 = (Parser_Lel_factor_with_ep*)&redLel->user.factor_with_ep;
Parser_Lel_factor_with_ep *__ref3 = (Parser_Lel_factor_with_ep*)&rhs[0]->user.factor_with_ep;
#line 446 "rlparse.kl"
/* Add the target to the list and return the factor object. */
(__ref0)->factorWithAug->epsilonLinks.append( EpsilonLink( (__ref1)->loc, nameRef ) );
(__ref2)->factorWithAug = (__ref3)->factorWithAug;
#line 4601 "rlparse.cpp"
} break;
case 63: {
Parser_Lel_factor_with_ep *__ref0 = (Parser_Lel_factor_with_ep*)&redLel->user.factor_with_ep;
Parser_Lel_factor_with_aug *__ref1 = (Parser_Lel_factor_with_aug*)&rhs[0]->user.factor_with_aug;
#line 452 "rlparse.kl"
(__ref0)->factorWithAug = (__ref1)->factorWithAug;
#line 4611 "rlparse.cpp"
} break;
case 64: {
Parser_Lel_factor_with_aug *__ref0 = (Parser_Lel_factor_with_aug*)&rhs[0]->user.factor_with_aug;
Parser_Lel_aug_type *__ref1 = (Parser_Lel_aug_type*)&rhs[1]->user.aug_type;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&rhs[1]->user.aug_type;
Parser_Lel_action_ref *__ref3 = (Parser_Lel_action_ref*)&rhs[2]->user.action_ref;
Parser_Lel_factor_with_aug *__ref4 = (Parser_Lel_factor_with_aug*)&redLel->user.factor_with_aug;
Parser_Lel_factor_with_aug *__ref5 = (Parser_Lel_factor_with_aug*)&rhs[0]->user.factor_with_aug;
#line 462 "rlparse.kl"
/* Append the action to the factorWithAug, record the refernce from
* factorWithAug to the action and pass up the factorWithAug. */
(__ref0)->factorWithAug->actions.append(
ParserAction( (__ref1)->loc, (__ref2)->augType, 0, (__ref3)->action ) );
(__ref4)->factorWithAug = (__ref5)->factorWithAug;
#line 4629 "rlparse.cpp"
} break;
case 65: {
Parser_Lel_factor_with_aug *__ref0 = (Parser_Lel_factor_with_aug*)&rhs[0]->user.factor_with_aug;
Parser_Lel_aug_type *__ref1 = (Parser_Lel_aug_type*)&rhs[1]->user.aug_type;
Parser_Lel_priority_aug *__ref2 = (Parser_Lel_priority_aug*)&rhs[2]->user.priority_aug;
Parser_Lel_factor_with_aug *__ref3 = (Parser_Lel_factor_with_aug*)&redLel->user.factor_with_aug;
Parser_Lel_factor_with_aug *__ref4 = (Parser_Lel_factor_with_aug*)&rhs[0]->user.factor_with_aug;
#line 470 "rlparse.kl"
/* Append the named priority to the factorWithAug and pass it up. */
(__ref0)->factorWithAug->priorityAugs.append(
PriorityAug( (__ref1)->augType, pd->curDefPriorKey, (__ref2)->priorityNum ) );
(__ref3)->factorWithAug = (__ref4)->factorWithAug;
#line 4645 "rlparse.cpp"
} break;
case 66: {
Parser_Lel_factor_with_aug *__ref0 = (Parser_Lel_factor_with_aug*)&rhs[0]->user.factor_with_aug;
Parser_Lel_aug_type *__ref1 = (Parser_Lel_aug_type*)&rhs[1]->user.aug_type;
Parser_Lel_priority_name *__ref2 = (Parser_Lel_priority_name*)&rhs[3]->user.priority_name;
Parser_Lel_priority_aug *__ref3 = (Parser_Lel_priority_aug*)&rhs[5]->user.priority_aug;
Parser_Lel_factor_with_aug *__ref4 = (Parser_Lel_factor_with_aug*)&redLel->user.factor_with_aug;
Parser_Lel_factor_with_aug *__ref5 = (Parser_Lel_factor_with_aug*)&rhs[0]->user.factor_with_aug;
#line 477 "rlparse.kl"
/* Append the priority using a default name. */
(__ref0)->factorWithAug->priorityAugs.append(
PriorityAug( (__ref1)->augType, (__ref2)->priorityName, (__ref3)->priorityNum ) );
(__ref4)->factorWithAug = (__ref5)->factorWithAug;
#line 4662 "rlparse.cpp"
} break;
case 67: {
Parser_Lel_factor_with_aug *__ref0 = (Parser_Lel_factor_with_aug*)&rhs[0]->user.factor_with_aug;
Parser_Lel_aug_type *__ref1 = (Parser_Lel_aug_type*)&rhs[1]->user.aug_type;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&rhs[1]->user.aug_type;
Parser_Lel_action_ref *__ref3 = (Parser_Lel_action_ref*)&rhs[2]->user.action_ref;
Parser_Lel_factor_with_aug *__ref4 = (Parser_Lel_factor_with_aug*)&redLel->user.factor_with_aug;
Parser_Lel_factor_with_aug *__ref5 = (Parser_Lel_factor_with_aug*)&rhs[0]->user.factor_with_aug;
#line 484 "rlparse.kl"
(__ref0)->factorWithAug->conditions.append( ConditionTest( (__ref1)->loc,
(__ref2)->augType, (__ref3)->action, true ) );
(__ref4)->factorWithAug = (__ref5)->factorWithAug;
#line 4678 "rlparse.cpp"
} break;
case 68: {
Parser_Lel_factor_with_aug *__ref0 = (Parser_Lel_factor_with_aug*)&rhs[0]->user.factor_with_aug;
Parser_Lel_aug_type *__ref1 = (Parser_Lel_aug_type*)&rhs[1]->user.aug_type;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&rhs[1]->user.aug_type;
Parser_Lel_action_ref *__ref3 = (Parser_Lel_action_ref*)&rhs[3]->user.action_ref;
Parser_Lel_factor_with_aug *__ref4 = (Parser_Lel_factor_with_aug*)&redLel->user.factor_with_aug;
Parser_Lel_factor_with_aug *__ref5 = (Parser_Lel_factor_with_aug*)&rhs[0]->user.factor_with_aug;
#line 490 "rlparse.kl"
(__ref0)->factorWithAug->conditions.append( ConditionTest( (__ref1)->loc,
(__ref2)->augType, (__ref3)->action, false ) );
(__ref4)->factorWithAug = (__ref5)->factorWithAug;
#line 4694 "rlparse.cpp"
} break;
case 69: {
Parser_Lel_factor_with_aug *__ref0 = (Parser_Lel_factor_with_aug*)&rhs[0]->user.factor_with_aug;
Parser_Lel_aug_type *__ref1 = (Parser_Lel_aug_type*)&rhs[1]->user.aug_type;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&rhs[1]->user.aug_type;
Parser_Lel_action_ref *__ref3 = (Parser_Lel_action_ref*)&rhs[2]->user.action_ref;
Parser_Lel_factor_with_aug *__ref4 = (Parser_Lel_factor_with_aug*)&redLel->user.factor_with_aug;
Parser_Lel_factor_with_aug *__ref5 = (Parser_Lel_factor_with_aug*)&rhs[0]->user.factor_with_aug;
#line 496 "rlparse.kl"
/* Append the action, pass it up. */
(__ref0)->factorWithAug->actions.append( ParserAction( (__ref1)->loc,
(__ref2)->augType, 0, (__ref3)->action ) );
(__ref4)->factorWithAug = (__ref5)->factorWithAug;
#line 4711 "rlparse.cpp"
} break;
case 70: {
Parser_Lel_factor_with_aug *__ref0 = (Parser_Lel_factor_with_aug*)&rhs[0]->user.factor_with_aug;
Parser_Lel_aug_type *__ref1 = (Parser_Lel_aug_type*)&rhs[1]->user.aug_type;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&rhs[1]->user.aug_type;
Parser_Lel_action_ref *__ref3 = (Parser_Lel_action_ref*)&rhs[2]->user.action_ref;
Parser_Lel_factor_with_aug *__ref4 = (Parser_Lel_factor_with_aug*)&redLel->user.factor_with_aug;
Parser_Lel_factor_with_aug *__ref5 = (Parser_Lel_factor_with_aug*)&rhs[0]->user.factor_with_aug;
#line 503 "rlparse.kl"
/* Append the action, pass it up. */
(__ref0)->factorWithAug->actions.append( ParserAction( (__ref1)->loc,
(__ref2)->augType, 0, (__ref3)->action ) );
(__ref4)->factorWithAug = (__ref5)->factorWithAug;
#line 4728 "rlparse.cpp"
} break;
case 71: {
Parser_Lel_factor_with_aug *__ref0 = (Parser_Lel_factor_with_aug*)&rhs[0]->user.factor_with_aug;
Parser_Lel_aug_type *__ref1 = (Parser_Lel_aug_type*)&rhs[1]->user.aug_type;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&rhs[1]->user.aug_type;
Parser_Lel_action_ref *__ref3 = (Parser_Lel_action_ref*)&rhs[2]->user.action_ref;
Parser_Lel_factor_with_aug *__ref4 = (Parser_Lel_factor_with_aug*)&redLel->user.factor_with_aug;
Parser_Lel_factor_with_aug *__ref5 = (Parser_Lel_factor_with_aug*)&rhs[0]->user.factor_with_aug;
#line 510 "rlparse.kl"
/* Append the action, pass it up. */
(__ref0)->factorWithAug->actions.append( ParserAction( (__ref1)->loc,
(__ref2)->augType, 0, (__ref3)->action ) );
(__ref4)->factorWithAug = (__ref5)->factorWithAug;
#line 4745 "rlparse.cpp"
} break;
case 72: {
Parser_Lel_factor_with_aug *__ref0 = (Parser_Lel_factor_with_aug*)&rhs[0]->user.factor_with_aug;
Parser_Lel_aug_type *__ref1 = (Parser_Lel_aug_type*)&rhs[1]->user.aug_type;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&rhs[1]->user.aug_type;
Parser_Lel_action_ref *__ref3 = (Parser_Lel_action_ref*)&rhs[2]->user.action_ref;
Parser_Lel_factor_with_aug *__ref4 = (Parser_Lel_factor_with_aug*)&redLel->user.factor_with_aug;
Parser_Lel_factor_with_aug *__ref5 = (Parser_Lel_factor_with_aug*)&rhs[0]->user.factor_with_aug;
#line 517 "rlparse.kl"
/* Append the action to the factorWithAug, record the refernce from
* factorWithAug to the action and pass up the factorWithAug. */
(__ref0)->factorWithAug->actions.append( ParserAction( (__ref1)->loc,
(__ref2)->augType, pd->curDefLocalErrKey, (__ref3)->action ) );
(__ref4)->factorWithAug = (__ref5)->factorWithAug;
#line 4763 "rlparse.cpp"
} break;
case 73: {
Parser_Lel_factor_with_aug *__ref0 = (Parser_Lel_factor_with_aug*)&rhs[0]->user.factor_with_aug;
Parser_Lel_aug_type *__ref1 = (Parser_Lel_aug_type*)&rhs[1]->user.aug_type;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&rhs[1]->user.aug_type;
Parser_Lel_action_ref *__ref3 = (Parser_Lel_action_ref*)&rhs[2]->user.action_ref;
Parser_Lel_factor_with_aug *__ref4 = (Parser_Lel_factor_with_aug*)&redLel->user.factor_with_aug;
Parser_Lel_factor_with_aug *__ref5 = (Parser_Lel_factor_with_aug*)&rhs[0]->user.factor_with_aug;
#line 525 "rlparse.kl"
/* Append the action to the factorWithAug, record the refernce from
* factorWithAug to the action and pass up the factorWithAug. */
(__ref0)->factorWithAug->actions.append( ParserAction( (__ref1)->loc,
(__ref2)->augType, pd->curDefLocalErrKey, (__ref3)->action ) );
(__ref4)->factorWithAug = (__ref5)->factorWithAug;
#line 4781 "rlparse.cpp"
} break;
case 74: {
Parser_Lel_factor_with_aug *__ref0 = (Parser_Lel_factor_with_aug*)&rhs[0]->user.factor_with_aug;
Parser_Lel_aug_type *__ref1 = (Parser_Lel_aug_type*)&rhs[1]->user.aug_type;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&rhs[1]->user.aug_type;
Parser_Lel_local_err_name *__ref3 = (Parser_Lel_local_err_name*)&rhs[3]->user.local_err_name;
Parser_Lel_action_ref *__ref4 = (Parser_Lel_action_ref*)&rhs[5]->user.action_ref;
Parser_Lel_factor_with_aug *__ref5 = (Parser_Lel_factor_with_aug*)&redLel->user.factor_with_aug;
Parser_Lel_factor_with_aug *__ref6 = (Parser_Lel_factor_with_aug*)&rhs[0]->user.factor_with_aug;
#line 533 "rlparse.kl"
/* Append the action to the factorWithAug, record the refernce from
* factorWithAug to the action and pass up the factorWithAug. */
(__ref0)->factorWithAug->actions.append( ParserAction( (__ref1)->loc,
(__ref2)->augType, (__ref3)->error_name, (__ref4)->action ) );
(__ref5)->factorWithAug = (__ref6)->factorWithAug;
#line 4800 "rlparse.cpp"
} break;
case 75: {
Parser_Lel_factor_with_aug *__ref0 = (Parser_Lel_factor_with_aug*)&redLel->user.factor_with_aug;
Parser_Lel_factor_with_rep *__ref1 = (Parser_Lel_factor_with_rep*)&rhs[0]->user.factor_with_rep;
#line 541 "rlparse.kl"
(__ref0)->factorWithAug = new FactorWithAug( (__ref1)->factorWithRep );
#line 4810 "rlparse.cpp"
} break;
case 76: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 554 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_finish;
#line 4819 "rlparse.cpp"
} break;
case 77: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 555 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_leave;
#line 4828 "rlparse.cpp"
} break;
case 78: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 556 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_all;
#line 4837 "rlparse.cpp"
} break;
case 79: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 557 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_start;
#line 4846 "rlparse.cpp"
} break;
case 80: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 562 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_start;
#line 4855 "rlparse.cpp"
} break;
case 81: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 563 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_start;
#line 4864 "rlparse.cpp"
} break;
case 82: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 564 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_all;
#line 4873 "rlparse.cpp"
} break;
case 83: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 565 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_all;
#line 4882 "rlparse.cpp"
} break;
case 84: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 566 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_leave;
#line 4891 "rlparse.cpp"
} break;
case 85: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 567 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_leave;
#line 4900 "rlparse.cpp"
} break;
case 86: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 568 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_all;
#line 4909 "rlparse.cpp"
} break;
case 87: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 569 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_start;
#line 4918 "rlparse.cpp"
} break;
case 88: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 570 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_leave;
#line 4927 "rlparse.cpp"
} break;
case 89: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 579 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_start_to_state;
#line 4936 "rlparse.cpp"
} break;
case 90: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 581 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_start_to_state;
#line 4945 "rlparse.cpp"
} break;
case 91: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 584 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_not_start_to_state;
#line 4954 "rlparse.cpp"
} break;
case 92: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 586 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_not_start_to_state;
#line 4963 "rlparse.cpp"
} break;
case 93: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 589 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_all_to_state;
#line 4972 "rlparse.cpp"
} break;
case 94: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 591 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_all_to_state;
#line 4981 "rlparse.cpp"
} break;
case 95: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 594 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_final_to_state;
#line 4990 "rlparse.cpp"
} break;
case 96: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 596 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_final_to_state;
#line 4999 "rlparse.cpp"
} break;
case 97: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 599 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_not_final_to_state;
#line 5008 "rlparse.cpp"
} break;
case 98: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 601 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_not_final_to_state;
#line 5017 "rlparse.cpp"
} break;
case 99: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 604 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_middle_to_state;
#line 5026 "rlparse.cpp"
} break;
case 100: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 606 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_middle_to_state;
#line 5035 "rlparse.cpp"
} break;
case 101: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 615 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_start_from_state;
#line 5044 "rlparse.cpp"
} break;
case 102: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 617 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_start_from_state;
#line 5053 "rlparse.cpp"
} break;
case 103: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 620 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_not_start_from_state;
#line 5062 "rlparse.cpp"
} break;
case 104: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 622 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_not_start_from_state;
#line 5071 "rlparse.cpp"
} break;
case 105: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 625 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_all_from_state;
#line 5080 "rlparse.cpp"
} break;
case 106: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 627 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_all_from_state;
#line 5089 "rlparse.cpp"
} break;
case 107: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 630 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_final_from_state;
#line 5098 "rlparse.cpp"
} break;
case 108: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 632 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_final_from_state;
#line 5107 "rlparse.cpp"
} break;
case 109: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 635 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_not_final_from_state;
#line 5116 "rlparse.cpp"
} break;
case 110: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 637 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_not_final_from_state;
#line 5125 "rlparse.cpp"
} break;
case 111: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 640 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_middle_from_state;
#line 5134 "rlparse.cpp"
} break;
case 112: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 642 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_middle_from_state;
#line 5143 "rlparse.cpp"
} break;
case 113: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 651 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_start_eof;
#line 5152 "rlparse.cpp"
} break;
case 114: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 653 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_start_eof;
#line 5161 "rlparse.cpp"
} break;
case 115: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 656 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_not_start_eof;
#line 5170 "rlparse.cpp"
} break;
case 116: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 658 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_not_start_eof;
#line 5179 "rlparse.cpp"
} break;
case 117: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 661 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_all_eof;
#line 5188 "rlparse.cpp"
} break;
case 118: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 663 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_all_eof;
#line 5197 "rlparse.cpp"
} break;
case 119: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 666 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_final_eof;
#line 5206 "rlparse.cpp"
} break;
case 120: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 668 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_final_eof;
#line 5215 "rlparse.cpp"
} break;
case 121: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 671 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_not_final_eof;
#line 5224 "rlparse.cpp"
} break;
case 122: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 673 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_not_final_eof;
#line 5233 "rlparse.cpp"
} break;
case 123: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 676 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_middle_eof;
#line 5242 "rlparse.cpp"
} break;
case 124: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 678 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_middle_eof;
#line 5251 "rlparse.cpp"
} break;
case 125: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 687 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_start_gbl_error;
#line 5260 "rlparse.cpp"
} break;
case 126: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 689 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_start_gbl_error;
#line 5269 "rlparse.cpp"
} break;
case 127: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 692 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_not_start_gbl_error;
#line 5278 "rlparse.cpp"
} break;
case 128: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 694 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_not_start_gbl_error;
#line 5287 "rlparse.cpp"
} break;
case 129: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 697 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_all_gbl_error;
#line 5296 "rlparse.cpp"
} break;
case 130: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 699 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_all_gbl_error;
#line 5305 "rlparse.cpp"
} break;
case 131: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 702 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_final_gbl_error;
#line 5314 "rlparse.cpp"
} break;
case 132: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 704 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_final_gbl_error;
#line 5323 "rlparse.cpp"
} break;
case 133: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 707 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_not_final_gbl_error;
#line 5332 "rlparse.cpp"
} break;
case 134: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 709 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_not_final_gbl_error;
#line 5341 "rlparse.cpp"
} break;
case 135: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 712 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_middle_gbl_error;
#line 5350 "rlparse.cpp"
} break;
case 136: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 714 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_middle_gbl_error;
#line 5359 "rlparse.cpp"
} break;
case 137: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 724 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_start_local_error;
#line 5368 "rlparse.cpp"
} break;
case 138: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 726 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_start_local_error;
#line 5377 "rlparse.cpp"
} break;
case 139: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 729 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_not_start_local_error;
#line 5386 "rlparse.cpp"
} break;
case 140: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 731 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_not_start_local_error;
#line 5395 "rlparse.cpp"
} break;
case 141: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 734 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_all_local_error;
#line 5404 "rlparse.cpp"
} break;
case 142: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 736 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_all_local_error;
#line 5413 "rlparse.cpp"
} break;
case 143: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 739 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_final_local_error;
#line 5422 "rlparse.cpp"
} break;
case 144: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 741 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_final_local_error;
#line 5431 "rlparse.cpp"
} break;
case 145: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 744 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_not_final_local_error;
#line 5440 "rlparse.cpp"
} break;
case 146: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 746 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_not_final_local_error;
#line 5449 "rlparse.cpp"
} break;
case 147: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 749 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_middle_local_error;
#line 5458 "rlparse.cpp"
} break;
case 148: {
Parser_Lel_aug_type *__ref0 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_aug_type *__ref2 = (Parser_Lel_aug_type*)&redLel->user.aug_type;
#line 751 "rlparse.kl"
(__ref0)->loc = (__ref1)->loc; (__ref2)->augType = at_middle_local_error;
#line 5467 "rlparse.cpp"
} break;
case 149: {
Parser_Lel_action_ref *__ref0 = (Parser_Lel_action_ref*)&redLel->user.action_ref;
Parser_Lel_action_ref *__ref1 = (Parser_Lel_action_ref*)&rhs[0]->user.action_ref;
#line 764 "rlparse.kl"
(__ref0)->action = (__ref1)->action;
#line 5475 "rlparse.cpp"
} break;
case 150: {
Parser_Lel_action_ref *__ref0 = (Parser_Lel_action_ref*)&redLel->user.action_ref;
Parser_Lel_action_ref *__ref1 = (Parser_Lel_action_ref*)&rhs[1]->user.action_ref;
#line 765 "rlparse.kl"
(__ref0)->action = (__ref1)->action;
#line 5483 "rlparse.cpp"
} break;
case 151: {
Parser_Lel_action_ref *__ref0 = (Parser_Lel_action_ref*)&redLel->user.action_ref;
Parser_Lel_action_ref *__ref1 = (Parser_Lel_action_ref*)&rhs[0]->user.action_ref;
#line 766 "rlparse.kl"
(__ref0)->action = (__ref1)->action;
#line 5491 "rlparse.cpp"
} break;
case 152: {
Token *__ref0 = (Token*)&rhs[0]->user.token;
Parser_Lel_action_ref *__ref1 = (Parser_Lel_action_ref*)&redLel->user.action_ref;
Token *__ref2 = (Token*)&rhs[0]->user.token;
Token *__ref3 = (Token*)&rhs[0]->user.token;
Parser_Lel_action_ref *__ref4 = (Parser_Lel_action_ref*)&redLel->user.action_ref;
#line 771 "rlparse.kl"
/* Set the name in the actionDict. */
Action *action = pd->actionDict.find( (__ref0)->data );
if ( action != 0 ) {
/* Pass up the action element */
(__ref1)->action = action;
}
else {
/* Will recover by returning null as the action. */
error((__ref2)->loc) << "action lookup of \"" << (__ref3)->data << "\" failed" << endl;
(__ref4)->action = 0;
}
#line 5514 "rlparse.cpp"
} break;
case 153: {
Token *__ref0 = (Token*)&rhs[0]->user.token;
Parser_Lel_inline_list *__ref1 = (Parser_Lel_inline_list*)&rhs[1]->user.inline_list;
Parser_Lel_action_ref *__ref2 = (Parser_Lel_action_ref*)&redLel->user.action_ref;
#line 788 "rlparse.kl"
/* Create the action, add it to the list and pass up. */
Action *newAction = new Action( (__ref0)->loc, 0, (__ref1)->inlineList, pd->nextCondId++ );
pd->actionList.append( newAction );
(__ref2)->action = newAction;
#line 5528 "rlparse.cpp"
} break;
case 154: {
Token *__ref0 = (Token*)&rhs[0]->user.token;
Parser_Lel_priority_name *__ref1 = (Parser_Lel_priority_name*)&redLel->user.priority_name;
#line 803 "rlparse.kl"
// Lookup/create the priority key.
PriorDictEl *priorDictEl;
if ( pd->priorDict.insert( (__ref0)->data, pd->nextPriorKey, &priorDictEl ) )
pd->nextPriorKey += 1;
// Use the inserted/found priority key.
(__ref1)->priorityName = priorDictEl->value;
#line 5544 "rlparse.cpp"
} break;
case 155: {
Parser_Lel_token_type *__ref0 = (Parser_Lel_token_type*)&rhs[0]->user.token_type;
Parser_Lel_token_type *__ref1 = (Parser_Lel_token_type*)&rhs[0]->user.token_type;
Parser_Lel_token_type *__ref2 = (Parser_Lel_token_type*)&rhs[0]->user.token_type;
Parser_Lel_priority_aug *__ref3 = (Parser_Lel_priority_aug*)&redLel->user.priority_aug;
Parser_Lel_token_type *__ref4 = (Parser_Lel_token_type*)&rhs[0]->user.token_type;
Parser_Lel_token_type *__ref5 = (Parser_Lel_token_type*)&rhs[0]->user.token_type;
Parser_Lel_priority_aug *__ref6 = (Parser_Lel_priority_aug*)&redLel->user.priority_aug;
Parser_Lel_priority_aug *__ref7 = (Parser_Lel_priority_aug*)&redLel->user.priority_aug;
#line 820 "rlparse.kl"
// Convert the priority number to a long. Check for overflow.
errno = 0;
//cerr << "PRIOR AUG: " << $1->token.data << endl;
long aug = strtol( (__ref0)->token.data, 0, 10 );
if ( errno == ERANGE && aug == LONG_MAX ) {
/* Priority number too large. Recover by setting the priority to 0. */
error((__ref1)->token.loc) << "priority number " << (__ref2)->token.data <<
" overflows" << endl;
(__ref3)->priorityNum = 0;
}
else if ( errno == ERANGE && aug == LONG_MIN ) {
/* Priority number too large in the neg. Recover by using 0. */
error((__ref4)->token.loc) << "priority number " << (__ref5)->token.data <<
" underflows" << endl;
(__ref6)->priorityNum = 0;
}
else {
/* No overflow or underflow. */
(__ref7)->priorityNum = aug;
}
#line 5579 "rlparse.cpp"
} break;
case 156: {
Parser_Lel_token_type *__ref0 = (Parser_Lel_token_type*)&redLel->user.token_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
#line 846 "rlparse.kl"
(__ref0)->token = *(__ref1);
#line 5589 "rlparse.cpp"
} break;
case 157: {
Parser_Lel_token_type *__ref0 = (Parser_Lel_token_type*)&redLel->user.token_type;
Parser_Lel_token_type *__ref1 = (Parser_Lel_token_type*)&redLel->user.token_type;
Token *__ref2 = (Token*)&rhs[0]->user.token;
Parser_Lel_token_type *__ref3 = (Parser_Lel_token_type*)&redLel->user.token_type;
Token *__ref4 = (Token*)&rhs[1]->user.token;
#line 850 "rlparse.kl"
(__ref0)->token.set( "+", 1 );
(__ref1)->token.loc = (__ref2)->loc;
(__ref3)->token.append( *(__ref4) );
#line 5604 "rlparse.cpp"
} break;
case 158: {
Parser_Lel_token_type *__ref0 = (Parser_Lel_token_type*)&redLel->user.token_type;
Parser_Lel_token_type *__ref1 = (Parser_Lel_token_type*)&redLel->user.token_type;
Token *__ref2 = (Token*)&rhs[0]->user.token;
Parser_Lel_token_type *__ref3 = (Parser_Lel_token_type*)&redLel->user.token_type;
Token *__ref4 = (Token*)&rhs[1]->user.token;
#line 856 "rlparse.kl"
(__ref0)->token.set( "-", 1 );
(__ref1)->token.loc = (__ref2)->loc;
(__ref3)->token.append( *(__ref4) );
#line 5619 "rlparse.cpp"
} break;
case 159: {
Token *__ref0 = (Token*)&rhs[0]->user.token;
Parser_Lel_local_err_name *__ref1 = (Parser_Lel_local_err_name*)&redLel->user.local_err_name;
#line 868 "rlparse.kl"
/* Lookup/create the priority key. */
LocalErrDictEl *localErrDictEl;
if ( pd->localErrDict.insert( (__ref0)->data, pd->nextLocalErrKey, &localErrDictEl ) )
pd->nextLocalErrKey += 1;
/* Use the inserted/found priority key. */
(__ref1)->error_name = localErrDictEl->value;
#line 5635 "rlparse.cpp"
} break;
case 160: {
Parser_Lel_factor_with_rep *__ref0 = (Parser_Lel_factor_with_rep*)&redLel->user.factor_with_rep;
Token *__ref1 = (Token*)&rhs[1]->user.token;
Parser_Lel_factor_with_rep *__ref2 = (Parser_Lel_factor_with_rep*)&rhs[0]->user.factor_with_rep;
#line 889 "rlparse.kl"
(__ref0)->factorWithRep = new FactorWithRep( (__ref1)->loc, (__ref2)->factorWithRep,
0, 0, FactorWithRep::StarType );
#line 5647 "rlparse.cpp"
} break;
case 161: {
Parser_Lel_factor_with_rep *__ref0 = (Parser_Lel_factor_with_rep*)&redLel->user.factor_with_rep;
Token *__ref1 = (Token*)&rhs[1]->user.token;
Parser_Lel_factor_with_rep *__ref2 = (Parser_Lel_factor_with_rep*)&rhs[0]->user.factor_with_rep;
#line 894 "rlparse.kl"
(__ref0)->factorWithRep = new FactorWithRep( (__ref1)->loc, (__ref2)->factorWithRep,
0, 0, FactorWithRep::StarStarType );
#line 5659 "rlparse.cpp"
} break;
case 162: {
Parser_Lel_factor_with_rep *__ref0 = (Parser_Lel_factor_with_rep*)&redLel->user.factor_with_rep;
Token *__ref1 = (Token*)&rhs[1]->user.token;
Parser_Lel_factor_with_rep *__ref2 = (Parser_Lel_factor_with_rep*)&rhs[0]->user.factor_with_rep;
#line 899 "rlparse.kl"
(__ref0)->factorWithRep = new FactorWithRep( (__ref1)->loc, (__ref2)->factorWithRep,
0, 0, FactorWithRep::OptionalType );
#line 5671 "rlparse.cpp"
} break;
case 163: {
Parser_Lel_factor_with_rep *__ref0 = (Parser_Lel_factor_with_rep*)&redLel->user.factor_with_rep;
Token *__ref1 = (Token*)&rhs[1]->user.token;
Parser_Lel_factor_with_rep *__ref2 = (Parser_Lel_factor_with_rep*)&rhs[0]->user.factor_with_rep;
#line 904 "rlparse.kl"
(__ref0)->factorWithRep = new FactorWithRep( (__ref1)->loc, (__ref2)->factorWithRep,
0, 0, FactorWithRep::PlusType );
#line 5683 "rlparse.cpp"
} break;
case 164: {
Parser_Lel_factor_with_rep *__ref0 = (Parser_Lel_factor_with_rep*)&redLel->user.factor_with_rep;
Token *__ref1 = (Token*)&rhs[1]->user.token;
Parser_Lel_factor_with_rep *__ref2 = (Parser_Lel_factor_with_rep*)&rhs[0]->user.factor_with_rep;
Parser_Lel_factor_rep_num *__ref3 = (Parser_Lel_factor_rep_num*)&rhs[2]->user.factor_rep_num;
#line 909 "rlparse.kl"
(__ref0)->factorWithRep = new FactorWithRep( (__ref1)->loc, (__ref2)->factorWithRep,
(__ref3)->rep, 0, FactorWithRep::ExactType );
#line 5696 "rlparse.cpp"
} break;
case 165: {
Parser_Lel_factor_with_rep *__ref0 = (Parser_Lel_factor_with_rep*)&redLel->user.factor_with_rep;
Token *__ref1 = (Token*)&rhs[1]->user.token;
Parser_Lel_factor_with_rep *__ref2 = (Parser_Lel_factor_with_rep*)&rhs[0]->user.factor_with_rep;
Parser_Lel_factor_rep_num *__ref3 = (Parser_Lel_factor_rep_num*)&rhs[3]->user.factor_rep_num;
#line 914 "rlparse.kl"
(__ref0)->factorWithRep = new FactorWithRep( (__ref1)->loc, (__ref2)->factorWithRep,
0, (__ref3)->rep, FactorWithRep::MaxType );
#line 5709 "rlparse.cpp"
} break;
case 166: {
Parser_Lel_factor_with_rep *__ref0 = (Parser_Lel_factor_with_rep*)&redLel->user.factor_with_rep;
Token *__ref1 = (Token*)&rhs[1]->user.token;
Parser_Lel_factor_with_rep *__ref2 = (Parser_Lel_factor_with_rep*)&rhs[0]->user.factor_with_rep;
Parser_Lel_factor_rep_num *__ref3 = (Parser_Lel_factor_rep_num*)&rhs[2]->user.factor_rep_num;
#line 919 "rlparse.kl"
(__ref0)->factorWithRep = new FactorWithRep( (__ref1)->loc, (__ref2)->factorWithRep,
(__ref3)->rep, 0, FactorWithRep::MinType );
#line 5722 "rlparse.cpp"
} break;
case 167: {
Parser_Lel_factor_with_rep *__ref0 = (Parser_Lel_factor_with_rep*)&redLel->user.factor_with_rep;
Token *__ref1 = (Token*)&rhs[1]->user.token;
Parser_Lel_factor_with_rep *__ref2 = (Parser_Lel_factor_with_rep*)&rhs[0]->user.factor_with_rep;
Parser_Lel_factor_rep_num *__ref3 = (Parser_Lel_factor_rep_num*)&rhs[2]->user.factor_rep_num;
Parser_Lel_factor_rep_num *__ref4 = (Parser_Lel_factor_rep_num*)&rhs[4]->user.factor_rep_num;
#line 924 "rlparse.kl"
(__ref0)->factorWithRep = new FactorWithRep( (__ref1)->loc, (__ref2)->factorWithRep,
(__ref3)->rep, (__ref4)->rep, FactorWithRep::RangeType );
#line 5736 "rlparse.cpp"
} break;
case 168: {
Parser_Lel_factor_with_rep *__ref0 = (Parser_Lel_factor_with_rep*)&redLel->user.factor_with_rep;
Parser_Lel_factor_with_neg *__ref1 = (Parser_Lel_factor_with_neg*)&rhs[0]->user.factor_with_neg;
#line 929 "rlparse.kl"
(__ref0)->factorWithRep = new FactorWithRep( (__ref1)->factorWithNeg );
#line 5746 "rlparse.cpp"
} break;
case 169: {
Token *__ref0 = (Token*)&rhs[0]->user.token;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Token *__ref2 = (Token*)&rhs[0]->user.token;
Parser_Lel_factor_rep_num *__ref3 = (Parser_Lel_factor_rep_num*)&redLel->user.factor_rep_num;
Parser_Lel_factor_rep_num *__ref4 = (Parser_Lel_factor_rep_num*)&redLel->user.factor_rep_num;
#line 939 "rlparse.kl"
// Convert the priority number to a long. Check for overflow.
errno = 0;
long rep = strtol( (__ref0)->data, 0, 10 );
if ( errno == ERANGE && rep == LONG_MAX ) {
// Repetition too large. Recover by returing repetition 1. */
error((__ref1)->loc) << "repetition number " << (__ref2)->data << " overflows" << endl;
(__ref3)->rep = 1;
}
else {
// Cannot be negative, so no overflow.
(__ref4)->rep = rep;
}
#line 5770 "rlparse.cpp"
} break;
case 170: {
Parser_Lel_factor_with_neg *__ref0 = (Parser_Lel_factor_with_neg*)&redLel->user.factor_with_neg;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_factor_with_neg *__ref2 = (Parser_Lel_factor_with_neg*)&rhs[1]->user.factor_with_neg;
#line 965 "rlparse.kl"
(__ref0)->factorWithNeg = new FactorWithNeg( (__ref1)->loc,
(__ref2)->factorWithNeg, FactorWithNeg::NegateType );
#line 5782 "rlparse.cpp"
} break;
case 171: {
Parser_Lel_factor_with_neg *__ref0 = (Parser_Lel_factor_with_neg*)&redLel->user.factor_with_neg;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_factor_with_neg *__ref2 = (Parser_Lel_factor_with_neg*)&rhs[1]->user.factor_with_neg;
#line 970 "rlparse.kl"
(__ref0)->factorWithNeg = new FactorWithNeg( (__ref1)->loc,
(__ref2)->factorWithNeg, FactorWithNeg::CharNegateType );
#line 5794 "rlparse.cpp"
} break;
case 172: {
Parser_Lel_factor_with_neg *__ref0 = (Parser_Lel_factor_with_neg*)&redLel->user.factor_with_neg;
Parser_Lel_factor *__ref1 = (Parser_Lel_factor*)&rhs[0]->user.factor;
#line 975 "rlparse.kl"
(__ref0)->factorWithNeg = new FactorWithNeg( (__ref1)->factor );
#line 5804 "rlparse.cpp"
} break;
case 173: {
Parser_Lel_factor *__ref0 = (Parser_Lel_factor*)&redLel->user.factor;
Token *__ref1 = (Token*)&rhs[0]->user.token;
#line 985 "rlparse.kl"
/* Create a new factor node going to a concat literal. */
(__ref0)->factor = new Factor( new Literal( *(__ref1), Literal::LitString ) );
#line 5815 "rlparse.cpp"
} break;
case 174: {
Parser_Lel_factor *__ref0 = (Parser_Lel_factor*)&redLel->user.factor;
Parser_Lel_token_type *__ref1 = (Parser_Lel_token_type*)&rhs[0]->user.token_type;
#line 990 "rlparse.kl"
/* Create a new factor node going to a literal number. */
(__ref0)->factor = new Factor( new Literal( (__ref1)->token, Literal::Number ) );
#line 5826 "rlparse.cpp"
} break;
case 175: {
Token *__ref0 = (Token*)&rhs[0]->user.token;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Token *__ref2 = (Token*)&rhs[0]->user.token;
Parser_Lel_factor *__ref3 = (Parser_Lel_factor*)&redLel->user.factor;
Token *__ref4 = (Token*)&rhs[0]->user.token;
Parser_Lel_factor *__ref5 = (Parser_Lel_factor*)&redLel->user.factor;
Parser_Lel_factor *__ref6 = (Parser_Lel_factor*)&redLel->user.factor;
Token *__ref7 = (Token*)&rhs[0]->user.token;
#line 995 "rlparse.kl"
/* Find the named graph. */
GraphDictEl *gdNode = pd->graphDict.find( (__ref0)->data );
if ( gdNode == 0 ) {
/* Recover by returning null as the factor node. */
error((__ref1)->loc) << "graph lookup of \"" << (__ref2)->data << "\" failed" << endl;
(__ref3)->factor = 0;
}
else if ( gdNode->isInstance ) {
/* Recover by retuning null as the factor node. */
error((__ref4)->loc) << "references to graph instantiations not allowed "
"in expressions" << endl;
(__ref5)->factor = 0;
}
else {
/* Create a factor node that is a lookup of an expression. */
(__ref6)->factor = new Factor( (__ref7)->loc, gdNode->value );
}
#line 5858 "rlparse.cpp"
} break;
case 176: {
Parser_Lel_factor *__ref0 = (Parser_Lel_factor*)&redLel->user.factor;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_regular_expr_or_data *__ref2 = (Parser_Lel_regular_expr_or_data*)&rhs[1]->user.regular_expr_or_data;
#line 1015 "rlparse.kl"
/* Create a new factor node going to an OR expression. */
(__ref0)->factor = new Factor( new ReItem( (__ref1)->loc, (__ref2)->reOrBlock, ReItem::OrBlock ) );
#line 5870 "rlparse.cpp"
} break;
case 177: {
Parser_Lel_factor *__ref0 = (Parser_Lel_factor*)&redLel->user.factor;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_regular_expr_or_data *__ref2 = (Parser_Lel_regular_expr_or_data*)&rhs[1]->user.regular_expr_or_data;
#line 1020 "rlparse.kl"
/* Create a new factor node going to a negated OR expression. */
(__ref0)->factor = new Factor( new ReItem( (__ref1)->loc, (__ref2)->reOrBlock, ReItem::NegOrBlock ) );
#line 5882 "rlparse.cpp"
} break;
case 178: {
Token *__ref0 = (Token*)&rhs[2]->user.token;
Token *__ref1 = (Token*)&rhs[2]->user.token;
Parser_Lel_regular_expr *__ref2 = (Parser_Lel_regular_expr*)&rhs[1]->user.regular_expr;
Parser_Lel_factor *__ref3 = (Parser_Lel_factor*)&redLel->user.factor;
Parser_Lel_regular_expr *__ref4 = (Parser_Lel_regular_expr*)&rhs[1]->user.regular_expr;
#line 1025 "rlparse.kl"
if ( (__ref0)->length > 1 ) {
for ( char *p = (__ref1)->data; *p != 0; p++ ) {
if ( *p == 'i' )
(__ref2)->regExpr->caseInsensitive = true;
}
}
/* Create a new factor node going to a regular exp. */
(__ref3)->factor = new Factor( (__ref4)->regExpr );
#line 5903 "rlparse.cpp"
} break;
case 179: {
Parser_Lel_factor *__ref0 = (Parser_Lel_factor*)&redLel->user.factor;
Parser_Lel_range_lit *__ref1 = (Parser_Lel_range_lit*)&rhs[0]->user.range_lit;
Parser_Lel_range_lit *__ref2 = (Parser_Lel_range_lit*)&rhs[2]->user.range_lit;
#line 1037 "rlparse.kl"
/* Create a new factor node going to a range. */
(__ref0)->factor = new Factor( new Range( (__ref1)->literal, (__ref2)->literal ) );
#line 5915 "rlparse.cpp"
} break;
case 180: {
Parser_Lel_factor *__ref0 = (Parser_Lel_factor*)&redLel->user.factor;
Parser_Lel_join *__ref1 = (Parser_Lel_join*)&rhs[1]->user.join;
Parser_Lel_join *__ref2 = (Parser_Lel_join*)&rhs[1]->user.join;
Token *__ref3 = (Token*)&rhs[0]->user.token;
#line 1042 "rlparse.kl"
/* Create a new factor going to a parenthesized join. */
(__ref0)->factor = new Factor( (__ref1)->join );
(__ref2)->join->loc = (__ref3)->loc;
#line 5929 "rlparse.cpp"
} break;
case 181: {
Parser_Lel_range_lit *__ref0 = (Parser_Lel_range_lit*)&redLel->user.range_lit;
Token *__ref1 = (Token*)&rhs[0]->user.token;
#line 1055 "rlparse.kl"
/* Range literas must have only one char. We restrict this in the parse tree. */
(__ref0)->literal = new Literal( *(__ref1), Literal::LitString );
#line 5940 "rlparse.cpp"
} break;
case 182: {
Parser_Lel_range_lit *__ref0 = (Parser_Lel_range_lit*)&redLel->user.range_lit;
Parser_Lel_token_type *__ref1 = (Parser_Lel_token_type*)&rhs[0]->user.token_type;
#line 1060 "rlparse.kl"
/* Create a new literal number. */
(__ref0)->literal = new Literal( (__ref1)->token, Literal::Number );
#line 5951 "rlparse.cpp"
} break;
case 183: {
Parser_Lel_token_type *__ref0 = (Parser_Lel_token_type*)&redLel->user.token_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
#line 1069 "rlparse.kl"
(__ref0)->token = *(__ref1);
#line 5961 "rlparse.cpp"
} break;
case 184: {
Parser_Lel_token_type *__ref0 = (Parser_Lel_token_type*)&redLel->user.token_type;
Parser_Lel_token_type *__ref1 = (Parser_Lel_token_type*)&redLel->user.token_type;
Token *__ref2 = (Token*)&rhs[0]->user.token;
Parser_Lel_token_type *__ref3 = (Parser_Lel_token_type*)&redLel->user.token_type;
Token *__ref4 = (Token*)&rhs[1]->user.token;
#line 1073 "rlparse.kl"
(__ref0)->token.set( "-", 1 );
(__ref1)->token.loc = (__ref2)->loc;
(__ref3)->token.append( *(__ref4) );
#line 5976 "rlparse.cpp"
} break;
case 185: {
Parser_Lel_token_type *__ref0 = (Parser_Lel_token_type*)&redLel->user.token_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
#line 1079 "rlparse.kl"
(__ref0)->token = *(__ref1);
#line 5986 "rlparse.cpp"
} break;
case 186: {
Parser_Lel_regular_expr_item *__ref0 = (Parser_Lel_regular_expr_item*)&rhs[1]->user.regular_expr_item;
Parser_Lel_regular_expr_item *__ref1 = (Parser_Lel_regular_expr_item*)&rhs[1]->user.regular_expr_item;
Parser_Lel_regular_expr *__ref2 = (Parser_Lel_regular_expr*)&rhs[0]->user.regular_expr;
Parser_Lel_regular_expr *__ref3 = (Parser_Lel_regular_expr*)&rhs[0]->user.regular_expr;
Parser_Lel_regular_expr *__ref4 = (Parser_Lel_regular_expr*)&rhs[0]->user.regular_expr;
Parser_Lel_regular_expr *__ref5 = (Parser_Lel_regular_expr*)&rhs[0]->user.regular_expr;
Parser_Lel_regular_expr_item *__ref6 = (Parser_Lel_regular_expr_item*)&rhs[1]->user.regular_expr_item;
Parser_Lel_regular_expr_item *__ref7 = (Parser_Lel_regular_expr_item*)&rhs[1]->user.regular_expr_item;
Parser_Lel_regular_expr *__ref8 = (Parser_Lel_regular_expr*)&redLel->user.regular_expr;
Parser_Lel_regular_expr *__ref9 = (Parser_Lel_regular_expr*)&rhs[0]->user.regular_expr;
Parser_Lel_regular_expr *__ref10 = (Parser_Lel_regular_expr*)&redLel->user.regular_expr;
Parser_Lel_regular_expr *__ref11 = (Parser_Lel_regular_expr*)&rhs[0]->user.regular_expr;
Parser_Lel_regular_expr_item *__ref12 = (Parser_Lel_regular_expr_item*)&rhs[1]->user.regular_expr_item;
#line 1094 "rlparse.kl"
/* An optimization to lessen the tree size. If a non-starred char is
* directly under the left side on the right and the right side is
* another non-starred char then paste them together and return the
* left side. Otherwise just put the two under a new reg exp node. */
if ( (__ref0)->reItem->type == ReItem::Data && !(__ref1)->reItem->star &&
(__ref2)->regExpr->type == RegExpr::RecurseItem &&
(__ref3)->regExpr->item->type == ReItem::Data && !(__ref4)->regExpr->item->star )
{
/* Append the right side to the right side of the left and toss the
* right side. */
(__ref5)->regExpr->item->token.append( (__ref6)->reItem->token );
delete (__ref7)->reItem;
(__ref8)->regExpr = (__ref9)->regExpr;
}
else {
(__ref10)->regExpr = new RegExpr( (__ref11)->regExpr, (__ref12)->reItem );
}
#line 6023 "rlparse.cpp"
} break;
case 187: {
Parser_Lel_regular_expr *__ref0 = (Parser_Lel_regular_expr*)&redLel->user.regular_expr;
#line 1114 "rlparse.kl"
/* Can't optimize the tree. */
(__ref0)->regExpr = new RegExpr();
#line 6033 "rlparse.cpp"
} break;
case 188: {
Parser_Lel_regular_expr_char *__ref0 = (Parser_Lel_regular_expr_char*)&rhs[0]->user.regular_expr_char;
Parser_Lel_regular_expr_item *__ref1 = (Parser_Lel_regular_expr_item*)&redLel->user.regular_expr_item;
Parser_Lel_regular_expr_char *__ref2 = (Parser_Lel_regular_expr_char*)&rhs[0]->user.regular_expr_char;
#line 1126 "rlparse.kl"
(__ref0)->reItem->star = true;
(__ref1)->reItem = (__ref2)->reItem;
#line 6045 "rlparse.cpp"
} break;
case 189: {
Parser_Lel_regular_expr_item *__ref0 = (Parser_Lel_regular_expr_item*)&redLel->user.regular_expr_item;
Parser_Lel_regular_expr_char *__ref1 = (Parser_Lel_regular_expr_char*)&rhs[0]->user.regular_expr_char;
#line 1131 "rlparse.kl"
(__ref0)->reItem = (__ref1)->reItem;
#line 6055 "rlparse.cpp"
} break;
case 190: {
Parser_Lel_regular_expr_char *__ref0 = (Parser_Lel_regular_expr_char*)&redLel->user.regular_expr_char;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_regular_expr_or_data *__ref2 = (Parser_Lel_regular_expr_or_data*)&rhs[1]->user.regular_expr_or_data;
#line 1143 "rlparse.kl"
(__ref0)->reItem = new ReItem( (__ref1)->loc, (__ref2)->reOrBlock, ReItem::OrBlock );
#line 6066 "rlparse.cpp"
} break;
case 191: {
Parser_Lel_regular_expr_char *__ref0 = (Parser_Lel_regular_expr_char*)&redLel->user.regular_expr_char;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_regular_expr_or_data *__ref2 = (Parser_Lel_regular_expr_or_data*)&rhs[1]->user.regular_expr_or_data;
#line 1147 "rlparse.kl"
(__ref0)->reItem = new ReItem( (__ref1)->loc, (__ref2)->reOrBlock, ReItem::NegOrBlock );
#line 6077 "rlparse.cpp"
} break;
case 192: {
Parser_Lel_regular_expr_char *__ref0 = (Parser_Lel_regular_expr_char*)&redLel->user.regular_expr_char;
Token *__ref1 = (Token*)&rhs[0]->user.token;
#line 1151 "rlparse.kl"
(__ref0)->reItem = new ReItem( (__ref1)->loc, ReItem::Dot );
#line 6087 "rlparse.cpp"
} break;
case 193: {
Parser_Lel_regular_expr_char *__ref0 = (Parser_Lel_regular_expr_char*)&redLel->user.regular_expr_char;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Token *__ref2 = (Token*)&rhs[0]->user.token;
#line 1155 "rlparse.kl"
(__ref0)->reItem = new ReItem( (__ref1)->loc, *(__ref2) );
#line 6098 "rlparse.cpp"
} break;
case 194: {
Parser_Lel_regular_expr_or_char *__ref0 = (Parser_Lel_regular_expr_or_char*)&rhs[1]->user.regular_expr_or_char;
Parser_Lel_regular_expr_or_data *__ref1 = (Parser_Lel_regular_expr_or_data*)&rhs[0]->user.regular_expr_or_data;
Parser_Lel_regular_expr_or_data *__ref2 = (Parser_Lel_regular_expr_or_data*)&rhs[0]->user.regular_expr_or_data;
Parser_Lel_regular_expr_or_data *__ref3 = (Parser_Lel_regular_expr_or_data*)&rhs[0]->user.regular_expr_or_data;
Parser_Lel_regular_expr_or_char *__ref4 = (Parser_Lel_regular_expr_or_char*)&rhs[1]->user.regular_expr_or_char;
Parser_Lel_regular_expr_or_char *__ref5 = (Parser_Lel_regular_expr_or_char*)&rhs[1]->user.regular_expr_or_char;
Parser_Lel_regular_expr_or_data *__ref6 = (Parser_Lel_regular_expr_or_data*)&redLel->user.regular_expr_or_data;
Parser_Lel_regular_expr_or_data *__ref7 = (Parser_Lel_regular_expr_or_data*)&rhs[0]->user.regular_expr_or_data;
Parser_Lel_regular_expr_or_data *__ref8 = (Parser_Lel_regular_expr_or_data*)&redLel->user.regular_expr_or_data;
Parser_Lel_regular_expr_or_data *__ref9 = (Parser_Lel_regular_expr_or_data*)&rhs[0]->user.regular_expr_or_data;
Parser_Lel_regular_expr_or_char *__ref10 = (Parser_Lel_regular_expr_or_char*)&rhs[1]->user.regular_expr_or_char;
#line 1167 "rlparse.kl"
/* An optimization to lessen the tree size. If an or char is directly
* under the left side on the right and the right side is another or
* char then paste them together and return the left side. Otherwise
* just put the two under a new or data node. */
if ( (__ref0)->reOrItem->type == ReOrItem::Data &&
(__ref1)->reOrBlock->type == ReOrBlock::RecurseItem &&
(__ref2)->reOrBlock->item->type == ReOrItem::Data )
{
/* Append the right side to right side of the left and toss the
* right side. */
(__ref3)->reOrBlock->item->token.append( (__ref4)->reOrItem->token );
delete (__ref5)->reOrItem;
(__ref6)->reOrBlock = (__ref7)->reOrBlock;
}
else {
/* Can't optimize, put the left and right under a new node. */
(__ref8)->reOrBlock = new ReOrBlock( (__ref9)->reOrBlock, (__ref10)->reOrItem );
}
#line 6134 "rlparse.cpp"
} break;
case 195: {
Parser_Lel_regular_expr_or_data *__ref0 = (Parser_Lel_regular_expr_or_data*)&redLel->user.regular_expr_or_data;
#line 1188 "rlparse.kl"
(__ref0)->reOrBlock = new ReOrBlock();
#line 6143 "rlparse.cpp"
} break;
case 196: {
Parser_Lel_regular_expr_or_char *__ref0 = (Parser_Lel_regular_expr_or_char*)&redLel->user.regular_expr_or_char;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Token *__ref2 = (Token*)&rhs[0]->user.token;
#line 1200 "rlparse.kl"
(__ref0)->reOrItem = new ReOrItem( (__ref1)->loc, *(__ref2) );
#line 6154 "rlparse.cpp"
} break;
case 197: {
Parser_Lel_regular_expr_or_char *__ref0 = (Parser_Lel_regular_expr_or_char*)&redLel->user.regular_expr_or_char;
Token *__ref1 = (Token*)&rhs[1]->user.token;
Token *__ref2 = (Token*)&rhs[0]->user.token;
Token *__ref3 = (Token*)&rhs[2]->user.token;
#line 1204 "rlparse.kl"
(__ref0)->reOrItem = new ReOrItem( (__ref1)->loc, (__ref2)->data[0], (__ref3)->data[0] );
#line 6166 "rlparse.cpp"
} break;
case 198: {
Parser_Lel_inline_list *__ref0 = (Parser_Lel_inline_list*)&redLel->user.inline_list;
Parser_Lel_inline_list *__ref1 = (Parser_Lel_inline_list*)&rhs[0]->user.inline_list;
Parser_Lel_inline_list *__ref2 = (Parser_Lel_inline_list*)&redLel->user.inline_list;
Parser_Lel_inline_item *__ref3 = (Parser_Lel_inline_item*)&rhs[1]->user.inline_item;
#line 1221 "rlparse.kl"
/* Append the item to the list, return the list. */
(__ref0)->inlineList = (__ref1)->inlineList;
(__ref2)->inlineList->append( (__ref3)->inlineItem );
#line 6180 "rlparse.cpp"
} break;
case 199: {
Parser_Lel_inline_list *__ref0 = (Parser_Lel_inline_list*)&redLel->user.inline_list;
#line 1228 "rlparse.kl"
/* Start with empty list. */
(__ref0)->inlineList = new InlineList;
#line 6190 "rlparse.cpp"
} break;
case 200: {
Parser_Lel_inline_item *__ref0 = (Parser_Lel_inline_item*)&redLel->user.inline_item;
Parser_Lel_token_type *__ref1 = (Parser_Lel_token_type*)&rhs[0]->user.token_type;
Parser_Lel_token_type *__ref2 = (Parser_Lel_token_type*)&rhs[0]->user.token_type;
#line 1243 "rlparse.kl"
(__ref0)->inlineItem = new InlineItem( (__ref1)->token.loc, (__ref2)->token.data, InlineItem::Text );
#line 6201 "rlparse.cpp"
} break;
case 201: {
Parser_Lel_inline_item *__ref0 = (Parser_Lel_inline_item*)&redLel->user.inline_item;
Parser_Lel_token_type *__ref1 = (Parser_Lel_token_type*)&rhs[0]->user.token_type;
Parser_Lel_token_type *__ref2 = (Parser_Lel_token_type*)&rhs[0]->user.token_type;
#line 1249 "rlparse.kl"
(__ref0)->inlineItem = new InlineItem( (__ref1)->token.loc, (__ref2)->token.data, InlineItem::Text );
#line 6212 "rlparse.cpp"
} break;
case 202: {
Parser_Lel_inline_item *__ref0 = (Parser_Lel_inline_item*)&redLel->user.inline_item;
Parser_Lel_inline_item *__ref1 = (Parser_Lel_inline_item*)&rhs[0]->user.inline_item;
#line 1255 "rlparse.kl"
/* Pass the inline item up. */
(__ref0)->inlineItem = (__ref1)->inlineItem;
#line 6223 "rlparse.cpp"
} break;
case 203: {
Parser_Lel_token_type *__ref0 = (Parser_Lel_token_type*)&redLel->user.token_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
#line 1262 "rlparse.kl"
(__ref0)->token = *(__ref1);
#line 6231 "rlparse.cpp"
} break;
case 204: {
Parser_Lel_token_type *__ref0 = (Parser_Lel_token_type*)&redLel->user.token_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
#line 1263 "rlparse.kl"
(__ref0)->token = *(__ref1);
#line 6239 "rlparse.cpp"
} break;
case 205: {
Parser_Lel_token_type *__ref0 = (Parser_Lel_token_type*)&redLel->user.token_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
#line 1264 "rlparse.kl"
(__ref0)->token = *(__ref1);
#line 6247 "rlparse.cpp"
} break;
case 206: {
Parser_Lel_token_type *__ref0 = (Parser_Lel_token_type*)&redLel->user.token_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
#line 1265 "rlparse.kl"
(__ref0)->token = *(__ref1);
#line 6255 "rlparse.cpp"
} break;
case 207: {
Parser_Lel_token_type *__ref0 = (Parser_Lel_token_type*)&redLel->user.token_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
#line 1266 "rlparse.kl"
(__ref0)->token = *(__ref1);
#line 6263 "rlparse.cpp"
} break;
case 208: {
Parser_Lel_token_type *__ref0 = (Parser_Lel_token_type*)&redLel->user.token_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
#line 1267 "rlparse.kl"
(__ref0)->token = *(__ref1);
#line 6271 "rlparse.cpp"
} break;
case 209: {
Parser_Lel_inline_item *__ref0 = (Parser_Lel_inline_item*)&redLel->user.inline_item;
Parser_Lel_inline_item *__ref1 = (Parser_Lel_inline_item*)&rhs[0]->user.inline_item;
#line 1271 "rlparse.kl"
/* Pass up interpreted items of inline expressions. */
(__ref0)->inlineItem = (__ref1)->inlineItem;
#line 6282 "rlparse.cpp"
} break;
case 210: {
Parser_Lel_inline_item *__ref0 = (Parser_Lel_inline_item*)&redLel->user.inline_item;
Token *__ref1 = (Token*)&rhs[0]->user.token;
#line 1276 "rlparse.kl"
(__ref0)->inlineItem = new InlineItem( (__ref1)->loc, InlineItem::Hold );
#line 6292 "rlparse.cpp"
} break;
case 211: {
Parser_Lel_inline_item *__ref0 = (Parser_Lel_inline_item*)&redLel->user.inline_item;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_inline_item *__ref2 = (Parser_Lel_inline_item*)&redLel->user.inline_item;
Parser_Lel_inline_list *__ref3 = (Parser_Lel_inline_list*)&rhs[1]->user.inline_list;
#line 1280 "rlparse.kl"
(__ref0)->inlineItem = new InlineItem( (__ref1)->loc, InlineItem::Exec );
(__ref2)->inlineItem->children = (__ref3)->inlineList;
#line 6305 "rlparse.cpp"
} break;
case 212: {
Parser_Lel_inline_item *__ref0 = (Parser_Lel_inline_item*)&redLel->user.inline_item;
Token *__ref1 = (Token*)&rhs[0]->user.token;
#line 1285 "rlparse.kl"
(__ref0)->inlineItem = new InlineItem( (__ref1)->loc,
new NameRef(nameRef), InlineItem::Goto );
#line 6316 "rlparse.cpp"
} break;
case 213: {
Parser_Lel_inline_item *__ref0 = (Parser_Lel_inline_item*)&redLel->user.inline_item;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_inline_item *__ref2 = (Parser_Lel_inline_item*)&redLel->user.inline_item;
Parser_Lel_inline_list *__ref3 = (Parser_Lel_inline_list*)&rhs[2]->user.inline_list;
#line 1290 "rlparse.kl"
(__ref0)->inlineItem = new InlineItem( (__ref1)->loc, InlineItem::GotoExpr );
(__ref2)->inlineItem->children = (__ref3)->inlineList;
#line 6329 "rlparse.cpp"
} break;
case 214: {
Parser_Lel_inline_item *__ref0 = (Parser_Lel_inline_item*)&redLel->user.inline_item;
Token *__ref1 = (Token*)&rhs[0]->user.token;
#line 1295 "rlparse.kl"
(__ref0)->inlineItem = new InlineItem( (__ref1)->loc, new NameRef(nameRef), InlineItem::Next );
#line 6339 "rlparse.cpp"
} break;
case 215: {
Parser_Lel_inline_item *__ref0 = (Parser_Lel_inline_item*)&redLel->user.inline_item;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_inline_item *__ref2 = (Parser_Lel_inline_item*)&redLel->user.inline_item;
Parser_Lel_inline_list *__ref3 = (Parser_Lel_inline_list*)&rhs[2]->user.inline_list;
#line 1299 "rlparse.kl"
(__ref0)->inlineItem = new InlineItem( (__ref1)->loc, InlineItem::NextExpr );
(__ref2)->inlineItem->children = (__ref3)->inlineList;
#line 6352 "rlparse.cpp"
} break;
case 216: {
Parser_Lel_inline_item *__ref0 = (Parser_Lel_inline_item*)&redLel->user.inline_item;
Token *__ref1 = (Token*)&rhs[0]->user.token;
#line 1304 "rlparse.kl"
(__ref0)->inlineItem = new InlineItem( (__ref1)->loc, new NameRef(nameRef), InlineItem::Call );
#line 6362 "rlparse.cpp"
} break;
case 217: {
Parser_Lel_inline_item *__ref0 = (Parser_Lel_inline_item*)&redLel->user.inline_item;
Token *__ref1 = (Token*)&rhs[0]->user.token;
Parser_Lel_inline_item *__ref2 = (Parser_Lel_inline_item*)&redLel->user.inline_item;
Parser_Lel_inline_list *__ref3 = (Parser_Lel_inline_list*)&rhs[2]->user.inline_list;
#line 1308 "rlparse.kl"
(__ref0)->inlineItem = new InlineItem( (__ref1)->loc, InlineItem::CallExpr );
(__ref2)->inlineItem->children = (__ref3)->inlineList;
#line 6375 "rlparse.cpp"
} break;
case 218: {
Parser_Lel_inline_item *__ref0 = (Parser_Lel_inline_item*)&redLel->user.inline_item;
Token *__ref1 = (Token*)&rhs[0]->user.token;
#line 1313 "rlparse.kl"
(__ref0)->inlineItem = new InlineItem( (__ref1)->loc, InlineItem::Ret );
#line 6385 "rlparse.cpp"
} break;
case 219: {
Parser_Lel_inline_item *__ref0 = (Parser_Lel_inline_item*)&redLel->user.inline_item;
Token *__ref1 = (Token*)&rhs[0]->user.token;
#line 1317 "rlparse.kl"
(__ref0)->inlineItem = new InlineItem( (__ref1)->loc, InlineItem::Break );
#line 6395 "rlparse.cpp"
} break;
case 220: {
Parser_Lel_inline_list *__ref0 = (Parser_Lel_inline_list*)&redLel->user.inline_list;
Parser_Lel_inline_list *__ref1 = (Parser_Lel_inline_list*)&rhs[0]->user.inline_list;
Parser_Lel_inline_list *__ref2 = (Parser_Lel_inline_list*)&redLel->user.inline_list;
Parser_Lel_inline_item *__ref3 = (Parser_Lel_inline_item*)&rhs[1]->user.inline_item;
#line 1325 "rlparse.kl"
(__ref0)->inlineList = (__ref1)->inlineList;
(__ref2)->inlineList->append( (__ref3)->inlineItem );
#line 6408 "rlparse.cpp"
} break;
case 221: {
Parser_Lel_inline_list *__ref0 = (Parser_Lel_inline_list*)&redLel->user.inline_list;
#line 1330 "rlparse.kl"
/* Init the list used for this expr. */
(__ref0)->inlineList = new InlineList;
#line 6418 "rlparse.cpp"
} break;
case 222: {
Parser_Lel_inline_item *__ref0 = (Parser_Lel_inline_item*)&redLel->user.inline_item;
Parser_Lel_token_type *__ref1 = (Parser_Lel_token_type*)&rhs[0]->user.token_type;
Parser_Lel_token_type *__ref2 = (Parser_Lel_token_type*)&rhs[0]->user.token_type;
#line 1339 "rlparse.kl"
/* Return a text segment. */
(__ref0)->inlineItem = new InlineItem( (__ref1)->token.loc, (__ref2)->token.data, InlineItem::Text );
#line 6430 "rlparse.cpp"
} break;
case 223: {
Parser_Lel_inline_item *__ref0 = (Parser_Lel_inline_item*)&redLel->user.inline_item;
Parser_Lel_token_type *__ref1 = (Parser_Lel_token_type*)&rhs[0]->user.token_type;
Parser_Lel_token_type *__ref2 = (Parser_Lel_token_type*)&rhs[0]->user.token_type;
#line 1345 "rlparse.kl"
/* Return a text segment, must heap alloc the text. */
(__ref0)->inlineItem = new InlineItem( (__ref1)->token.loc, (__ref2)->token.data, InlineItem::Text );
#line 6442 "rlparse.cpp"
} break;
case 224: {
Parser_Lel_inline_item *__ref0 = (Parser_Lel_inline_item*)&redLel->user.inline_item;
Parser_Lel_inline_item *__ref1 = (Parser_Lel_inline_item*)&rhs[0]->user.inline_item;
#line 1351 "rlparse.kl"
/* Pass the inline item up. */
(__ref0)->inlineItem = (__ref1)->inlineItem;
#line 6453 "rlparse.cpp"
} break;
case 237: {
Parser_Lel_inline_item *__ref0 = (Parser_Lel_inline_item*)&redLel->user.inline_item;
Token *__ref1 = (Token*)&rhs[0]->user.token;
#line 1381 "rlparse.kl"
(__ref0)->inlineItem = new InlineItem( (__ref1)->loc, InlineItem::PChar );
#line 6463 "rlparse.cpp"
} break;
case 238: {
Parser_Lel_inline_item *__ref0 = (Parser_Lel_inline_item*)&redLel->user.inline_item;
Token *__ref1 = (Token*)&rhs[0]->user.token;
#line 1386 "rlparse.kl"
(__ref0)->inlineItem = new InlineItem( (__ref1)->loc, InlineItem::Char );
#line 6473 "rlparse.cpp"
} break;
case 239: {
Parser_Lel_inline_item *__ref0 = (Parser_Lel_inline_item*)&redLel->user.inline_item;
Token *__ref1 = (Token*)&rhs[0]->user.token;
#line 1391 "rlparse.kl"
(__ref0)->inlineItem = new InlineItem( (__ref1)->loc, InlineItem::Curs );
#line 6483 "rlparse.cpp"
} break;
case 240: {
Parser_Lel_inline_item *__ref0 = (Parser_Lel_inline_item*)&redLel->user.inline_item;
Token *__ref1 = (Token*)&rhs[0]->user.token;
#line 1396 "rlparse.kl"
(__ref0)->inlineItem = new InlineItem( (__ref1)->loc, InlineItem::Targs );
#line 6493 "rlparse.cpp"
} break;
case 241: {
Parser_Lel_inline_item *__ref0 = (Parser_Lel_inline_item*)&redLel->user.inline_item;
Token *__ref1 = (Token*)&rhs[0]->user.token;
#line 1401 "rlparse.kl"
(__ref0)->inlineItem = new InlineItem( (__ref1)->loc,
new NameRef(nameRef), InlineItem::Entry );
#line 6504 "rlparse.cpp"
} break;
case 243: {
#line 1412 "rlparse.kl"
nameRef.empty();
#line 6512 "rlparse.cpp"
} break;
case 245: {
#line 1422 "rlparse.kl"
/* Insert an initial null pointer val to indicate the existence of the
* initial name seperator. */
nameRef.setAs( 0 );
#line 6522 "rlparse.cpp"
} break;
case 246: {
#line 1428 "rlparse.kl"
nameRef.empty();
#line 6530 "rlparse.cpp"
} break;
case 247: {
Token *__ref0 = (Token*)&rhs[2]->user.token;
#line 1435 "rlparse.kl"
nameRef.append( (__ref0)->data );
#line 6539 "rlparse.cpp"
} break;
case 248: {
Token *__ref0 = (Token*)&rhs[0]->user.token;
#line 1440 "rlparse.kl"
nameRef.append( (__ref0)->data );
#line 6548 "rlparse.cpp"
} break;
}
}
if ( lel->child != 0 ) {
struct Parser_LangEl *first = lel->child;
struct Parser_LangEl *child = lel->child;
lel->child = 0;
while ( 1 ) {
if ( child->type < 226 ) {
}
else {
}
numNodes -= 1;
if ( child->next == 0 )
break;
child = child->next;
}
child->next = pool;
pool = first;
}
}
commit_base:
if ( sp > 0 ) {
sp -= 1;
if ( lel->retry == 0 ) {
lel = lel->prev;
goto commit_reverse;
}
else {
lel->retry = 0;
lel = lel->prev;
goto commit_upwards;
}
}
lel->retry = 0;
lastFinal = lel;
numRetry = 0;
}
if ( *action & 0x2 ) {
int reduction = *action >> 2;
struct Parser_LangEl *redLel;
if ( input != 0 )
input->causeReduce += 1;
if ( pool == 0 ) {
if ( freshPos == 8128 ) {
struct Parser_Block* newBlock = (struct Parser_Block*) malloc( sizeof(struct Parser_Block) );
newBlock->next = block;
block = newBlock;
freshEl = newBlock->data;
#ifdef KELBT_LOG_ACTIONS
cerr << "allocating 8128 LangEls" << endl;
#endif
freshPos = 0;
}
redLel = freshEl + freshPos++;
}
else {
redLel = pool;
pool = pool->next;
}
numNodes += 1;
redLel->type = Parser_prodLhsIds[reduction];
redLel->reduction = reduction;
redLel->child = 0;
redLel->next = 0;
redLel->retry = (lel->retry << 16);
redLel->causeReduce = 0;
lel->retry &= 0xffff0000;
rhsLen = Parser_prodLengths[reduction];
if ( rhsLen > 0 ) {
int r;
for ( r = rhsLen-1; r > 0; r-- ) {
rhs[r] = stackTop;
stackTop = stackTop->next;
}
rhs[0] = stackTop;
stackTop = stackTop->next;
rhs[0]->next = 0;
}
switch ( reduction ) {
case 225: {
Parser_Lel_token_type *__ref0 = (Parser_Lel_token_type*)&redLel->user.token_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
#line 1358 "rlparse.kl"
(__ref0)->token = *(__ref1);
#line 6643 "rlparse.cpp"
} break;
case 226: {
Parser_Lel_token_type *__ref0 = (Parser_Lel_token_type*)&redLel->user.token_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
#line 1359 "rlparse.kl"
(__ref0)->token = *(__ref1);
#line 6651 "rlparse.cpp"
} break;
case 227: {
Parser_Lel_token_type *__ref0 = (Parser_Lel_token_type*)&redLel->user.token_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
#line 1360 "rlparse.kl"
(__ref0)->token = *(__ref1);
#line 6659 "rlparse.cpp"
} break;
case 228: {
Parser_Lel_token_type *__ref0 = (Parser_Lel_token_type*)&redLel->user.token_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
#line 1361 "rlparse.kl"
(__ref0)->token = *(__ref1);
#line 6667 "rlparse.cpp"
} break;
case 229: {
Parser_Lel_token_type *__ref0 = (Parser_Lel_token_type*)&redLel->user.token_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
#line 1362 "rlparse.kl"
(__ref0)->token = *(__ref1);
#line 6675 "rlparse.cpp"
} break;
case 230: {
Parser_Lel_token_type *__ref0 = (Parser_Lel_token_type*)&redLel->user.token_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
#line 1363 "rlparse.kl"
(__ref0)->token = *(__ref1);
#line 6683 "rlparse.cpp"
} break;
case 231: {
Parser_Lel_token_type *__ref0 = (Parser_Lel_token_type*)&redLel->user.token_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
#line 1364 "rlparse.kl"
(__ref0)->token = *(__ref1);
#line 6691 "rlparse.cpp"
} break;
case 232: {
Parser_Lel_token_type *__ref0 = (Parser_Lel_token_type*)&redLel->user.token_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
#line 1371 "rlparse.kl"
(__ref0)->token = *(__ref1);
#line 6699 "rlparse.cpp"
} break;
case 233: {
Parser_Lel_token_type *__ref0 = (Parser_Lel_token_type*)&redLel->user.token_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
#line 1372 "rlparse.kl"
(__ref0)->token = *(__ref1);
#line 6707 "rlparse.cpp"
} break;
case 234: {
Parser_Lel_token_type *__ref0 = (Parser_Lel_token_type*)&redLel->user.token_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
#line 1373 "rlparse.kl"
(__ref0)->token = *(__ref1);
#line 6715 "rlparse.cpp"
} break;
case 235: {
Parser_Lel_token_type *__ref0 = (Parser_Lel_token_type*)&redLel->user.token_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
#line 1374 "rlparse.kl"
(__ref0)->token = *(__ref1);
#line 6723 "rlparse.cpp"
} break;
case 236: {
Parser_Lel_token_type *__ref0 = (Parser_Lel_token_type*)&redLel->user.token_type;
Token *__ref1 = (Token*)&rhs[0]->user.token;
#line 1375 "rlparse.kl"
(__ref0)->token = *(__ref1);
#line 6731 "rlparse.cpp"
} break;
}
#ifdef KELBT_LOG_ACTIONS
cerr << "reduced: "
<< Parser_prodNames[reduction]
<< " rhsLen: " << rhsLen;
#endif
if ( action[1] == 0 )
redLel->retry = 0;
else {
redLel->retry += 0x10000;
numRetry += 1;
#ifdef KELBT_LOG_ACTIONS
cerr << " retry: " << redLel;
#endif
}
#ifdef KELBT_LOG_ACTIONS
cerr << endl;
#endif
if ( rhsLen == 0 ) {
redLel->file = lel->file;
redLel->line = lel->line;
targState = curs;
}
else {
redLel->child = rhs[rhsLen-1];
redLel->file = rhs[0]->file;
redLel->line = rhs[0]->line;
targState = rhs[0]->state;
}
if ( induceReject ) {
#ifdef KELBT_LOG_ACTIONS
cerr << "error induced during reduction of " <<
Parser_lelNames[redLel->type] << endl;
#endif
redLel->state = curs;
redLel->next = stackTop;
stackTop = redLel;
curs = targState;
goto parseError;
}
else {
redLel->next = input;
input = redLel;
}
}
curs = targState;
goto again;
parseError:
#ifdef KELBT_LOG_BACKTRACK
cerr << "hit error" << endl;
#endif
if ( numRetry > 0 ) {
struct Parser_LangEl *redLel;
if ( input != 0 ) {
redLel = input;
goto have_undo_element;
}
while ( 1 ) {
redLel = stackTop;
if ( stackTop->type < 226 ) {
#ifdef KELBT_LOG_BACKTRACK
cerr << "backing up over terminal: " <<
Parser_lelNames[stackTop->type] << endl;
#endif
stackTop = stackTop->next;
redLel->next = input;
input = redLel;
}
else {
#ifdef KELBT_LOG_BACKTRACK
cerr << "backing up over non-terminal: " <<
Parser_lelNames[stackTop->type] << endl;
#endif
stackTop = stackTop->next;
struct Parser_LangEl *first = redLel->child;
if ( first == 0 )
rhsLen = 0;
else {
rhsLen = 1;
while ( first->next != 0 ) {
first = first->next;
rhsLen += 1;
}
first->next = stackTop;
stackTop = redLel->child;
struct Parser_LangEl *rhsEl = stackTop;
int p = rhsLen;
while ( p > 0 ) {
rhs[--p] = rhsEl;
rhsEl = rhsEl->next;
}
}
redLel->next = pool;
pool = redLel;
numNodes -= 1;
if ( input != 0 )
input->causeReduce -= 1;
}
have_undo_element:
if ( redLel->retry == 0 ) {
if ( input != 0 && input->causeReduce == 0 ) {
#ifdef KELBT_LOG_BACKTRACK
cerr << "pushing back: " << Parser_lelNames[input->type] << endl;
#endif
input->next = queue;
queue = input;
input = 0;
}
}
else {
#ifdef KELBT_LOG_BACKTRACK
cerr << "found retry targ: " << redLel << endl;
#endif
numRetry -= 1;
#ifdef KELBT_LOG_BACKTRACK
cerr << "found retry: " << redLel << endl;
#endif
if ( redLel->retry & 0x0000ffff )
curs = input->state;
else {
input->retry = redLel->retry >> 16;
if ( stackTop->state < 0 )
curs = Parser_startState;
else {
curs = Parser_targs[(int)Parser_indicies[Parser_offsets[stackTop->state] + (stackTop->type - Parser_keys[stackTop->state<<1])]];
}
}
goto again;
}
}
}
curs = -1;
errCount += 1;
_out: {}
#line 1459 "rlparse.kl"
return errCount == 0 ? 0 : -1;
}