资源简介
编译原理实验一词法分析 实验二语法分析,C++程序编写,对编译原理实验一 二的详细编写
代码片段和文件信息
#include
#include
#include
#include
#define LEN sizeof(struct Node)
#define NULL 0
struct Node
{char data;
struct Node *next;
};
void scaner();
void getbc();
void getch();
void concat();
int letter(char ch);
int degit(char ch);
int reserve();
void retract();
void back(int achar *b);
struct Node *head*p;
char ch;
char *key[]={“if““int““for““while““do““return““break““continue“};
char token[20];
int main(void)
{
FILE *fp;
char root[1000];
printf(“输入源程序地址:“);
scanf(“%s“root);
fp=fopen(root“r“);
if (fp==NULL)
{
printf(“Error!\n“);
return 0;
}
head=(struct Node *)malloc(LEN);
head->next=NULL;
head->data=NULL;
p=head;
while ((p->data=fgetc(fp))!=EOF)
{
p->next=(struct Node*)malloc(LEN);
p=p->next;
}
void retract();
p->next=NULL;
p=head;
while(p->next!=NULL)
scaner();
return 0;
}
void getbc()
{
while(ch==‘ ‘)
getch();
}
void getch()
{
ch=p->data;
p=p->next;
}
void concat()
{
unsigned int i;
i=strlen(token);
token[i]=ch;
token[i+1]=‘\0‘;
}
int letter(char ch)
{
return isalpha((int)ch);
}
int digit(char ch)
{
return isdigit((int)ch);
}
int reserve()
{
int k;
for(k=0;k<=6;k++)
{
if(strcmp(key[k]token)==0)
return (1);
}
return 2;
}
void retract()
{
struct Node *Q;
Q=head;
while(Q->next!=p)
Q=Q->next;
p=Q;
}
void back(int achar *b)
{
printf(“(%d‘%s‘)“ab);
printf(“\n“);
}
void scaner()
{
int c;
token[0]=NULL;
getch();
getbc();
if(letter(ch))
{
while(letter(ch)||digit(ch))
{
concat();
getch();
}
retract();
c=reserve();
if(c!=2) back(ctoken);
else back(2token);
}
else if(digit(ch))
{
while(digit(ch))
{
concat();
getch();
}
retract();
printf(“(3‘%d‘)“atoi(token));
printf(“\n“);
}
else
switch(ch)
{
case‘+‘: back(4“+“);break;
case‘-‘: back(4“-“);break;
case‘*‘: back(4“*“);break;
case‘/‘: back(4“/“);break;
case‘!=‘: back(4“!=“);break;
case‘<‘: getch();
if(ch==‘=‘) back(4“<=“);
else{
retract();
back(4“<“);break;}
case‘>‘: getch();
if(ch==‘=‘) back(4“>=“);
else{
retract();
back(4“>“);break;}
case‘‘: back(5““);break;
case‘;‘: back(5“;“);break;
case‘{‘: back(5“{“);break;
case‘}‘: back(5“}“);break;
case‘(‘: back(5“(“);break;
case‘)‘: back(5“)“);break;
case‘=‘: back(4“=“);break;
case‘#‘: back(5“#“);break;
ca
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1196 2010-06-28 11:58 编译原理实验一词法分析 实验二语法分析\实验二\2222222.txt
文件 195409 2010-04-30 09:53 编译原理实验一词法分析 实验二语法分析\实验二\LoginSample.rar
文件 7442 2010-04-29 14:07 编译原理实验一词法分析 实验二语法分析\实验二\trytr.txt
文件 29696 2010-04-29 23:18 编译原理实验一词法分析 实验二语法分析\实验二\新建 Microsoft Word 文档.doc
文件 2045 2010-04-28 22:52 编译原理实验一词法分析 实验二语法分析\实验二\新建 文本文档 (3).txt
文件 1285 2010-04-28 22:59 编译原理实验一词法分析 实验二语法分析\实验二\新建 文本文档 (4).txt
文件 3182 2010-04-01 16:09 编译原理实验一词法分析 实验二语法分析\编译原理实验一词法分析程序\编译原理实验一词法分析程序\bianyi.cpp
文件 3401 2010-04-01 16:07 编译原理实验一词法分析 实验二语法分析\编译原理实验一词法分析程序\编译原理实验一词法分析程序\bianyi.dsp
文件 520 2010-04-01 16:11 编译原理实验一词法分析 实验二语法分析\编译原理实验一词法分析程序\编译原理实验一词法分析程序\bianyi.dsw
文件 33792 2010-04-01 16:11 编译原理实验一词法分析 实验二语法分析\编译原理实验一词法分析程序\编译原理实验一词法分析程序\bianyi.ncb
文件 48640 2010-04-01 16:11 编译原理实验一词法分析 实验二语法分析\编译原理实验一词法分析程序\编译原理实验一词法分析程序\bianyi.opt
文件 746 2010-04-01 16:09 编译原理实验一词法分析 实验二语法分析\编译原理实验一词法分析程序\编译原理实验一词法分析程序\bianyi.plg
文件 196697 2010-04-01 16:09 编译原理实验一词法分析 实验二语法分析\编译原理实验一词法分析程序\编译原理实验一词法分析程序\Debug\bianyi.exe
文件 200584 2010-04-01 16:09 编译原理实验一词法分析 实验二语法分析\编译原理实验一词法分析程序\编译原理实验一词法分析程序\Debug\bianyi.ilk
文件 16992 2010-04-01 16:09 编译原理实验一词法分析 实验二语法分析\编译原理实验一词法分析程序\编译原理实验一词法分析程序\Debug\bianyi.obj
文件 229528 2010-04-01 15:56 编译原理实验一词法分析 实验二语法分析\编译原理实验一词法分析程序\编译原理实验一词法分析程序\Debug\bianyi.pch
文件 484352 2010-04-01 16:09 编译原理实验一词法分析 实验二语法分析\编译原理实验一词法分析程序\编译原理实验一词法分析程序\Debug\bianyi.pdb
文件 33792 2010-04-01 16:10 编译原理实验一词法分析 实验二语法分析\编译原理实验一词法分析程序\编译原理实验一词法分析程序\Debug\vc60.idb
文件 53248 2010-04-01 16:09 编译原理实验一词法分析 实验二语法分析\编译原理实验一词法分析程序\编译原理实验一词法分析程序\Debug\vc60.pdb
文件 38 2010-04-01 15:34 编译原理实验一词法分析 实验二语法分析\编译原理实验一词法分析程序\编译原理实验一词法分析程序\hello.txt
目录 0 2010-04-01 16:09 编译原理实验一词法分析 实验二语法分析\编译原理实验一词法分析程序\编译原理实验一词法分析程序\Debug
目录 0 2010-04-01 16:11 编译原理实验一词法分析 实验二语法分析\编译原理实验一词法分析程序\编译原理实验一词法分析程序
目录 0 2010-04-30 10:51 编译原理实验一词法分析 实验二语法分析\实验二
目录 0 2010-04-05 19:28 编译原理实验一词法分析 实验二语法分析\编译原理实验一词法分析程序
目录 0 2010-06-22 15:48 编译原理实验一词法分析 实验二语法分析
----------- --------- ---------- ----- ----
1542585 25
评论
共有 条评论