資源簡介
編譯原理 詞法分析器實驗代碼 從文件讀入
cbb.cpp文件

代碼片段和文件信息
#include
#include
#include
#define?_KEY_WORD_END?“waiting?for?you?expanding“
typedef?struct?{
int?typenum;
char*?word;
}WORD;
char?input[255];
char?token[255]=““;
int?p_input;
int?p_token;
char?ch;
char*?rwtab[]={“begin““if““then““while““do““end“_KEY_WORD_END};
WORD*?scaner();
//char?str[]?=?“begin?x:=9;if?x>0then?x:=2*x+1/3;end#“;
char?str[]?=?“begin?8x:=9;if?x>0then?x:=2*x+1/3;end#“;
FILE?*fp1*fp2;
void?main(int?argc?char*?argv[])
{
int?over=1;
WORD*?oneword=new?WORD;
fp1?=?fopen(“text.txt““w“);
if(fp1?==?NULL){
printf(“can?not?open?file:?text.txt\n“);
exit(0);
}
fputs(strfp1);
fclose(fp1);
fp2?=?fopen(“text.txt““rt“);
fgets(input43fp2);
????p_input=0;
printf(“Your?words:\n%s\n“input);
while(over<1000)
{
oneword=scaner();
if(oneword->typenum<1000?&&?oneword->typenum?!=?-1?)
printf(“(%d%s)“oneword->typenumoneword->word);
else?if(oneword->typenum<1000)
printf(“error“);
over=oneword->typenum;
}
printf(“\npress?#?to?exit:“);
scanf(“%[^#]s“input);
}
char?m_getch()
{
ch=input[p_input];
p_input=p_input+1;
return?(ch);
}
void?getbc()
{
while(ch==‘?‘||ch==10)
{
ch=input[p_input];
p_input=p_input+1;
}
}
void?concat()
{
token[p_token]=ch;
????p_token=p_token+1;
token[p_token]=‘\0‘;
}
int?letter()
{
if(ch>=‘a‘&&ch<=‘z‘||ch>=‘A‘&&ch<=‘Z‘)
return?1;
else?return?0;
}
int?digit()
{
if(ch>=‘0‘&&ch<=‘9‘)
return?1;
else?return?0;
}
int?reserve()
{
int?i=0;
while(strcmp(rwtab[i]_KEY_WORD_END))
{
if(!strcmp(rwtab[i]token))
{
return?i+1;
}
i=i+1;
}
return?10;
}
void?retract()
{
p_input=p_input-1;
}
char*?dtb()
{
return?NULL;
}
WORD*?scaner()
{
WORD*?myword=new?WORD;
myword->typenum=10;
myword->word=““;
p_token=0;
m_getch();
getbc();
??if(letter())
??{
while(letter()||digit())
{
concat();
/*myword->typenum=reserve();
if(myword->typenum?!=?10)
break;*/
m_getch();
}
retract();
myword->typenum=reserve();
myword->word=token;
return(myword);
??}
??? ??else?if(digit())
??{
while(digit())
{
concat();
m_getch();
}
if(letter()){
????????????myword->typenum=-1;
myword->word=“error“;
return?(myword);
}
????????else{
retract();
myword->typenum=11;
myword->word=token;
return(myword);
}
??}
else?switch(ch)
{
case‘=‘:
myword->typenum=21;
myword->word=“==“;
return?(myword);
break;
case‘+‘:myword->typenum=13;
????myword->word=“+“;
????return?(myword);
????break;
case‘-‘:myword->typenum=14;
????myword->word=“-“;
????return?(myword);
????break;
case‘*‘:myword->typenum=15;
????myword->word=“*“;
????return?(myword);
????break;
case‘/‘:myword->typenum=16;
????myword->word=“/“;
????return?(myword);
????break;
case‘(‘:myword->typenum=27;
????myword->word=“
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
????.......???????930??2014-09-26?13:39??sbb\sbb.dsw
????.......?????50176??2014-09-26?13:39??sbb\sbb.ncb
????.......?????59904??2014-09-26?13:39??sbb\sbb.opt
?????文件?????459776??2012-01-02?09:42??sbb\sbb1\Debug\sbb1.pdb
????.......??????1780??2014-09-26?13:39??sbb\sbb1\Debug\StdAfx.obj
?????文件??????41984??2012-01-02?09:42??sbb\sbb1\Debug\vc60.idb
?????文件??????53248??2012-01-02?09:42??sbb\sbb1\Debug\vc60.pdb
?????文件???????3370??2014-09-28?09:10??sbb\sbb1\Debug\text.obj
?????文件?????172080??2012-01-02?09:42??sbb\sbb1\Debug\sbb1.exe
?????文件?????226020??2012-01-02?09:17??sbb\sbb1\Debug\sbb1.pch
?????文件?????198552??2012-01-02?09:42??sbb\sbb1\Debug\sbb1.ilk
?????文件??????16828??2012-01-02?09:42??sbb\sbb1\Debug\sbb1.obj
????.......??????1196??2014-09-26?13:39??sbb\sbb1\ReadMe.txt
?????文件???????1104??2012-01-02?09:42??sbb\sbb1\sbb1.plg
????.......???????291??2014-09-26?13:39??sbb\sbb1\StdAfx.cpp
????.......???????769??2014-09-26?13:39??sbb\sbb1\StdAfx.h
?????文件????????769??2014-09-28?08:07??sbb\sbb1\text\StdAfx.h
?????文件????????291??2014-09-28?08:07??sbb\sbb1\text\StdAfx.cpp
?????文件???????1196??2014-09-28?08:07??sbb\sbb1\text\ReadMe.txt
?????文件???????4512??2014-09-28?08:07??sbb\sbb1\text\text.dsp
?????文件????????531??2014-09-28?08:07??sbb\sbb1\text\text.dsw
?????文件??????33792??2014-09-28?08:22??sbb\sbb1\text\text.ncb
?????文件??????48640??2014-09-28?08:22??sbb\sbb1\text\text.opt
?????文件????????119??2012-01-02?08:38??sbb\sbb1\text\text.cpp
?????文件???????3575??2014-09-28?08:55??sbb\sbb1\word_scaner.cpp
?????文件??????50176??2012-01-02?09:44??sbb\sbb1\sbb1.ncb
?????文件????????330??2014-09-28?09:44??sbb\sbb1\sbb1.sln
????..A..H.??????7680??2014-09-28?09:44??sbb\sbb1\sbb1.suo
?????文件?????????38??2012-01-02?09:42??sbb\sbb1\text.txt
?????文件???????4376??2012-01-02?09:44??sbb\sbb1\sbb1.cpp
............此處省略11個文件信息
- 上一篇:基本工作能力測試題冊和答案
- 下一篇:幾大主流開源飛控平臺優劣比較
評論
共有 條評論