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

📄 parser.c

📁 这是一个Linux下的集成开发环境
💻 C
📖 第 1 页 / 共 5 页
字号:
#define yyPrintResult(State, Line, Condition) Condition#endif#if defined YYDEBUG | defined YYDEC_TABLE#define yyGotoReduce(State, Rule)	{ yyState = State; goto yyReduce; }#define yyGotoRead(State)		{ yyState = State; goto yyRead; }#else#define yyGotoReduce(State, Rule)	goto Rule;#define yyGotoRead(State)		{ yyState = State; goto yyRead; }#endifstatic unsigned long	yyStateStackSize	= yyInitStackSize;static yyStateRange *	yyStateStack		;static yyStateRange *	yyEndOfStack		;static unsigned long	yyAttrStackSize 	= yyInitStackSize;static tParsAttribute * yyAttributeStack	;#if defined YYTrialParse | defined YYReParsestatic yyStateRange *	yyStateStackPtr 	;static tParsAttribute * yyAttrStackPtr		;#endifstatic yyStateRange *	yyIsContStackPtr	;static unsigned long	yyIsContStackSize	= yyInitStackSize;static yyStateRange *	yyCompResStackPtr	;static unsigned long	yyCompResStackSize	= yyInitStackSize;int Parser ARGS ((void))   {      return Parser2 (yyStartState);   }int Parser2#if defined __STDC__ | defined __cplusplus   (int yyStartSymbol)#else   (yyStartSymbol) int yyStartSymbol;#endif   {      int		yyErrorCount;#if defined YYDEBUG | defined YYDCRP      yyTrace		= stdout;#endif      BeginParser ();      MakeArray ((char * *) & yyStateStack, & yyStateStackSize,		     (unsigned long) sizeof (yyStateRange));      MakeArray ((char * *) & yyAttributeStack, & yyAttrStackSize,		     (unsigned long) sizeof (tParsAttribute));      MakeArray ((char * *) & yyIsContStackPtr, & yyIsContStackSize,		     (unsigned long) sizeof (yyStateRange));      MakeArray ((char * *) & yyCompResStackPtr, & yyCompResStackSize,		     (unsigned long) sizeof (yyStateRange));#if defined YYTrialParse | defined YYReParse | defined YYGetLook      MakeArray ((char * *) & yyBuffer, & yyBufferSize,		     (unsigned long) sizeof (yytBuffer));#endif      yyEndOfStack	= & yyStateStack [yyStateStackSize - 1];#if defined YYTrialParse | defined YYReParse      yyStateStackPtr	= yyStateStack;      yyAttrStackPtr	= yyAttributeStack;      yyBufferNext	= 1;      yyBufferLast	= 1;      yyParseLevel	= 0;#endif#ifdef YYDEBUG      if (Parser_Debug) {	 (void) fprintf (yyTrace,      "  #|Position|State|Mod|Lev|Action |Terminal and Lookahead or Rule\n");	 yyNl ();      }#endif      yyControl.yyMode		= yystandard;      yyControl.yyActions	= rtrue;      yyControl.yyMessages	= rtrue;      yyErrorCount = yyParse ((yyStateRange) yyStartSymbol,	 (yySymbolRange) yyGetToken (), (int) yyStartLine [yyStartSymbol]);      ReleaseArray ((char * *) & yyStateStack, & yyStateStackSize,			(unsigned long) sizeof (yyStateRange));      ReleaseArray ((char * *) & yyAttributeStack, & yyAttrStackSize,			(unsigned long) sizeof (tParsAttribute));      ReleaseArray ((char * *) & yyIsContStackPtr, & yyIsContStackSize,			(unsigned long) sizeof (yyStateRange));      ReleaseArray ((char * *) & yyCompResStackPtr, & yyCompResStackSize,			(unsigned long) sizeof (yyStateRange));#if defined YYTrialParse | defined YYReParse | defined YYGetLook      ReleaseArray ((char * *) & yyBuffer, & yyBufferSize,			(unsigned long) sizeof (yytBuffer));#endif      return yyErrorCount;   }#ifdef YYTrialParse#ifdef YYMemoParse#define MemoryClear(Position) yyBuffer [Position].yyStart = 0#endifstatic int yyTrialParse#if defined __STDC__ | defined __cplusplus   (yyStateRange yyStartSymbol, yySymbolRange yyToken, int yyLine)#else   (yyStartSymbol, yyToken, yyLine)   yyStateRange		yyStartSymbol	;   yySymbolRange	yyToken		;   int			yyLine		;#endif   {      int	yyErrorCount		;      unsigned long yyPrevStateStackPtr	= yyStateStackPtr - yyStateStack;      unsigned long yyPrevAttrStackPtr	= yyAttrStackPtr - yyAttributeStack;      long	yyPrevBufferNext	;      yytControl yyPrevControl		;      BEFORE_TRIAL#ifdef YYMemoParse      if (yyBuffer [yyBufferNext].yyStart ==   yyStartSymbol) return 0;      if (yyBuffer [yyBufferNext].yyStart == - yyStartSymbol) return 1;#endif      yyPrevControl		= yyControl;      yyStateStackPtr		++;      yyAttrStackPtr		++;      yyParseLevel		++;      if (yyControl.yyMode == yystandard) yyBufferSet (yyToken);      yyPrevBufferNext		= yyBufferNext;      yyControl.yyMode		= yytrial;      yyControl.yyActions	= rfalse;      yyControl.yyMessages	= rfalse;      yyErrorCount		= yyParse (yyStartSymbol, yyToken, yyLine);#ifdef YYMemoParse      yyBuffer [yyPrevBufferNext].yyStart = yyErrorCount ?					- yyStartSymbol : yyStartSymbol;#endif      yyStateStackPtr		= yyStateStack + yyPrevStateStackPtr;      yyAttrStackPtr		= yyAttributeStack + yyPrevAttrStackPtr;      yyBufferNext		= yyPrevBufferNext;      yyControl			= yyPrevControl;      yyParseLevel		--;      Attribute		= yyBuffer [yyBufferNext].yyAttribute;      AFTER_TRIAL      return yyErrorCount;   }#endif#ifdef YYReParsestatic int ReParse#if defined __STDC__ | defined __cplusplus   (yyStateRange yyStartSymbol, int yyFrom, int yyTo, rbool yyActions,      rbool yyMessages)#else   (yyStartSymbol, yyFrom, yyTo, yyActions, yyMessages)   yyStateRange	yyStartSymbol		;   int		yyFrom, yyTo		;   rbool	yyActions, yyMessages	;#endif   {      int yyErrorCount = 1;      if (1 <= yyFrom && yyFrom <= yyTo && yyTo <= yyBufferLast) {	 unsigned long yyPrevStateStackPtr = yyStateStackPtr - yyStateStack;	 unsigned long yyPrevAttrStackPtr = yyAttrStackPtr - yyAttributeStack;	 long	yyPrevBufferNext	= yyBufferNext;	 int	yyToToken		= yyBuffer [yyTo].yyToken;	 yytControl yyPrevControl	;	 yyPrevControl		= yyControl;	 yyStateStackPtr	++;	 yyAttrStackPtr		++;	 yyParseLevel		++;	 yyBufferNext		= yyFrom - 1;	 yyBuffer [yyTo].yyToken= EofToken;	 yyControl.yyMode	= yyreparse;	 yyControl.yyActions	= yyActions;	 yyControl.yyMessages	= yyMessages;	 yyErrorCount		= yyParse (yyStartSymbol,	    (yySymbolRange) yyGetToken (), (int) yyStartLine [yyStartSymbol]);	 yyStateStackPtr	= yyStateStack + yyPrevStateStackPtr;	 yyAttrStackPtr		= yyAttributeStack + yyPrevAttrStackPtr;	 yyBufferNext		= yyPrevBufferNext;	 yyControl		= yyPrevControl;	 yyParseLevel		--;	 yyBuffer [yyTo].yyToken= yyToToken;	 Attribute		= yyBuffer [yyBufferNext].yyAttribute;      } else {      Message ("invalid call of ReParse", xxError, Attribute.Position);      }      return yyErrorCount;   }#endifstatic char * yyGetTokenName#if defined __STDC__ | defined __cplusplus   (yySymbolRange yyTerminal)#else   (yyTerminal) yySymbolRange yyTerminal;#endif   {      if (yyTerminal <= yyLastTerminal && Parser_TokenName [yyTerminal])         return Parser_TokenName [yyTerminal];      else         return "_unknown_";   }static int yyParse#if defined __STDC__ | defined __cplusplus   (yyStateRange yyStartSymbol, yySymbolRange yyToken, int yyLine)#else   (yyStartSymbol, yyToken, yyLine)   yyStateRange		yyStartSymbol	;   yySymbolRange	yyToken		;   int			yyLine		;#endif   {      register	yyStateRange	yyState		= yyStartSymbol;      register	yySymbolRange	yyTerminal	= yyToken;      register	rbool		yyIsRepairing	= rfalse;		tParsAttribute	yySynAttribute	;   /* synthesized attribute */		int		yyErrorCount	= 0;#if ! (defined YYTrialParse | defined YYReParse)      register	yyStateRange *	yyStateStackPtr	= yyStateStack;      register	tParsAttribute *yyAttrStackPtr	= yyAttributeStack;#endif#ifdef YYDEBUG		long		yyStartCount	= yyCount + 1;		yySymbolRange	yyPrevTerminal	= yyToken;#endif#ifdef YYGetLook		yySymbolRange	yy2;#endif/* line 155 "Parser.lrk" */#ifdef YYDEBUG      if (Parser_Debug) {	 yyPrintState (yyStartSymbol);	 (void) fprintf (yyTrace,	    "parse   for predicate in line %d, lookahead: %s", yyLine,	    yyGetTokenName (yyTerminal)); yyNl ();      }#endif   yyParseLoop:      for (;;) {	 if (yyStateStackPtr >= yyEndOfStack) {	    unsigned long yyyStateStackPtr = yyStateStackPtr - yyStateStack;	    unsigned long yyyAttrStackPtr = yyAttrStackPtr - yyAttributeStack;	    ExtendArray ((char * *) & yyStateStack, & yyStateStackSize,			     (unsigned long) sizeof (yyStateRange));	    ExtendArray ((char * *) & yyAttributeStack, & yyAttrStackSize,			     (unsigned long) sizeof (tParsAttribute));	    yyStateStackPtr	= yyStateStack + yyyStateStackPtr;	    yyAttrStackPtr	= yyAttributeStack + yyyAttrStackPtr;	    yyEndOfStack	= & yyStateStack [yyStateStackSize - 1];#ifdef YYDEBUG	    if (Parser_Debug) {	       yyPrintState (yyState);	       (void) fprintf (yyTrace, "extend  stack from %ld to %ld",		  yyStateStackSize / 2, yyStateStackSize); yyNl ();	    }#endif	 }	 * yyStateStackPtr = yyState;   yyTermTrans:	 for (;;) { /* SPEC State = Next (State, Terminal); terminal transit */	    register yytComb * yyTCombPtr = yyTBasePtr [yyState] + yyTerminal;#if defined YYTDefault & defined YYaccDefault	    register unsigned long * yylp;#endif	    if (yyTCombPtr->Check == yyState) {	       yyState = yyTCombPtr->Next; break;	    }#ifdef YYTDefault#ifdef YYaccDefault	    if ((yylp = yyDefaultLook [yyState]) &&	       (yylp [yyTerminal >> 5] >> (yyTerminal & 0x1f)) & 1) {	       yyState = yyTDefault [yyState]; break;	    }#else	    if ((yyState = yyTDefault [yyState]) != yyNoState) goto yyTermTrans;#endif#endif							/* syntax error */	    if (! yyIsRepairing) {			/* report and recover */	       yySymbolRange yyyTerminal = (yySymbolRange) yyTerminal;#ifdef YYTrialParse	       if (yyControl.yyMode == yytrial) YYABORT;#endif	       MY_ERROR#ifndef NO_RECOVER	       yyErrorCount ++;	       yyErrorRecovery (& yyyTerminal, yyStateStack,				yyStateStackPtr - yyStateStack);	       yyTerminal = yyyTerminal;	       yyIsRepairing = rtrue;#else	       YYABORT;#endif	    }#ifndef NO_RECOVER	    yyState = * yyStateStackPtr;	    for (;;) {	       yySymbolRange	yyRepairToken;	       tScanAttribute	yyRepairAttribute;	       yyStateRange	yyNextState =	          yyNext (yyState, (yySymbolRange) yyTerminal);	       if (yyNextState != yyNoState &&	/* read or read reduce ? */		   yyNextState <= yyLastReadReduceState) {		  yyState = yyNextState;	/* restart point reached */		  yyIsRepairing = rfalse;	/* stop error recovery */		  goto yyFinal;	       }	       yyRepairToken = yyContinuation [yyState];	/* repair */	       yyState = yyNext (yyState, yyRepairToken);	       if (yyState > yyLastReduceState) {		/* dynamic ? */		  yyState = yyCondition [yyState - yyLastReduceState];	       }	       if (yyState <= yyLastReadReduceState) {						/* read or read reduce ? */		  ErrorAttribute ((int) yyRepairToken,					& yyRepairAttribute);		  if (yyControl.yyMessages)		     ErrorMessageI (xxTokenInserted, xxRepair,			Attribute.Position, xxString,			yyGetTokenName (yyRepairToken));#ifdef YYDEBUG		  if (Parser_Debug) {		     yyPrintState (* yyStateStackPtr);		     (void) fprintf (yyTrace, "insert  %s",			yyGetTokenName (yyRepairToken)); yyNl ();		     yyPrintState (* yyStateStackPtr);		     (void) fprintf (yyTrace, "shift   %s, lookahead: %s",			yyGetTokenName (yyRepairToken),			yyGetTokenName (yyTerminal)); yyNl ();		  }#endif		  if (yyState >= yyFirstFinalState) { /* avoid second push */		     yyState =			yyFinalToProd [yyState - yyFirstReadReduceState];		  }		  yyGetAttribute (yyAttrStackPtr ++, yyRepairAttribute);		  * ++ yyStateStackPtr = yyState;	       }	       if (yyState >= yyFirstFinalState) goto yyFinal;							/* final state ? */	    }#endif	 }   yyFinal:	 if (yyState >= yyFirstFinalState) {		/* final state ? */	    if (yyState <= yyLastReadReduceState) {	/* read reduce ? */	       yyStateStackPtr ++;	       yyGetAttribute (yyAttrStackPtr ++, Attribute);	       yyTerminal = yyGetToken ();#ifdef YYDEBUG	       if (Parser_Debug) {		  yyStateStackPtr [0] = yyStateStackPtr [-1];		  yyPrintState (* yyStateStackPtr);		  (void) fprintf (yyTrace, "shift   %s, lookahead: %s",		     yyGetTokenName (yyPrevTerminal),		     yyGetTokenName (yyTerminal)); yyNl ();		  yyPrevTerminal = yyTerminal;	       }#endif	       yyIsRepairing = rfalse;	    }	    for (;;) {	       register yytNonterminal yyNonterminal;	/* left-hand side */   yyReduce:#ifdef YYDEBUG	       if (Parser_Debug) {		  if (yyState <= yyLastReadReduceState)	/* read reduce ? */		     yyState = yyFinalToProd [yyState - yyFirstReadReduceState];		  yyPrintState (* yyStateStackPtr);		  if (yyState <= yyLastReduceState) {		     (void) fprintf (yyTrace, "reduce  %s",			yyRule [yyState - yyLastReadReduceState]); yyNl ();		  } else {		     (void) fprintf (yyTrace, "dynamic decision %d",			yyState - yyLastReduceState); yyNl ();		  }	       }#endif#ifdef YYDEC_TABLE	       if (yyLastStopState < yyState && yyState <= yyLastReduceState) {		  register int yyd = yyLength [yyState - yyFirstReduceState];		  yyStateStackPtr -= yyd;		  yyAttrStackPtr  -= yyd;		  yyNonterminal = yyLeftHandSide [yyState - yyFirstReduceState];	       }#endifswitch (yyState) {case 65:YYACCEPT;case 66: yyDecrement (1) yySetNT (yyNTprogram) {/* line 198 "Parser.lrk" */ ;{  TreeRoot = mprogram (yyA [0].statements.tree); } ;} break;case 67: yySetNT (yyNTstatements) {/* line 201 "Parser.lrk" */ yyS.statements.tree = dnostmt; ;} break;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -