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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 詞法分析的c實現(做編譯器的時候很有用).txt

?? C++技巧集合 此集合包含很多關于C++變成的技巧,是一個非常不錯的資料集合
?? TXT
字號:
作者:skyhorsebj
email: XUEY@CIDC.COM.CN
日期:2001-7-3 12:41:52


    這里以開始定義的PASCAL語言子集的源程序作為詞法分析程序的輸入數據。
在詞法分析中,自文件頭開始掃描源程序字符,一旦發現符合"單詞"定義的源程
序字符串時,將它翻譯成固定長度的單詞內部表示,并查填適當的信息表。經過
詞法分析后,源程序字符串(源程序的外部表示)被翻譯成具有等長信息的單詞
串(源程序的內部表示),并產生兩個表格:常數表和標識符表,它們分別包含
了源程序中的所有常數和所有標識符。

下面就詞法分析程序中的主要變量進行說明:
    FILE fp     :文件指針,用于指向要分析的PASCAL源程序;
    char *key[8]:指針數組,用于指向關鍵字表;
        char *border[6]:指針數組,用于指向符號表;
    char *arithmetic[4]:指針數組,指向算術運算符表;
    char *relation[6]:指針數組,指向關系運算符表;
    char *consts[20]:指針數組,指向常數表;
    char *label[20]:指針數組,指向標識符表;
        int constnum,labelnum:整型變量,分別用于存放當前常數個數和標
識符個數。

程序中的主要子函數:
alphaprocess:關鍵字和標識符處理子函數;
digitprocess:數字處理函數;
otherprocess:其他字符處理函數;
search:查找子函數;

下面簡要分析一下詞法分析程序的運行流程:

主函數main():
     打開要分析的PASCAL源程序,若不能正確打開,則報錯。
   先從源程序中讀入一個字符ch,然后進行如下處理:
   1、ch是字符:轉入關鍵字和標識符處理子函數;
   2、ch是數字:轉入數字處理函數;
   3、ch是其他字符:轉入其他字符處理子函數;
    結束。

關鍵字和標識符處理子函數alphaprocess(char buffer);
        1、將buffer送入臨時數組alphatp[0],再讀入一個字符至buffer;
        2、判斷buffer是否為字符或數字,若是,則alphatp[1]=buffer;
        3、重復1,2,直到2判斷為假;在alphatp末尾添加'\0';
        4、調用search()子函數,在關鍵字表中匹配alphatp,若匹配成功,則返回序號;
    5、調用search,在標識符表中匹配alphatp,若匹配成功,則返回序號;
    6、在標識符表中添加alphatp,并返回序號;
        
其余子函數的處理方式于alphaprocess類似,此處不再贅述。

[程序調試]

現有PASCAL程序清單如下:
BEGIN 
  IF I=1 THEN
     I:=I+1  #
  ELSE   *&^
     IF I=2 THEN
        I:=I+11;
END.

運行詞法分析程序后,顯示如下結果:

BEGIN (1,1)
IF (1,4)
I (6,0)
= (4,2)
1 (5,0)
THEN (1,5)
I (6,0)
:= (2,2)
I (6,0)
+ (3,0)
1 (5,0)
# error,not a word
ELSE (1,2)
* (3,2)
& error,not a word
^ error,not a word
IF (1,4)
I (6,0)
= (4,2)
2 (5,1)
THEN (1,5)
I (6,0)
:= (2,2)
I (6,0)
+ (3,0)
11 (5,2)
; (2,1)
END (1,3)
. (2,3)
over

結果完全正確。

源程序: 
#include 
#include 
#include 
#include 
#include 
#define NULL 0

FILE *fp;
char cbuffer;
char *key[8]={"DO","BEGIN","ELSE","END","IF","THEN","VAR","WHILE"};
char *border[6]={",",";",":=",".","(",")"};
char *arithmetic[4]={"+","-","*","/"};
char *relation[6]={"<","<=","=",">",">=","<>"};
char *consts[20];
char *label[20];
int constnum=0,labelnum=0;

int search(char searchchar[],int wordtype)
     {
     int i=0;
     switch (wordtype) {
       case 1:for (i=0;i<=7;i++)
		  {
		   if (strcmp(key[i],searchchar)==0)
		     return(i+1);
		  };

       case 2:{for (i=0;i<=5;i++)
		  {
		   if (strcmp(border[i],searchchar)==0)
		      return(i+1);
		  };
	       return(0);
	      }

       case 3:{for (i=0;i<=3;i++)
		  {
		   if (strcmp(arithmetic[i],searchchar)==0)
		      {
		       return(i+1);
		      };
		  };
	      return(0);
	      };

       case 4:{for (i=0;i<=5;i++)
		  {
		   if (strcmp(relation[i],searchchar)==0)
		      {
		       return(i+1);
		      };
		  };
	       return(0);
	      };

       case 5:{for (i=0;i<=constnum;i++)
		  {
		   if (strcmp(consts[i],searchchar)==0)
		       {
			return(i+1);
		       };
		  }
	      consts[i-1]=(char *)malloc(sizeof(searchchar));
	      strcpy(consts[i-1],searchchar);
	      constnum++;
	      return(i);
	      };

       case 6:{for (i=0;i<=labelnum;i++)
		  {
		     if (strcmp(label[i],searchchar)==0)
		       {
			return(i+1);
		       };
		  }
	      label[i-1]=(char *)malloc(sizeof(searchchar));
	      strcpy(label[i-1],searchchar);
	      labelnum++;
	      return(i);
	      };

      }


     }


