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

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

??

?? c_c++技巧集.zip
??
字號:
作者:skyhorsebj
email: XUEY@CIDC.COM.CN
日期:2001-7-3 12:41:52


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

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

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

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

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

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

[程序調(diào)試]

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

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

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

結(jié)果完全正確。

源程序: 
#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");
	 };
      }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
wwwwxxxxx欧美| 国产在线精品免费av| 91国产免费观看| 亚洲黄色尤物视频| 欧美少妇xxx| 天天av天天翘天天综合网| 在线看不卡av| 精品一区二区三区视频在线观看| 欧美在线小视频| 天天综合天天做天天综合| 91精品久久久久久久久99蜜臂| 石原莉奈在线亚洲二区| 日韩一级精品视频在线观看| 免费人成在线不卡| 久久久久国产精品免费免费搜索| 麻豆精品久久久| 亚洲欧美在线aaa| 欧美日韩国产中文| 精品一区二区三区在线观看| 国产午夜精品一区二区| 欧美性色aⅴ视频一区日韩精品| 久久99国产精品久久| 中文字幕字幕中文在线中不卡视频| 欧美老女人第四色| www.日韩av| 青草av.久久免费一区| 久久综合一区二区| 欧洲一区在线电影| 国产精品亚洲а∨天堂免在线| 亚洲美女在线一区| 日韩美女在线视频| 91麻豆国产自产在线观看| 美腿丝袜亚洲三区| 亚洲精品成人少妇| 亚洲国产精品99久久久久久久久 | 欧美国产乱子伦| 日本精品视频一区二区| 久久精品国产精品亚洲精品| 亚洲精品成a人| 久久狠狠亚洲综合| 99riav久久精品riav| 欧美午夜精品久久久| 日韩免费一区二区| 精品免费国产一区二区三区四区| 91精品国产丝袜白色高跟鞋| 欧美一区二区三区爱爱| 欧美一级片在线看| 欧美va日韩va| 亚洲国产精品成人综合| 亚洲一区免费视频| 美腿丝袜在线亚洲一区| 久久99国产精品久久| 久久精品国产一区二区三区免费看| 日韩av不卡在线观看| 国精产品一区一区三区mba视频| 紧缚捆绑精品一区二区| 成人一二三区视频| 欧美性极品少妇| 日韩欧美一二三| 亚洲超碰97人人做人人爱| 久久综合九色综合欧美就去吻| 久久久久久久久久看片| 99精品国产视频| 白白色 亚洲乱淫| 日韩一区二区三区免费看| 亚洲天堂成人在线观看| 精品一区二区三区在线观看国产| 91激情在线视频| 最新成人av在线| 国产精品亚洲成人| 精品国产91亚洲一区二区三区婷婷| 国产精品久久久久永久免费观看| 日韩一区二区视频| 99riav一区二区三区| 亚洲一区二区三区四区的| 欧美不卡一区二区| 精品久久一二三区| 国产一区二区三区观看| 精品亚洲porn| 国产精一区二区三区| 精品亚洲国产成人av制服丝袜 | 日韩毛片在线免费观看| 欧美mv和日韩mv国产网站| 制服丝袜激情欧洲亚洲| 欧美日韩欧美一区二区| 色久优优欧美色久优优| 欧美性大战久久久久久久蜜臀| 91最新地址在线播放| 六月婷婷色综合| 日韩精品1区2区3区| 捆绑调教一区二区三区| 国产aⅴ精品一区二区三区色成熟| 老司机免费视频一区二区三区| 99精品一区二区三区| 丁香激情综合国产| 精品日韩一区二区三区| 久久影音资源网| 日韩视频不卡中文| 精品国产乱码久久久久久影片| 国产精品系列在线播放| www.欧美精品一二区| 日韩视频在线一区二区| 成人免费视频免费观看| 国产欧美精品一区二区三区四区 | 欧美一二三区精品| 欧美精品一区二区三区视频| 日本一区二区电影| 亚洲综合色丁香婷婷六月图片| 国产一区二区三区视频在线播放 | 欧美日韩国产综合久久| 91官网在线观看| 精品日韩在线观看| 丝瓜av网站精品一区二区| 国产乱码精品一区二区三区忘忧草 | 99视频超级精品| 99久久精品免费看国产免费软件| 欧美丝袜丝交足nylons| 国产亚洲欧美日韩俺去了| 亚洲成av人片在线观看无码| 成人免费视频一区二区| 欧美一区二区三区小说| 伊人婷婷欧美激情| 一本一道综合狠狠老| 久久精品视频一区二区| 久久99热这里只有精品| 欧美日韩国产片| 亚洲精选视频在线| 日韩欧美成人一区二区| 亚洲一二三级电影| 国产欧美精品在线观看| 东方欧美亚洲色图在线| 欧美男同性恋视频网站| 精品国产乱码久久久久久老虎 | 欧美电影免费观看高清完整版在 | 日本一区二区视频在线观看| 久久国产综合精品| 欧美优质美女网站| 欧美成人性福生活免费看| 蜜桃视频在线一区| 欧美精品一卡二卡| 日韩精品久久久久久| 欧美少妇一区二区| 欧美一级搡bbbb搡bbbb| 日韩中文字幕一区二区三区| 欧美另类变人与禽xxxxx| 蜜臀久久99精品久久久久久9 | 日韩精品一区二| 午夜久久电影网| 久久尤物电影视频在线观看| 国产成人综合网| 一级精品视频在线观看宜春院| 91麻豆免费看片| 日韩 欧美一区二区三区| 精品毛片乱码1区2区3区| 国产一区在线看| 亚洲欧美一区二区不卡| 日韩一区二区三区视频在线 | av影院午夜一区| 亚洲欧美激情在线| 久久精品亚洲精品国产欧美 | 久久先锋资源网| a4yy欧美一区二区三区| 三级久久三级久久| 国产午夜精品久久| av电影天堂一区二区在线| 欧美亚洲另类激情小说| 丝袜美腿亚洲色图| 丁香六月久久综合狠狠色| 日本va欧美va瓶| 亚洲欧美综合网| 日韩欧美色综合网站| 色婷婷激情一区二区三区| 国产乱码精品1区2区3区| 激情图片小说一区| 久久久噜噜噜久久人人看 | 丝袜诱惑亚洲看片| 日韩一区二区在线播放| 成人丝袜高跟foot| 一区二区三区鲁丝不卡| 欧美不卡一区二区三区| 成人性生交大片免费| 五月天国产精品| 91网上在线视频| 欧美亚洲精品一区| 欧美在线观看一区| 欧美日本在线播放| 欧美午夜精品电影| 欧美日韩一区不卡| 精品视频一区二区三区免费| av不卡一区二区三区| 国产91精品在线观看| 高清成人在线观看| 91国偷自产一区二区开放时间 | 欧美精品第1页| 日韩欧美国产wwwww| 日韩欧美www| 亚洲宅男天堂在线观看无病毒| 日韩三级在线观看| 欧美不卡在线视频| 亚洲国产精品成人久久综合一区|