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

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

?? ccc.cpp

?? 詞法分析器
?? CPP
字號:
#include "stdafx.h"
#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#include<iostream>
//****************************************
char * change(char *ps,char *pt);      //處理路徑中的反斜杠問題。因為在字符串中要用\\表示\ 
int  searchkey(char *word,struct key tab[],int n);//關鍵字匹配函數
int  searchsymbol(char c,struct symbol tab[],int n);//符號匹配函數
void getword(char c,FILE * p);
void getnum(char c,FILE * p);
//****************************************
//用到的結構數組:
struct  key{          //關鍵字表
    char*   word;
    int     value;
}
keytab[] = {
         "else",  0, "if",    1,"for",   2, "return",3, "void",  4,
         "while", 5, "auto",  6,"struct",7, "char" , 8, "int"  , 9,
		 "long" , 10,"float" ,11, "double",12," signed", 13, "case",14,
		 "switch",15, "unsigned", 16,"sizeof", 17, "break", 18,"do", 19,
         "short",20, "printf",21 ,"scanf",22,"main",23
};
//*******************************
struct   symbol{        //符號表
      char  c;
      int   value;
}
symboltab[] = {
        '-', 0,  '/', 1,
		'*', 2,  '+', 3,
		'=', 4,  '<', 5,
	    '>', 6,  ';', 7,
		'(', 8,  ',', 9, 
		')', 10, '[', 11,
		']', 12, '{', 13, 
		'}', 14, '"', 15,
		'~', 16,  '|',17,
		'_', 18,  '&',19,
		'%',20 ,  '\\',21,
		'#',22  , ':', 23,
		'.', 24,
};
//*****************************************

//用到的常量
enum{MAX = 50,
     NKEYS = sizeof keytab / sizeof keytab[0],
     NSYMBOL = sizeof symboltab / sizeof symboltab[0]
};
//*****************************************

int flagnum = 0;  //用來防止出現10t這種情況被當作數字處理。這種情況flagnum=1程序報錯
int countnum = 0;
int countid  = 0;  //標識符計數(標識符定義為:以字母開頭的非關鍵字的字符串)
int countfault = 0;
int type[] = {0,1,2,3,4,5};            //詞法分析中的類型  依次為 關鍵字-0,常數-1,標識符-2,算符-3,界符-4, 錯誤顯示-5
char array[MAX];           //存放getword中的字符串,用于字符串類型判斷

//*****************************************

main()
{
 char c;
 int flag;     //判斷搜索函數是否成功返回
 char s[MAX];       //數組s,t用來存放讀取文件的路徑
 char t[2 * MAX];
 char *ps = s;
 char *pt = t;
    FILE * p = NULL;
    printf("輸入你要的文件路徑\n");
 scanf("%s",s);
    p = fopen( change(ps,pt),"r" );     //打開文件
    if( p == NULL ){                   //如果輸入的文件路徑不對或文件不存在,報錯
        printf("打開失敗輸入 1 退出\n");
		scanf("%d",&c);
        exit(0);
    }  
 printf("詞  \t (組號,組內類號)\n");
    while( ( c = fgetc(p) ) != EOF )
 {
if ( isspace(c) )       // 如果是空白字符
   continue;
  else if ( isalpha(c) )
                    //如果是字母開頭
        getword(c,p);
               
  else if ( isdigit(c) ){         //如果是數字開頭,判斷是否數字或者錯誤輸入
              getnum(c,p);
			 
       }
  else if ( ispunct(c) ){        //如果是符號
              flag = searchsymbol(c,symboltab,NSYMBOL);
     if ( flag <=6 )
        printf("%c\t(%4d,%5d)\n",c,type[3],flag);     //算符
     else if(flag>6)                
	 { printf("%c\t(%4d,%5d)\n",c,type[4],flag-7);}    //界符
	 else if(flag<0){
        printf("%c\t(%4d,%5d)   Unknow char\n",c,type[5],countfault++);  //出錯處理
                 countfault ++;
     }
  }
  else{
   printf("%c\t(%4d,%5d)\n",c,type[5],countfault++);       //出錯處理
   countfault ++;
  }
 }
  printf("任意輸入,回車結束");
  scanf("%d",&c);
  
}
void getnum(char c,FILE * p)
{  int i =0;
   array[i]=c;
   flagnum=0;
   int flag;
	while( (c = fgetc(p)) != ' ' && c!= '\n'&&!ispunct(c)){   //數字后帶字符,數字讀取結束,循環結束
		    array[++i] = c; 
			if(isalpha(c)) flagnum=1;   //如果數字中有字母,報錯,并且把后面的字母讀完,存入array 緩沖
        }
	array[++i]='\0';
	if ( flagnum == 0 )
               printf("%s\t(%4d,%5d)\n",array,type[1],countnum++);   //輸出數字,數字計數vountnum自加+
             else
                 printf("%s\t(%4d,%5d)\t 錯誤的數字輸入 \n",array,type[5],countfault++);   //錯誤號countfault自加1
	if(ispunct(c))        
		  { flag = searchsymbol(c,symboltab,NSYMBOL);       //判斷數字后面跟的字符類型
            if ( flag <= 6 )
               printf("%c\t(%4d,%5d)\n",c,type[3],flag);
			else if(flag>6)
				printf("%c\t(%4d,%5d)\n",c,type[4],flag-7);
            else if(flag<0){
               printf("%c\t(%4d,%5d) 沒有這個字符\n",c,type[5],countfault);  //出錯處理
                 countfault ++;
	           }
	        }
}
void getword(char c,FILE * p)
{ int i = 0;
  int flag;
  array[i] = c;
 while( (c = fgetc(p)) != ' ' && c != '\n'&&!ispunct(c)){   //字母后面跟字符,退出循環
	 array[++i] = c;
    }
 
array[++i]='\0';
flag=searchkey(array,keytab,NKEYS);
 if ( flag >= 0 )                      //如果是關鍵字
              printf("%s\t(%4d,%5d)\n",array,type[0],flag);
    else if(flag<0) {                 //如果以字母開頭,但不是關鍵字,則判斷為標識符
                    printf("%s\t(%4d,%5d)\n",array,type[2],countid);
                     countid ++;
                }
 	   if(ispunct(c)) 
	    {   flag = searchsymbol(c,symboltab,NSYMBOL);
         if ( flag <= 6 )
         printf("%c\t(%4d,%5d)\n",c,type[3],flag);
		 else if(flag>6)
			 printf("%c\t(%4d,%5d)\n",c,type[4],flag-7);
          else if(flag<0){
          printf("%c\t(%4d,%5d) 沒有這個字符 \n",c,type[5],countfault++);  //出錯處理
          countfault ++;
	         }
	}
}
//*******************************************
char * change(char *ps,char *pt)     //處理反斜杠的問題
{
 char *p = pt;
 char c;
 while( (c = *pt++ = *ps++) != '\0' )
  if( c == '\\' )
   *pt = '\\';
 return p;
}
//******************************************
int  searchkey(char *word,struct key tab[],int n)  // 匹配關鍵字
{
 int cond;
 int i;
 for(i=0;i<n;i++)
 {cond = strcmp(word,tab[i].word);
  if ( cond== 0 )
     return i;
   }
 return -1;
}

//**********************************************
int  searchsymbol(char c,struct symbol tab[],int n)   // 匹配符號
{
  int i;
  for(i=0;i<n;i++)
  {  if(c==tab[i].c)
      return i;   
  }
    return -1;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区精密机械公司| 久久久久久久国产精品影院| 不卡av免费在线观看| 黄色精品一二区| 蜜臀av性久久久久蜜臀aⅴ| 视频一区欧美日韩| 奇米一区二区三区| 日本不卡中文字幕| 麻豆一区二区三| 久久97超碰色| 福利电影一区二区三区| www.亚洲激情.com| 色婷婷久久久久swag精品| 欧美亚洲综合一区| 91精品啪在线观看国产60岁| 日韩精品中午字幕| 国产亚洲一区二区三区在线观看| 久久人人97超碰com| 国产精品免费视频观看| 一区二区三区丝袜| 日韩精品成人一区二区在线| 麻豆久久一区二区| 国产乱码字幕精品高清av | 欧美性三三影院| 精品视频一区二区不卡| 欧美一区二区三区色| 精品国产不卡一区二区三区| 国产欧美精品一区二区色综合| 国产精品色哟哟网站| 亚洲一区二区三区四区在线| 日韩精品色哟哟| 国产精品99久久久久久似苏梦涵| 91女人视频在线观看| 欧美疯狂性受xxxxx喷水图片| 欧美大片一区二区| 亚洲人成精品久久久久| 日本欧美肥老太交大片| 国产麻豆视频一区二区| 欧美日韩黄视频| 久久精品视频免费| 三级在线观看一区二区| 懂色av一区二区三区蜜臀| 91理论电影在线观看| 精品国产精品网麻豆系列| 亚洲欧洲日产国码二区| 韩国一区二区三区| 欧美另类久久久品| 中文字幕日韩av资源站| 久久国产日韩欧美精品| 91网站在线播放| 久久九九久久九九| 日韩不卡免费视频| 一本色道久久综合精品竹菊| 欧美哺乳videos| 丝袜美腿成人在线| 日本丰满少妇一区二区三区| 国产日韩欧美高清在线| 日韩av不卡在线观看| 欧美性感一区二区三区| 日本一二三四高清不卡| 激情综合色丁香一区二区| 欧美三级蜜桃2在线观看| 中文字幕不卡在线观看| 国产精品自拍av| 日韩一区二区中文字幕| 日韩国产在线一| 欧美日韩一区二区三区在线看| 中文字幕制服丝袜成人av | 91免费版在线| 中日韩免费视频中文字幕| 国产一区中文字幕| 欧美电影免费提供在线观看| 日韩精品1区2区3区| 91精品国产福利| 视频一区二区三区中文字幕| 精品视频999| 亚洲一区免费视频| 欧美日韩在线免费视频| 亚洲成年人影院| 色婷婷狠狠综合| 亚洲综合丝袜美腿| 欧美午夜在线一二页| 亚洲国产欧美日韩另类综合| 在线视频国内一区二区| 亚洲国产日韩在线一区模特| 欧美特级限制片免费在线观看| 亚洲综合清纯丝袜自拍| 欧美日韩视频在线第一区| 日本成人中文字幕在线视频| 欧美一区二区日韩一区二区| 久久精品理论片| 久久精品欧美日韩| 91欧美激情一区二区三区成人| 亚洲另类色综合网站| 69堂亚洲精品首页| 精品一区二区三区久久| 国产喷白浆一区二区三区| 99re这里只有精品视频首页| 一区二区三区四区在线播放| 欧美在线观看18| 久久精品99国产国产精| 中文字幕不卡在线| 在线播放一区二区三区| 精品在线播放午夜| 国产精品成人一区二区三区夜夜夜| 色噜噜狠狠成人网p站| 五月婷婷欧美视频| 亚洲国产精品t66y| 欧美日韩在线亚洲一区蜜芽| 激情综合色播五月| 亚洲精品少妇30p| 欧美刺激脚交jootjob| www.色综合.com| 热久久一区二区| 亚洲天堂精品在线观看| 这里是久久伊人| 91视频观看免费| 久久97超碰色| 亚洲成人精品一区| 中文字幕第一区综合| 777xxx欧美| 色综合色狠狠天天综合色| 黑人巨大精品欧美一区| 一区二区欧美国产| 亚洲国产成人一区二区三区| 欧美日韩精品欧美日韩精品一| 狠狠久久亚洲欧美| 日韩**一区毛片| 一区二区三区欧美日韩| 国产丝袜美腿一区二区三区| 欧美怡红院视频| 91在线视频官网| 国产999精品久久久久久| 日本欧美一区二区三区乱码| 一区二区三区不卡视频| 中文字幕乱码一区二区免费| 欧美一激情一区二区三区| 欧美日韩黄色一区二区| 97久久超碰国产精品| 成人听书哪个软件好| 国产真实乱对白精彩久久| 男女男精品视频网| 日韩av电影天堂| 日韩综合一区二区| 亚洲h在线观看| 亚洲成人在线网站| 亚洲国产另类av| 亚洲香肠在线观看| 午夜精品免费在线观看| 一区二区三区视频在线观看 | 99久久婷婷国产综合精品| 国产一区二区调教| 国产精品影视天天线| 国产精品一区在线观看乱码 | 亚洲国产精品激情在线观看| 久久亚区不卡日本| 久久新电视剧免费观看| 久久久美女毛片| 亚洲国产精品高清| 成人免费在线观看入口| 亚洲女子a中天字幕| 亚洲精品免费在线播放| 亚洲国产人成综合网站| 日韩av网站在线观看| 韩日av一区二区| eeuss影院一区二区三区| 97精品电影院| 欧美高清dvd| 欧美精品一区二区三区蜜桃视频 | 一区二区三区美女| 亚洲18色成人| 国内精品嫩模私拍在线| 成人性色生活片免费看爆迷你毛片| 从欧美一区二区三区| 色哟哟国产精品| 欧美国产一区视频在线观看| 色综合咪咪久久| 欧美日韩一区二区三区高清| 欧美一区二区三区在线观看| 日韩免费观看2025年上映的电影 | 日韩一区欧美一区| 亚洲国产综合视频在线观看| 青草国产精品久久久久久| 国产精品一级黄| 在线视频一区二区三| 91麻豆精品国产91久久久久久久久| 精品少妇一区二区三区日产乱码| 国产婷婷色一区二区三区| 亚洲一区免费视频| 国产精品18久久久| 在线观看精品一区| 精品电影一区二区三区 | 欧美一区二区久久久| 国产欧美日韩麻豆91| 午夜久久久久久电影| 不卡的av在线| 日韩美女在线视频| 一区二区三区高清在线| 国产91富婆露脸刺激对白| 538prom精品视频线放|