char alphaprocess(char buffer)
     {
      int atype;
      int i=-1;
      char alphatp[20];
      while ((isalpha(buffer))||(isdigit(buffer)))
	    {
	    alphatp[++i]=buffer;
	    buffer=fgetc(fp);
	    };
      alphatp[i+1]='\0';
      if (atype=search(alphatp,1))
	 printf("%s (1,%d)\n",alphatp,atype-1);
      else
	 {
	 atype=search(alphatp,6);
	 printf("%s (6,%d)\n",alphatp,atype-1);
	 };
      return(buffer);
      }

char digitprocess(char buffer)
     {
      int i=-1;
      char digittp[20];
      int dtype;
      while ((isdigit(buffer)))
	    {
	    digittp[++i]=buffer;
	    buffer=fgetc(fp);
	    }
      digittp[i+1]='\0';
      dtype=search(digittp,5);
      printf("%s (5,%d)\n",digittp,dtype-1);
      return(buffer);
     }

char otherprocess(char buffer)
     {

      int i=-1;
      char othertp[20];
      int otype,otypetp;
      othertp[0]=buffer;
      othertp[1]='\0';
      if (otype=search(othertp,3))
	 {
	 printf("%s (3,%d)\n",othertp,otype-1);
	 buffer=fgetc(fp);
	 goto out;
	 };

      if (otype=search(othertp,4))
	      {
	      buffer=fgetc(fp);
	      othertp[1]=buffer;
	      othertp[2]='\0';
	      if (otypetp=search(othertp,4))
		 {
		 printf("%s (4,%d)\n",othertp,otypetp-1);
		 goto out;
		 }
	      else
		 othertp[1]='\0';
		 printf("%s (4,%d)\n",othertp,otype-1);
		 goto out;
	      };

      if (buffer==':')
	      {
	      buffer=fgetc(fp);
	      if (buffer=='=')
		 printf(":= (2,2)\n");
		 buffer=fgetc(fp);
		 goto out;
	      }
	   else
	      {
	      if (otype=search(othertp,2))
		 {
		 printf("%s (2,%d)\n",othertp,otype-1);
		 buffer=fgetc(fp);
		 goto out;
		 }
	      };

	  if ((buffer!='\n')&&(buffer!=' '))
		  printf("%c error,not a word\n",buffer);
	  buffer=fgetc(fp);
out:      return(buffer);
     }



