亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
色偷偷一区二区三区| 51精品视频一区二区三区| 欧美综合视频在线观看| 精品日韩99亚洲| 亚洲国产日韩a在线播放性色| 激情国产一区二区| 欧美色综合天天久久综合精品| 久久精品亚洲精品国产欧美kt∨ | 极品少妇xxxx精品少妇| 91免费看视频| 国产日本亚洲高清| 麻豆精品在线观看| 欧美裸体bbwbbwbbw| 亚洲精品videosex极品| 国产成人综合视频| 日韩午夜激情av| 亚洲国产另类精品专区| jlzzjlzz亚洲日本少妇| 久久一留热品黄| 麻豆91免费观看| 91精品免费在线观看| 亚洲综合一区二区| 色先锋久久av资源部| 国产精品成人免费精品自在线观看| 久久99久久99精品免视看婷婷 | 欧美伦理视频网站| 亚洲一区二区三区四区五区黄| av电影一区二区| 国产精品乱码久久久久久 | 日韩精品电影一区亚洲| 欧美在线不卡视频| 亚洲一级不卡视频| 欧美色图激情小说| 亚洲国产aⅴ成人精品无吗| 91麻豆免费看片| 一级中文字幕一区二区| 在线观看一区二区精品视频| 一区二区三区欧美日韩| 91福利小视频| 午夜视黄欧洲亚洲| 91精品免费在线| 另类欧美日韩国产在线| 欧美精品一区二区高清在线观看| 美女网站色91| 国产日韩欧美高清| 99久久精品免费看国产免费软件| 中文字幕综合网| 欧美亚洲国产bt| 性做久久久久久| 日韩视频一区二区在线观看| 精品亚洲国内自在自线福利| 久久久久久久久久久久久夜| 国产成人免费av在线| 中文字幕一区二区三区乱码在线| 日韩一区二区在线看片| 久久成人18免费观看| 国产亚洲一区二区三区四区| 99久久免费国产| 日韩—二三区免费观看av| 精品国产三级电影在线观看| www.亚洲精品| 亚洲一区二区三区影院| 精品国产乱码久久| 91免费看片在线观看| 蜜臀av一区二区| 国产精品国产自产拍高清av王其| 欧美三级三级三级| 国产美女久久久久| 亚洲一区国产视频| 久久综合色播五月| 欧美在线看片a免费观看| 国产呦萝稀缺另类资源| 亚洲综合在线免费观看| 久久久久久久久久美女| 欧美日韩视频在线观看一区二区三区 | 国产在线看一区| 一区二区三区欧美| 国产午夜一区二区三区| 欧美日韩一区二区欧美激情| 国产成a人亚洲精| 日本成人在线网站| 亚洲色图欧洲色图婷婷| 26uuuu精品一区二区| 国产精品美女久久久久高潮| 欧美顶级少妇做爰| 99久久久免费精品国产一区二区| 麻豆精品在线视频| 一区二区三区免费网站| 国产欧美一区二区精品婷婷| 91精品国产乱码久久蜜臀| 99久久精品免费观看| 国产美女精品在线| 蜜桃av一区二区| 亚洲va国产天堂va久久en| 日韩毛片精品高清免费| 久久久国产综合精品女国产盗摄| 制服丝袜国产精品| 欧美亚洲综合在线| 色88888久久久久久影院按摩 | 久久久美女艺术照精彩视频福利播放| 色久优优欧美色久优优| 成人h动漫精品| 国产精品资源站在线| 日韩精品视频网| 亚洲一区二区在线观看视频 | 26uuu精品一区二区三区四区在线| 欧美日韩国产综合久久 | 一区二区三区在线免费| 中文字幕va一区二区三区| 精品成人一区二区三区| 日韩视频在线观看一区二区| 欧美二区乱c少妇| 欧美日韩一级黄| 欧美日韩三级一区二区| 欧洲中文字幕精品| 91福利视频网站| 欧美色综合影院| 在线91免费看| 欧美一级高清片| 日韩精品综合一本久道在线视频| 欧美福利视频一区| 欧美变态口味重另类| 欧美成人r级一区二区三区| 日韩视频一区二区在线观看| 精品精品欲导航| 国产午夜亚洲精品理论片色戒| 国产亚洲综合色| 中文字幕一区在线| 亚洲欧美另类图片小说| 亚洲自拍欧美精品| 日本aⅴ精品一区二区三区| 美女视频黄a大片欧美| 国模一区二区三区白浆| 成人h版在线观看| 日本韩国欧美国产| 欧美一区二区视频在线观看2022| 日韩精品中文字幕一区| 久久精品人人做人人综合 | 久久久噜噜噜久久人人看| 久久精品视频一区二区三区| 国产精品电影一区二区三区| 有码一区二区三区| 青青草一区二区三区| 国产iv一区二区三区| 在线免费观看日韩欧美| 日韩精品最新网址| 亚洲女女做受ⅹxx高潮| 秋霞av亚洲一区二区三| 丁香婷婷综合激情五月色| 在线亚洲欧美专区二区| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 激情都市一区二区| 91丨porny丨在线| 91麻豆精品国产| 国产精品国产三级国产普通话蜜臀| 亚洲精品菠萝久久久久久久| 极品美女销魂一区二区三区免费| 成人国产精品免费观看动漫| 在线电影欧美成精品| 中文字幕成人av| 美女视频黄 久久| 色狠狠综合天天综合综合| 久久人人97超碰com| 亚洲综合成人在线| 国产成人精品三级| 7777精品伊人久久久大香线蕉经典版下载 | 色综合欧美在线| 精品成人免费观看| 亚洲成a人v欧美综合天堂| 国产成人99久久亚洲综合精品| 欧美日韩高清一区| 亚洲欧美激情视频在线观看一区二区三区 | 亚洲日本免费电影| 韩国欧美国产1区| 欧美精品第1页| 亚洲卡通欧美制服中文| 国产经典欧美精品| 日韩亚洲电影在线| 午夜精品久久久久| 色哟哟在线观看一区二区三区| 国产午夜亚洲精品理论片色戒 | 国产精品 日产精品 欧美精品| 欧美日韩在线亚洲一区蜜芽| 国产精品家庭影院| 国产二区国产一区在线观看| 日韩欧美一区电影| 日韩中文字幕亚洲一区二区va在线| 91免费观看在线| 日韩毛片一二三区| 91在线观看污| 国产精品久久久久久一区二区三区| 加勒比av一区二区| 精品国内片67194| 蜜臀av亚洲一区中文字幕| 在线播放91灌醉迷j高跟美女| 亚洲第一久久影院| 欧美日韩免费一区二区三区| 亚洲成人综合网站| 欧美美女网站色| 免费观看成人鲁鲁鲁鲁鲁视频|