資源簡介
本程序為編譯原理語法分析程序,內含源代碼和報告,以供參考!

代碼片段和文件信息
#include?“stdio.h“??????????????????/*定義I/O庫所用的某些宏和變量*/
#include?“string.h“?????????????????/*定義字符串庫函數*/
#include?“conio.h“??????????????????/*提供有關屏幕窗口操作函數*/
#include?“ctype.h“??????????????????/*分類函數*/
char?prog[80]={‘\0‘}
?????token[8];?????????????????????/*存放構成單詞符號的字符串*/
char?ch;
int?syn???????????????????????????/*存放單詞字符的種別碼*/
??????n
?????kk
????sum???????????????????????????/*存放整數型單詞*/
????mp;???????????????????????????/*p是緩沖區prog的指針,m是token的指針*/
char?*rwtab[6]={“begin““if““then““while““do““end“};
void?scaner()
{
????m=0;
????sum=0;
????for(n=0;n<8;n++)
????????token[n]=‘\0‘;
????ch=prog[p++];
????while(ch==‘?‘)
????????ch=prog[p++];
????if(isalpha(ch))????/*ch為字母字符*/
????{
????????while(isalpha(ch)||isdigit(ch))????/*ch?為字母字符或者數字字符*/
????????{
???????????token[m++]=ch;
???????????ch=prog[p++];
????????}
????????token[m++]=‘\0‘;
????????ch=prog[p--];
????????syn=10;
????????for(n=0;n<6;n++)
????????????if(strcmp(tokenrwtab[n])==0)????/*字符串的比較*/
????????????{
????????????????syn=n+1;
????????????????break;
????????????}
????}
????else
????????if(isdigit(ch))????/*ch是數字字符*/
????????{
????????????while(isdigit(ch))????/*ch是數字字符*/
????????????{
????????????????sum=sum*10+ch-‘0‘;
????????????????ch=prog[p++];
????????????}
????????????ch=prog[p--];
????????????syn=11;
????????}
????????else
????????????switch(ch)
????????????{
????????????????case‘<‘:m=0;
????????????????????????token[m++]=ch;
????????????????????????ch=prog[p++];
????????????????????????if(ch==‘>‘)
????????????????????????{
????????????????????????????syn=21;
????????????????????????????token[m++]=ch;
????????????????????????}
????????????????????????else?if(ch==‘=‘)
????????????????????????{
????????????????????????????syn=22;
????????????????????????????token[m++]=ch;
????????????????????????}
?????????????????????????????else
?????????????????????????????{
?????????????????????????????????syn=20;
?????????????????????????????????ch=prog[p--];
?????????????????????????????}
????????????????????????break;
????????????????case‘>‘:m=0;
????????????????????????token[m++]=ch;
????????????????????????ch=prog[p++];
????????????????????????if(ch==‘=‘)
????????????????????????{
????????????????????????????syn=24;
????????????????????????????token[m++]=ch;
????????????????????????}
????????????????????????else
????????????????????????{
????????????????????????????syn=23;
????????????????????????????ch=prog[p--];
????????????????????????}
????????????????????????break;
?????????????case‘:‘:m=0;
?????????????????????token[m++]=ch;
?????????????????????ch=prog[p++];
?????????????????????if(ch==‘=‘)
?????????????????????{
?????????????????????????syn=18;
?????????????????????????token[m++]=ch;
?????????????????????}
?????????????????????else
?????????????????????{
?????????????????????????syn=17;
?????????????????????????ch=prog[p--];
??????
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????6116??2008-06-01?21:52??yufafenxi.c
?????文件??????77312??2008-06-13?18:47??語法分析程序報告0.doc
-----------?---------??----------?-----??----
????????????????83428????????????????????2
評論
共有 條評論