亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? scanner.cpp

?? 學(xué)習(xí)編譯原理
?? CPP
?? 第 1 頁 / 共 2 頁
字號:

			      /* 當(dāng)前字符c為"=",當(dāng)前識別單詞返回值currentToken設(shè)置為等號單詞EQ */
                   case '=':
                   currentToken.Lex = EQ;
                   break;

			      /* 當(dāng)前字符c為"<",當(dāng)前識別單詞返回值currentToken設(shè)置為小于單詞LT */
                   case '<':
                   currentToken.Lex = LT;
                   break;

			      /* 當(dāng)前字符c為"+",當(dāng)前識別單詞返回值currentToken設(shè)置為加號單詞PLUS */
                   case '+':
                   currentToken.Lex = PLUS;
                   break;

			      /* 當(dāng)前字符c為"-",當(dāng)前識別單詞返回值currentToken設(shè)置為減號單詞MINUS */
                   case '-':
                   currentToken.Lex = MINUS;
                   break;

		       	 /* 當(dāng)前字符c為"*",當(dāng)前識別單詞返回值currentToken設(shè)置為乘號單詞TIMES */
                   case '*':
                   currentToken.Lex = TIMES;
                   break;
   
		     	 /* 當(dāng)前字符c為"/",當(dāng)前識別單詞返回值currentToken設(shè)置為除號單詞OVER */
                   case '/':
                   currentToken.Lex = OVER;
                   break;
  
			     /* 當(dāng)前字符c為"(",當(dāng)前識別單詞返回值currentToken設(shè)置為左括號單詞LPAREN */
                   case '(':
                   currentToken.Lex = LPAREN;
                   break;

			     /* 當(dāng)前字符c為")",當(dāng)前識別單詞返回值currentToken設(shè)置為右括號單詞RPAREN */
                   case ')':
                   currentToken.Lex = RPAREN;
                   break;

			    /* 當(dāng)前字符c為";",當(dāng)前識別單詞返回值currentToken設(shè)置為分號單詞SEMI */
                   case ';':
                   currentToken.Lex = SEMI;
                   break;
   	    	    /* 當(dāng)前字符c為",",當(dāng)前識別單詞返回值currentToken設(shè)置為逗號單詞COMMA */
 			       case ',':
			       currentToken.Lex = COMMA;
                   break;     		 
		        /* 當(dāng)前字符c為"[",當(dāng)前識別單詞返回值currentToken設(shè)置為左中括號單詞LMIDPAREN */
		           case '[':
			       currentToken.Lex = LMIDPAREN;
			       break;
    		 
			    /* 當(dāng)前字符c為"]",當(dāng)前識別單詞返回值currentToken設(shè)置為右中括號單詞RMIDPAREN */
			       case ']':
			       currentToken.Lex = RMIDPAREN;
			       break;
    
			    /* 當(dāng)前字符c為其它字符,當(dāng)前識別單詞返回值currentToken設(shè)置為錯誤單詞ERROR */
                   default:
                   currentToken.Lex = ERROR;
				   Error = TRUE;
                   break;
           }
         }
         break;						
	   /********** 當(dāng)前狀態(tài)為開始狀態(tài)START的處理結(jié)束 **********/

	   /* 當(dāng)前DFA狀態(tài)state為注釋狀態(tài)INCOMMENT,確定性有限自動機(jī)DFA處于注釋位置 */
       case INCOMMENT:

		 /* 當(dāng)前字符存儲狀態(tài)save設(shè)置為FALSE,注釋中內(nèi)容不生成單詞,無需存儲 */
         save = FALSE;				

		 /* 當(dāng)前字符c為EOF,當(dāng)前DFA狀態(tài)state設(shè)置為完成狀態(tài)DONE,當(dāng)前單詞識別結(jié)束 *
		  * 當(dāng)前識別單詞返回值currentToken設(shè)置為文件結(jié)束單詞ENDFILE            */
         if (c == EOF)			
         { state = DONE;
           currentToken.Lex = ENDFILE;

         }

		 /* 當(dāng)前字符c為"}",注釋結(jié)束.當(dāng)前DFA狀態(tài)state設(shè)置為開始狀態(tài)START */
         else if (c == '}') state = START;
         break;

	   /* 當(dāng)前DFA狀態(tài)state為賦值狀態(tài)INASSIGN,確定性有限自動機(jī)DFA處于賦值單詞位置 */
       case INASSIGN:				

		 /* 當(dāng)前DFA狀態(tài)state設(shè)置為完成狀態(tài)DONE,賦值單詞結(jié)束 */
         state = DONE;				

		 /* 當(dāng)前字符c為"=",當(dāng)前識別單詞返回值currentToken設(shè)置為賦值單詞ASSIGN */
		 if (c == '=')
           currentToken.Lex = ASSIGN;

		 /* 當(dāng)前字符c為其它字符,即":"后不是"=",在輸入行緩沖區(qū)中回退一個字符       *
		  * 字符存儲狀態(tài)save設(shè)置為FALSE,當(dāng)前識別單詞返回值currentToken設(shè)置為ERROR */
         else
         { 
           ungetNextChar();
           save = FALSE;
           currentToken.Lex = ERROR;
		   Error = TRUE;
         }
         break;
        
	   case INRANGE:				

		 /* 當(dāng)前DFA狀態(tài)state設(shè)置為完成狀態(tài)DONE,賦值單詞結(jié)束 */
         state = DONE;				

		 /* 當(dāng)前字符c為".",當(dāng)前識別單詞返回值currentToken設(shè)置為下標(biāo)界UNDERANGE */
		 if (c == '.')
           currentToken.Lex = UNDERANGE;

		 /* 當(dāng)前字符c為其它字符,即"."后不是".",在輸入行緩沖區(qū)中回退一個字符       *
		  * 字符存儲狀態(tài)save設(shè)置為FALSE,當(dāng)前識別單詞返回值currentToken設(shè)置為ERROR */
         else
         { 
           ungetNextChar();
           save = FALSE;
           currentToken.Lex = DOT;
         }
         break;
 
	   /* 當(dāng)前DFA狀態(tài)state為數(shù)字狀態(tài)INNUM,確定性有限自動機(jī)處于數(shù)字單詞位置 */
    case INNUM:					

		 /* 當(dāng)前字符c不是數(shù)字,則在輸入行緩沖區(qū)源中回退一個字符					*
		  * 字符存儲標(biāo)志設(shè)置為FALSE,當(dāng)前DFA狀態(tài)state設(shè)置為DONE,數(shù)字單詞識別完成 *
		  * 當(dāng)前識別單詞返回值currentToken設(shè)置為數(shù)字單詞NUM                     */
         if (!isdigit(c))
         { 
           ungetNextChar();
           save = FALSE;
           state = DONE;
           currentToken.Lex = INTC;
         }
         break;
    	/*當(dāng)前DFA狀態(tài)state為字符標(biāo)志狀態(tài)INCHAR,確定有限自動機(jī)處于字符標(biāo)志狀態(tài)*/
    case INCHAR:					

         if (isalnum(c))
        
		 { int c1=getNextChar();
            if (c1 =='\'')
			{ save = TRUE;
			  state = DONE;
			  currentToken.Lex = CHARC;
			}
		    else 
			{	ungetNextChar();
                ungetNextChar();
                state = DONE;
                currentToken.Lex = ERROR;
				Error = TRUE;
			}
		 }
		 else
		 {      ungetNextChar();
                state = DONE;
                currentToken.Lex = ERROR;
				Error = TRUE;
		 }
		 break;
   /* 當(dāng)前DFA狀態(tài)state為標(biāo)識符狀態(tài)INID,確定性有限自動機(jī)DFA處于標(biāo)識符單詞位置 */
       case INID:					

		 /* 當(dāng)前字符c不是字母,則在輸入行緩沖區(qū)源中回退一個字符		 			  *
		  * 字符存儲標(biāo)志設(shè)置為FALSE,當(dāng)前DFA狀態(tài)state設(shè)置為DONE,標(biāo)識符單詞識別完成 *
		  * 當(dāng)前識別單詞返回值currentToken設(shè)置為標(biāo)識符單詞ID                      */
         if (!isalnum(c))
         { 
           ungetNextChar();
           save = FALSE;
           state = DONE;
           currentToken.Lex = ID;
         }
         break;

	   /* 當(dāng)前DFA狀態(tài)state為完成狀態(tài)DONE,確定性有限自動機(jī)DFA處于單詞結(jié)束位置 */
       case DONE:	break;	

	   /* 當(dāng)前DFA狀態(tài)state為其它狀態(tài),此種情況不應(yīng)發(fā)生 */
       default: 

		 /* 將詞法掃描器產(chǎn)生錯誤的狀態(tài)state寫入列表文件listing	*
		  * 當(dāng)前DFA狀態(tài)state設(shè)置為完成狀態(tài)DONE					*
		  * 當(dāng)前識別單詞返回值currentToken設(shè)置為錯誤單詞ERROR	*/
         fprintf(listing,"Scanner Bug: state= %d\n",state);
		 Error = TRUE;
         state = DONE;
         currentToken.Lex = ERROR;
         break;

     }
	 /*************** 分類判斷處理結(jié)束 *******************/

	 /* 當(dāng)前字符存儲狀態(tài)save為TRUE,且當(dāng)前正識別單詞已經(jīng)識別部分未超過單詞最大長度 *
	  * 將當(dāng)前字符c寫入當(dāng)前正識別單詞詞元存儲區(qū)tokenString						  */
     if ((save) && (tokenStringIndex <= MAXTOKENLEN))
       tokenString[tokenStringIndex++] = (char) c;

	 if (state == DONE)
     {
	   /* 當(dāng)前DFA狀態(tài)state為完成狀態(tài)DONE,單詞識別完成   *
	    * 當(dāng)前識別單詞詞元存儲區(qū)tokenString加上結(jié)束標(biāo)志 */
	   tokenString[tokenStringIndex] = '\0';

	   /* 當(dāng)前單詞currentToken為標(biāo)識符單詞類型,查看其是否為保留字單詞 */
       if (currentToken.Lex == ID)
	   { 
		   currentToken.Lex = reservedLookup(tokenString);
		   if (currentToken.Lex != ID)
			 strcpy(tokenString,tokenString);
       }
     }
   }
   /**************** 循環(huán)處理結(jié)束 ********************/
   /*將行號信息存入Token*/
   currentToken.lineshow = lineno;
   /*將單詞的語義信息存入Token*/
   strcpy(currentToken.Sem , tokenString); 

  /*將已處理完的當(dāng)前Token存入鏈表的Token部分*/
    ((*currentNode).Token).lineshow=currentToken.lineshow;
   	((*currentNode).Token).Lex=currentToken.Lex;
	strcpy(((*currentNode).Token).Sem,currentToken.Sem);
 
     Tokennum++;   /*Token總數(shù)目加1*/
  
     /*若不是第一個結(jié)點(diǎn),則將當(dāng)前結(jié)點(diǎn)連入鏈表*/ 
	 if (preNode!=currentNode)
	    { 
		   preNode->nextToken=currentNode;
           preNode=currentNode;
	    }   
   /*申請一個新的結(jié)點(diǎn),以記錄下一個Token的信息*/
	 currentNode=(ChainNodeType *)malloc(CHAINNODELEN);
   /*初始化這個結(jié)點(diǎn)中,指向下一個結(jié)點(diǎn)的指針為空*/ 
	 currentNode->nextToken=NULL;
 }
/* 直到處理完表示文件結(jié)束的Token:ENDFILE,說明處理完所有的Token*/
/* 并存入了鏈表中,循環(huán)結(jié)束*/
while ((currentToken.Lex)!=ENDFILE);
 /*將由chainHead指向的Token鏈表存入文件"Tokenlist"中*/
 ChainToFile(chainHead);

 /*釋放鏈表*/
while (chainHead!=NULL)
 { 
	tempNode=chainHead->nextToken;
    free(chainHead);  
    chainHead=tempNode; 
 }

}
/* 詞法分析函數(shù)結(jié)束 */









?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久色中文字幕| 色悠久久久久综合欧美99| 国产精品性做久久久久久| 波多野结衣中文字幕一区 | 欧美日韩亚洲综合| 欧美一区二区三区在线视频| 精品国产伦一区二区三区观看方式 | 自拍偷拍亚洲综合| 视频一区二区三区入口| 国产在线看一区| 色国产综合视频| 日韩欧美色综合网站| 日韩1区2区日韩1区2区| 成人h精品动漫一区二区三区| 欧美色视频在线观看| 久久精品夜色噜噜亚洲a∨| 亚洲精品久久7777| 美日韩一级片在线观看| 91丨porny丨国产入口| 日韩一区二区免费高清| 一区在线播放视频| 久久99久久99小草精品免视看| 99在线精品视频| 日韩午夜激情免费电影| 成人免费在线播放视频| 美女视频黄 久久| 色综合中文字幕| 久久久精品影视| 午夜精品福利在线| 99精品久久99久久久久| 精品国产免费一区二区三区四区| 亚洲精品中文字幕乱码三区 | 91精品国产手机| 亚洲欧美日韩国产手机在线| 精品亚洲欧美一区| 欧美性大战久久久久久久| 久久精品一区四区| 免费看欧美女人艹b| 色天天综合久久久久综合片| 久久品道一品道久久精品| 香港成人在线视频| 在线观看欧美日本| 亚洲视频在线观看一区| 国产麻豆成人精品| 欧美一区二区视频网站| 一个色综合av| 色综合咪咪久久| 国产精品卡一卡二| 国产在线精品免费av| 51午夜精品国产| 亚洲国产一区在线观看| 99re这里只有精品6| 欧美国产一区二区| 国产在线视频不卡二| 欧美mv日韩mv国产网站| 青草av.久久免费一区| 欧美日韩免费电影| 一区二区高清在线| 色吊一区二区三区| 亚洲色图清纯唯美| k8久久久一区二区三区 | 91视频一区二区| 久久久国产精品麻豆| 国产在线看一区| 欧美精品一区二区三区四区| 麻豆91免费观看| 日韩欧美在线不卡| 美女久久久精品| 日韩一区二区精品在线观看| 午夜私人影院久久久久| 欧美久久一二区| 日韩激情视频在线观看| 日韩午夜精品视频| 狠狠网亚洲精品| 久久蜜桃av一区二区天堂| 国产精品一卡二卡在线观看| 久久网这里都是精品| 国产精品原创巨作av| 国产视频一区不卡| 国产成人在线视频免费播放| 久久亚洲一级片| 国产suv精品一区二区三区| 国产欧美日韩卡一| 99re热这里只有精品视频| 亚洲欧美日韩国产另类专区 | 香蕉久久夜色精品国产使用方法 | 亚洲国产人成综合网站| 欧美日韩国产精品自在自线| 天堂成人国产精品一区| 精品国产一区二区三区不卡| 国产一区二区美女| 国产精品美女久久久久久久久久久| zzijzzij亚洲日本少妇熟睡| 亚洲精品水蜜桃| 欧美美女一区二区三区| 久久国产精品免费| 中文字幕欧美国产| 欧美亚洲一区二区在线| 美女国产一区二区三区| 国产精品丝袜久久久久久app| 91亚洲精品一区二区乱码| 亚洲国产视频在线| 久久影院视频免费| 99久久国产免费看| 亚洲成人精品影院| 久久久久久久久久久电影| 91丨porny丨中文| 日本成人在线不卡视频| 久久影音资源网| 在线这里只有精品| 国内精品第一页| 亚洲精品国久久99热| 欧美一级片在线观看| 成人久久18免费网站麻豆| 一区二区在线免费| 精品美女一区二区三区| 99r国产精品| 蜜桃视频一区二区三区| 中文字幕一区二区三区在线观看| 欧美日韩一区二区三区四区五区 | 国产欧美一区二区精品性色超碰| 99精品在线免费| 日韩av二区在线播放| 亚洲欧洲精品天堂一级 | 美女国产一区二区| 成人欧美一区二区三区黑人麻豆| 在线播放国产精品二区一二区四区| 国产美女在线观看一区| 夜夜精品视频一区二区| 国产日韩精品视频一区| 欧美精品一级二级| 99精品偷自拍| 精品一区二区精品| 一区二区三区在线免费播放| 久久久精品免费观看| 91麻豆精品久久久久蜜臀| 99精品久久免费看蜜臀剧情介绍| 麻豆一区二区99久久久久| 亚洲综合小说图片| 国产欧美一区在线| 日韩美女视频在线| 欧美视频第二页| 99在线精品视频| 国产高清亚洲一区| 免费观看成人av| 亚洲va欧美va天堂v国产综合| 国产精品毛片无遮挡高清| 精品国产一区二区亚洲人成毛片| 欧美酷刑日本凌虐凌虐| 91成人在线免费观看| 国产99久久久国产精品免费看 | 欧美成人a∨高清免费观看| 日本道免费精品一区二区三区| 国产成人在线视频网址| 韩国欧美一区二区| 麻豆91精品91久久久的内涵| 亚洲丰满少妇videoshd| 一区二区三区免费| 国产精品久久久久久久久免费樱桃 | 一区二区三区欧美视频| 国产人伦精品一区二区| 久久久久亚洲综合| 欧美一区二区三区在线观看视频| 在线免费一区三区| 91在线看国产| 91免费看`日韩一区二区| 成人av网站大全| 成人精品鲁一区一区二区| 国产在线精品免费| 精品一二三四区| 韩国女主播成人在线观看| 久久99精品国产91久久来源| 日韩电影在线免费观看| 亚洲成av人综合在线观看| 亚洲国产日韩精品| 午夜精品免费在线观看| 亚洲国产你懂的| 亚洲国产精品久久人人爱| 亚洲精品va在线观看| 亚洲另类在线制服丝袜| 亚洲女同女同女同女同女同69| 国产精品久久久久久久久图文区| 国产精品婷婷午夜在线观看| 国产精品视频免费| 中文字幕亚洲一区二区av在线 | 91国产精品成人| 欧美在线制服丝袜| 欧美日韩黄色影视| 69久久99精品久久久久婷婷| 欧美猛男超大videosgay| 欧美福利视频一区| 日韩视频免费观看高清完整版| 欧美成人艳星乳罩| 精品三级在线看| 欧美变态口味重另类| 久久综合五月天婷婷伊人| 国产欧美一区二区精品忘忧草 | 国产不卡免费视频| 91蜜桃在线免费视频| 欧美绝品在线观看成人午夜影视|