void main()
     {
     int i;
      for (i=0;i<=20;i++)
	  {
	   label[i]=NULL;
	   consts[i]=NULL;
	  };
      if ((fp=fopen("\\DEMO.PAS","r"))==NULL)
	 printf("error");
      else
	{
	cbuffer = fgetc(fp);
	while (cbuffer!=EOF)
	 {
	  if (isalpha(cbuffer))
	     cbuffer=alphaprocess(cbuffer);
	  else if (isdigit(cbuffer))
	     cbuffer=digitprocess(cbuffer);
	  else cbuffer=otherprocess(cbuffer);
	  };
	 printf("over\n");
	 };
      }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产91高潮流白浆在线麻豆| 国产欧美日本一区视频| 欧美一级国产精品| 精品久久久久久久一区二区蜜臀| 日本一区二区视频在线| 亚洲精品写真福利| 视频一区视频二区中文字幕| 国产在线麻豆精品观看| 不卡一区二区三区四区| 精品视频一区二区三区免费| 精品国产三级电影在线观看| 中文字幕一区二区三区四区| 丝袜美腿高跟呻吟高潮一区| 国产激情91久久精品导航| 在线观看av一区二区| 欧美成人精品福利| 亚洲乱码日产精品bd| 蜜桃视频一区二区三区 | 91精品国产综合久久久蜜臀图片 | 成人av片在线观看| 欧美日本国产视频| 国产精品色在线| 日韩国产一二三区| 国产99一区视频免费| 欧美日韩国产三级| 国产精品网站导航| 蜜臀av一区二区在线免费观看| 成人av在线播放网站| 欧美一区二区在线不卡| 国产精品久久免费看| 石原莉奈在线亚洲二区| 成人免费视频国产在线观看| 91麻豆精品国产| 亚洲男同性恋视频| 国产乱子伦一区二区三区国色天香| 在线亚洲人成电影网站色www| 精品国产3级a| 日韩精品一级中文字幕精品视频免费观看 | 成人精品国产福利| 欧美电影免费观看完整版| 日韩美女视频19| 经典三级视频一区| 欧美日韩亚洲综合一区二区三区| 在线观看免费一区| 亚洲色大成网站www久久九九| 美日韩一区二区三区| 91麻豆视频网站| 2021中文字幕一区亚洲| 亚洲尤物视频在线| 国产成a人亚洲精| 7777精品伊人久久久大香线蕉完整版| 精品精品国产高清a毛片牛牛| 亚洲色图在线视频| 国产麻豆午夜三级精品| 欧美精品日韩精品| 日韩码欧中文字| 国产精品一区二区在线播放| 欧美日韩精品三区| 国产精品麻豆一区二区| 激情综合网av| 欧美一区二区在线看| 一区二区三区四区亚洲| 风流少妇一区二区| 欧美日韩在线播| 最新中文字幕一区二区三区| 国产九色精品成人porny| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 久久精品日产第一区二区三区高清版| 日本一不卡视频| 欧美优质美女网站| 亚洲美女视频在线观看| 大桥未久av一区二区三区中文| 色偷偷久久一区二区三区| 国产日韩欧美精品一区| 久久综合中文字幕| 欧美三级三级三级爽爽爽| 九九久久精品视频| 一区二区三区在线观看国产 | 国产精品福利av| 成人黄色免费短视频| 亚洲色欲色欲www在线观看| 欧美日韩成人一区二区| 成人免费av资源| 亚洲bt欧美bt精品| 久久久五月婷婷| 欧美日韩成人在线一区| 国产一区二区三区黄视频| 久久久影院官网| 99国产精品久久久久久久久久久| 国产精品对白交换视频| 色久优优欧美色久优优| 麻豆久久久久久| 日韩高清在线电影| 裸体在线国模精品偷拍| 久久99最新地址| 夜夜嗨av一区二区三区| 欧美日韩国产高清一区二区| 亚洲小说欧美激情另类| 精品国产成人系列| 色噜噜狠狠色综合中国| 男男视频亚洲欧美| 国产乱一区二区| 国产精品亚洲а∨天堂免在线| 国产成人一区二区精品非洲| 国产片一区二区| 99热这里都是精品| 亚洲图片另类小说| 91蜜桃传媒精品久久久一区二区 | 亚洲天堂久久久久久久| 91蜜桃传媒精品久久久一区二区| 亚洲日本韩国一区| 欧美在线播放高清精品| 热久久免费视频| 精品国产91亚洲一区二区三区婷婷| 国产老妇另类xxxxx| 国产精品久99| 一级精品视频在线观看宜春院| 国产精品亲子乱子伦xxxx裸| 日韩午夜激情av| 欧美丰满少妇xxxxx高潮对白| 99久久亚洲一区二区三区青草| 国精产品一区一区三区mba桃花| 日韩精品乱码av一区二区| 亚洲女同ⅹxx女同tv| 欧美高清在线精品一区| 日韩视频一区在线观看| 国产香蕉久久精品综合网| 国产日产欧美一区| 黄色小说综合网站| 成人午夜电影网站| 精品电影一区二区三区| 免播放器亚洲一区| 国产精品影音先锋| 欧美区一区二区三区| 国产日产亚洲精品系列| 天堂av在线一区| av网站一区二区三区| 欧美一卡在线观看| 尤物av一区二区| 成人黄动漫网站免费app| 日韩一级完整毛片| 日韩免费视频一区| 亚洲国产视频在线| 欧美日本韩国一区| 男女性色大片免费观看一区二区| 日本韩国欧美国产| 一区二区三区波多野结衣在线观看| 9色porny自拍视频一区二区| 亚洲欧美日韩久久| a4yy欧美一区二区三区| 国产欧美一区二区在线观看| 国产精品羞羞答答xxdd| 久久一二三国产| av综合在线播放| 国产色一区二区| 91一区二区三区在线观看| 一区二区三区高清| 5566中文字幕一区二区电影| 亚洲成人动漫在线免费观看| 欧美性xxxxxxxx| 久久久不卡影院| 日本vs亚洲vs韩国一区三区| 国产一区999| 91精品福利视频| 精品少妇一区二区三区视频免付费| 蜜桃av噜噜一区| 成a人片亚洲日本久久| 91久久精品一区二区三| 欧美经典一区二区三区| 在线亚洲一区观看| 久久99热国产| 亚洲国产视频在线| 欧美极品aⅴ影院| 日韩欧美二区三区| 欧美丰满一区二区免费视频 | 色综合色狠狠综合色| 视频一区二区不卡| 久久夜色精品国产欧美乱极品| 99久久精品国产一区二区三区| 韩国一区二区三区| 日韩在线一二三区| 一区二区三区在线不卡| 国产精品护士白丝一区av| 欧美一二三四区在线| 成人爱爱电影网址| 老汉av免费一区二区三区| 中文字幕一区在线| 久久亚洲一区二区三区四区| 欧美性极品少妇| 国产九色sp调教91| 国产精品一区免费视频| 日韩电影在线免费| 日韩高清国产一区在线| 亚洲人成小说网站色在线| 欧美国产在线观看| 欧美高清在线精品一区| 国产欧美一区二区在线| 精品国产乱码久久久久久蜜臀| 欧美男男青年gay1069videost| 91色|porny|