?? antlr.c
字號:
_retv = NULL;
if ( (setwd6[LA(1)]&0x8) ) {
{
zzBLOCK(zztasp2);
zzMake0;
{
if ( (LA(1)==LABEL) ) {
label = element_label();
}
else {
if ( (setwd6[LA(1)]&0x10) ) {
}
else {zzFAIL(1,zzerr28,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}
}
zzEXIT(zztasp2);
}
}
{
zzBLOCK(zztasp2);
zzMake0;
{
if ( (LA(1)==TokenTerm) ) {
zzmatch(TokenTerm);
term = (TermEntry *) hash_get(Tname, LATEXT(1));
if ( term==NULL && UserDefdTokens ) {
err("implicit token definition not allowed with #tokdefs");
zzaRet.left = zzaRet.right = NULL;
}
else {
zzaRet = buildToken(LATEXT(1));
p=((TokNode *)((Junction *)zzaRet.left)->p1);
term = (TermEntry *) hash_get(Tname, LATEXT(1));
require( term!= NULL, "hash table mechanism is broken");
p->tclass = term->tclass;
p->complement = old_not;
if ( label!=NULL ) {
p->el_label = label->str;
label->elem = (Node *)p;
}
}
zzCONSUME;
{
zzBLOCK(zztasp3);
zzMake0;
{
if ( (LA(1)==119) ) {
zzmatch(119); zzCONSUME;
{
zzBLOCK(zztasp4);
zzMake0;
{
if ( (LA(1)==QuotedTerm) ) {
zzmatch(QuotedTerm);
if ( p!=NULL ) setUpperRange(p, LATEXT(1));
zzCONSUME;
}
else {
if ( (LA(1)==TokenTerm) ) {
zzmatch(TokenTerm);
if ( p!=NULL ) setUpperRange(p, LATEXT(1));
zzCONSUME;
}
else {zzFAIL(1,zzerr29,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}
}
zzEXIT(zztasp4);
}
}
}
else {
if ( (setwd6[LA(1)]&0x20) ) {
}
else {zzFAIL(1,zzerr30,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}
}
zzEXIT(zztasp3);
}
}
if ( p!=NULL && (p->upper_range!=0 || p->tclass || old_not) )
list_add(&MetaTokenNodes, (void *)p);
{
zzBLOCK(zztasp3);
zzMake0;
{
if ( (LA(1)==125) ) {
zzmatch(125);
if ( p!=NULL ) p->astnode=ASTroot;
zzCONSUME;
}
else {
if ( (setwd6[LA(1)]&0x40) ) {
if ( p!=NULL ) p->astnode=ASTchild;
}
else {
if ( (LA(1)==103) ) {
zzmatch(103);
if ( p!=NULL ) p->astnode=ASTexclude;
zzCONSUME;
}
else {zzFAIL(1,zzerr31,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}
}
}
zzEXIT(zztasp3);
}
}
{
zzBLOCK(zztasp3);
zzMake0;
{
if ( (LA(1)==88) ) {
zzmatch(88);
local_use_def_MT_handler = 1;
zzCONSUME;
}
else {
if ( (setwd6[LA(1)]&0x80) ) {
}
else {zzFAIL(1,zzerr32,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}
}
zzEXIT(zztasp3);
}
}
if ( p!=NULL && first_on_line ) {
CurAltStart = (Junction *)zzaRet.left;
altAdd(CurAltStart); /* MR7 */
p->altstart = CurAltStart;
}
if ( p!=NULL )
p->use_def_MT_handler = use_def_MT_handler || local_use_def_MT_handler;
_retv = (Node *)p;
}
else {
if ( (LA(1)==QuotedTerm) ) {
zzmatch(QuotedTerm);
term = (TermEntry *) hash_get(Texpr, LATEXT(1));
if ( term==NULL && UserDefdTokens ) {
err("implicit token definition not allowed with #tokdefs");
zzaRet.left = zzaRet.right = NULL;
}
else {
zzaRet = buildToken(LATEXT(1)); p=((TokNode *)((Junction *)zzaRet.left)->p1);
p->complement = old_not;
if ( label!=NULL ) {
p->el_label = label->str;
label->elem = (Node *)p;
}
}
zzCONSUME;
{
zzBLOCK(zztasp3);
zzMake0;
{
if ( (LA(1)==119) ) {
zzmatch(119); zzCONSUME;
{
zzBLOCK(zztasp4);
zzMake0;
{
if ( (LA(1)==QuotedTerm) ) {
zzmatch(QuotedTerm);
if ( p!=NULL ) setUpperRange(p, LATEXT(1));
zzCONSUME;
}
else {
if ( (LA(1)==TokenTerm) ) {
zzmatch(TokenTerm);
if ( p!=NULL ) setUpperRange(p, LATEXT(1));
zzCONSUME;
}
else {zzFAIL(1,zzerr33,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}
}
zzEXIT(zztasp4);
}
}
}
else {
if ( (setwd7[LA(1)]&0x1) ) {
}
else {zzFAIL(1,zzerr34,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}
}
zzEXIT(zztasp3);
}
}
{
zzBLOCK(zztasp3);
zzMake0;
{
if ( (LA(1)==125) ) {
zzmatch(125);
if ( p!=NULL ) p->astnode=ASTroot;
zzCONSUME;
}
else {
if ( (setwd7[LA(1)]&0x2) ) {
if ( p!=NULL ) p->astnode=ASTchild;
}
else {
if ( (LA(1)==103) ) {
zzmatch(103);
if ( p!=NULL ) p->astnode=ASTexclude;
zzCONSUME;
}
else {zzFAIL(1,zzerr35,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}
}
}
zzEXIT(zztasp3);
}
}
{
zzBLOCK(zztasp3);
zzMake0;
{
if ( (LA(1)==88) ) {
zzmatch(88);
local_use_def_MT_handler = 1;
zzCONSUME;
}
else {
if ( (setwd7[LA(1)]&0x4) ) {
}
else {zzFAIL(1,zzerr36,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}
}
zzEXIT(zztasp3);
}
}
if ( p!=NULL && (p->upper_range!=0 || p->tclass || old_not) )
list_add(&MetaTokenNodes, (void *)p);
if ( first_on_line ) {
CurAltStart = (Junction *)zzaRet.left;
altAdd(CurAltStart); /* MR7 */
p->altstart = CurAltStart;
}
if ( p!=NULL )
p->use_def_MT_handler = use_def_MT_handler || local_use_def_MT_handler;
_retv = (Node *)p;
}
else {
if ( (LA(1)==WildCard) ) {
if ( old_not ) warn("~ WILDCARD is an undefined operation (implies 'nothing')");
zzmatch(WildCard);
zzaRet = buildWildCard(LATEXT(1)); p=((TokNode *)((Junction *)zzaRet.left)->p1);
zzCONSUME;
{
zzBLOCK(zztasp3);
zzMake0;
{
if ( (LA(1)==125) ) {
zzmatch(125);
p->astnode=ASTroot;
zzCONSUME;
}
else {
if ( (setwd7[LA(1)]&0x8) ) {
p->astnode=ASTchild;
}
else {
if ( (LA(1)==103) ) {
zzmatch(103);
p->astnode=ASTexclude;
zzCONSUME;
}
else {zzFAIL(1,zzerr37,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}
}
}
zzEXIT(zztasp3);
}
}
list_add(&MetaTokenNodes, (void *)p);
if ( first_on_line ) {
CurAltStart = (Junction *)zzaRet.left;
altAdd(CurAltStart); /* MR7 */
p->altstart = CurAltStart;
if ( label!=NULL ) {
p->el_label = label->str;
label->elem = (Node *)p;
}
}
_retv = (Node *)p;
}
else {
if ( (LA(1)==NonTerminal) ) {
if ( old_not ) warn("~ NONTERMINAL is an undefined operation");
zzmatch(NonTerminal);
zzaRet = buildRuleRef(LATEXT(1));
zzCONSUME;
{
zzBLOCK(zztasp3);
zzMake0;
{
if ( (LA(1)==103) ) {
zzmatch(103);
q = (RuleRefNode *) ((Junction *)zzaRet.left)->p1;
q->astnode=ASTexclude;
zzCONSUME;
}
else {
if ( (setwd7[LA(1)]&0x10) ) {
}
else {zzFAIL(1,zzerr38,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}
}
zzEXIT(zztasp3);
}
}
{
zzBLOCK(zztasp3);
zzMake0;
{
if ( (setwd7[LA(1)]&0x20) ) {
{
zzBLOCK(zztasp4);
zzMake0;
{
if ( (LA(1)==104) ) {
zzmatch(104); zzCONSUME;
}
else {
if ( (LA(1)==PassAction) ) {
}
else {zzFAIL(1,zzerr39,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}
}
zzEXIT(zztasp4);
}
}
zzmatch(PassAction);
addParm(((Junction *)zzaRet.left)->p1, LATEXT(1));
zzCONSUME;
}
else {
if ( (setwd7[LA(1)]&0x40) ) {
}
else {zzFAIL(1,zzerr40,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}
}
zzEXIT(zztasp3);
}
}
rr=(RuleRefNode *) ((Junction *)zzaRet.left)->p1;
{
zzBLOCK(zztasp3);
zzMake0;
{
char *a;
if ( (LA(1)==105) ) {
zzmatch(105); zzCONSUME;
zzmatch(PassAction);
a = (char *) calloc(strlen(LATEXT(1))+1, sizeof(char));
require(a!=NULL, "rule element: cannot allocate assignment");
strcpy(a, LATEXT(1));
rr->assign = a;
zzCONSUME;
}
else {
if ( (setwd7[LA(1)]&0x80) ) {
}
else {zzFAIL(1,zzerr41,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}
}
zzEXIT(zztasp3);
}
}
if ( label!=NULL ) {
rr->el_label = label->str;
label->elem = (Node *)rr;
}
if ( first_on_line ) {
CurAltStart = (Junction *)zzaRet.left;
altAdd(CurAltStart); /* MR7 */
((RuleRefNode *)((Junction *)zzaRet.left)->p1)->altstart = CurAltStart;
}
_retv = (Node *)rr;
}
else {zzFAIL(1,zzerr42,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}
}
}
}
zzEXIT(zztasp2);
}
}
}
else {
if ( (LA(1)==Action) ) {
if ( old_not ) warn("~ ACTION is an undefined operation");
zzmatch(Action);
zzaArg(zztasp1,0) = buildAction(LATEXT(1),action_file,action_line, 0);
zzCONSUME;
if ( first_on_line ) { /* MR7 */
CurAltStart = (Junction *)zzaArg(zztasp1,0 ).left; /* MR7 */
altAdd(CurAltStart); /* MR7 */
};
_retv = (Node *) ((Junction *)zzaArg(zztasp1,0 ).left)->p1;
}
else {
if ( (LA(1)==Pred) ) {
if ( old_not ) warn("~ SEMANTIC-PREDICATE is an undefined operation");
zzmatch(Pred);
zzaArg(zztasp1,0) = buildAction(LATEXT(1),action_file,action_line, 1);
zzCONSUME;
act = (ActionNode *) ((Junction *)zzaArg(zztasp1,0 ).left)->p1;
if (numericActionLabel) { /* MR10 */
list_add(&NumericPredLabels,act); /* MR10 */
numericActionLabel=0; /* MR10 */
}; /* MR10 */
{
zzBLOCK(zztasp2);
zzMake0;
{
char *a;
if ( (LA(1)==PassAction) ) {
zzmatch(PassAction);
a = (char *) calloc(strlen(LATEXT(1))+1, sizeof(char));
require(a!=NULL, "rule element: cannot allocate predicate fail action");
strcpy(a, LATEXT(1));
act->pred_fail = a;
zzCONSUME;
}
else {
if ( (setwd8[LA(1)]&0x1) ) {
}
else {zzFAIL(1,zzerr43,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}
}
zzEXIT(zztasp2);
}
}
if ( first_on_line ) { /* MR7 */
CurAltStart = (Junction *)zzaArg(zztasp1,0 ).left; /* MR7 */
altAdd(CurAltStart); /* MR7 */
};
_retv = (Node *)act;
}
else {
if ( (setwd8[LA(1)]&0x2) ) {
if ( old_not ) warn("~ BLOCK is an undefined operation");
BlkLevel++;
if (BlkLevel >= MAX_BLK_LEVEL) fatal("Blocks nested too deeply");
/* MR23 */ CurBlockID_array[BlkLevel] = CurBlockID;
/* MR23 */ CurAltNum_array[BlkLevel] = CurAltNum;
{
zzBLOCK(zztasp2);
zzMake0;
{
if ( (LA(1)==Pragma) ) {
zzmatch(Pragma); zzCONSUME;
{
zzBLOCK(zztasp3);
zzMake0;
{
if ( (LA(1)==126) ) {
zzmatch(126);
approx=LL_k;
zzCONSUME;
}
else {
if ( (LA(1)==127) ) {
zzmatch(127);
approx = 1;
zzCONSUME;
}
else {
if ( (LA(1)==128) ) {
zzmatch(128);
approx = 2;
zzCONSUME;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -