xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 2KB
    文件類(lèi)型: .rar
    金幣: 2
    下載: 1 次
    發(fā)布日期: 2021-07-16
  • 語(yǔ)言: C/C++
  • 標(biāo)簽: 詞法分析??編譯原理??

資源簡(jiǎn)介

本程序能成功識(shí)別檢測(cè)程序中的每一個(gè)單詞。檢測(cè)程序中事先定義的關(guān)鍵字、實(shí)現(xiàn)過(guò)程或者在檢測(cè)程序中定義的變量,本程序?qū)⒁欢M輸出。否則,本程序?qū)?huì)統(tǒng)一將其歸類(lèi)為undeclared identifier。 該程序是linux平臺(tái)下的,若在Windows下只需將頭文件unistd.h 改為io.h

資源截圖

代碼片段和文件信息

#include
#include
#include

const?char?*keywords[]={“int““if““else““while““for““return“};??/*關(guān)鍵字(1)*/
const?char?*mark[]={“main““printf““%s““%d“};??/*標(biāo)識(shí)符(2)*/
const?char?*calculate[]={“%““*““+““-““/““<““>““=““<=““>=““==“};/*運(yùn)算符(4)*/
/*ASCLL)??37??42??43??45??47??60??62??61*/
const?char?*divide[]={“\“““(““)““““;““[““]““{““}“};/*界符(5)*/
????/*ASCLL)???34???40??41??44??59??91??94??123?125*/
static?int?varflg=0var_count=0;
char?varbuf[256][14];???/*用來(lái)存儲(chǔ)定義過(guò)的變量*/

void?judge(char?*buffer){
int?i;
if(buffer[0]==0x00)return;???/*如果buffer為空,則立即返回*/
if(buffer[0]<=‘9‘?&&?buffer[0]>=‘0‘){?/*以數(shù)字開(kāi)頭的是常數(shù)*/
printf(“(3‘%s‘)\n“buffer);
return;
}
if(!strcmp(buffer“int“)){/*判斷是何種形式的何種單詞*/
printf(“(1‘%s‘)\n“buffer);?
varflg=1;??/*設(shè)置變量標(biāo)志,在關(guān)鍵字int型的后面那個(gè)單詞即認(rèn)為是變量*/
}
else?if(!strcmp(buffer“if“))printf(“(1‘%s‘)\n“buffer);
else?if(!strcmp(buffer“else“))printf(“(1‘%s‘)\n“buffer);
else?if(!strcmp(buffer“while“))printf(“(1‘%s‘)\n“buffer);
else?if(!strcmp(buffer“for“))printf(“(1‘%s‘)\n“buffer);
else?if(!strcmp(buffer“return“))printf(“(1‘%s‘)\n“buffer);
else?if(!strcmp(buffer“main“))printf(“(2‘%s‘)\n“buffer);
else?if(!strcmp(buffer“printf“))printf(“(2‘%s‘)\n“buffer);
else?{
if(varflg==1){??/*變量*/
printf(“(2‘%s‘)\n“buffer);
var_count++;
for(i=0;i varbuf[var_count-1][i]=buffer[i];
}
else{
for(i=0;i if(!strcmp(buffervarbuf[i])){
printf(“(2‘%s‘)\n“buffer);
return;
}
}
printf(“undeclared?identifier:‘%s‘\n“buffer);
}
}
return;
}

int?main(){
FILE?*fd;
int?i;
int?conflg=0;/*定義常量標(biāo)志,兩個(gè)““”之間的可認(rèn)為是常量“%s““%d“除外*/
char?cbuffer[256]forward=0x00;/*因光一個(gè)<>=無(wú)法判斷是何種運(yùn)算符,還得根據(jù)后一個(gè)符號(hào)判斷,forward就是用來(lái)存儲(chǔ)第一個(gè)讀到的<>或=*/
fd=fopen(“input.txt““r“);??/*打開(kāi)input.txt文件做讀操作*/
close(0);??/*關(guān)閉標(biāo)準(zhǔn)輸入*/
dup2(fileno(fd)0);??/*標(biāo)準(zhǔn)輸入重定向到fd*/
memset(buffer0x00sizeof(buffer));/*刷新緩沖區(qū)*/

while((c=getchar())!=EOF){
if((forward==‘>‘?||?forward==‘<‘?||?forward==‘=‘)?&&?c!=‘=‘){?/*前一個(gè)符號(hào)是<>或者=*/
printf(“(4‘%c‘)\n“forward);
forward=0x00;
buffer[0]=c;
continue;
}
if(c==‘“‘){/*如果是雙引號(hào),則改變標(biāo)志*/
conflg=(conflg+1)%2;
if(conflg==1){??/*如果是奇數(shù)個(gè)雙引號(hào),即字符串的開(kāi)始標(biāo)識(shí)*/
printf(“(5‘%c‘)\n“c);
memset(buffer0x00sizeof(buffer));?
continue;
}
else{??/*if(conflg==0)字符串的結(jié)束標(biāo)識(shí)*/
printf(“(3‘“);
for(i=0;i if(buffer[i]==‘%‘?&&?(buffer[i+1]==‘s‘?||?buffer[i+1]==‘d‘))i++;
else?printf(“%c“buffer[i]);
printf(“‘)\n“);
for(i=0;i if(buffer[i]==‘%‘?&&?(buffer[i+1]==‘s‘?||?buffer[i+1]==‘d‘))
printf(“(2‘%c%c‘)\n“buffer[i]buffer[i+1]);
printf(“(5

?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----

?????文件????????127??2010-06-01?08:56??input.txt

?????文件???????4765??2010-06-01?09:08??word_analysis.c

-----------?---------??----------?-----??----

?????????????????4892????????????????????2


評(píng)論

共有 條評(píng)論

相關(guān)資源