⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 antlr.c

📁 SRI international 发布的OAA框架软件
💻 C
📖 第 1 页 / 共 5 页
字号:
  
		  _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 + -