资源简介

编译原理课程设计,包含源代码,词法分析,语法分析,LR0,LLI

资源截图

代码片段和文件信息

#include
#include
#define N 80
//定义关键字
char word[32][10]={“auto““short““int““long““float““double““char““struct““union““enum““typedef““const““unsigned““signed““extern““register““static““volatile““void““if““else““switch““case““for““do““while““goto““continue““break““default““sizeof““return“};
void Analyse(char a[]);
void main()
{
int i;
char a[N];
printf(“请输入源程序:(以$结束)\n“);
for(i=0;i {
scanf(“%c“&a[i]);
if(a[i]==‘$‘)
break;
}
a[i+1]=‘\0‘;
i=0;
printf(“词法分析结果为:\n“);
Analyse(a);
}



void Analyse(char a[])
{
int i=0j=0n=0m=0temp=0;
char b[N];

while(a[i]!=‘$‘)
{
if(a[i]>=65&&a[i]<=122)//a-z A-Z  [  ]   \  ^ _  ‘  
{
j=0;                               //0-9              95       
while((a[i]>=65 && a[i]<=122)||(a[i]>=‘0‘ && a[i]<=‘9‘)||a[i]==‘_‘)
{
b[j]=a[i];
j++;
i++;
}
i--;
b[j]=‘\0‘;
for(n=0;n<32;n++)  //判断关键字
{
if(strcmp(bword[n])==0)
{
printf(“<关键字%d“n+1);
while(word[n][m]!=‘\0‘)
{
printf(“%c“word[n][m]);
m++;
}
printf(“>\n“);
temp=1;
}
} //标识符
if(temp==0)
printf(“<标识符10%s >\n“b);

}
else
{
switch(a[i])//符号
{
case ‘#‘: printf(“<0$>\n“);
case ‘+‘: printf(“<运算符13+ >\n“);break;
case ‘-‘: printf(“<运算符14- >\n“);break;
case ‘*‘: printf(“<运算符15* >\n“);break;
case ‘/‘: printf(“<运算符16/ >\n“);break;
case ‘:‘:
if(a[i+1]==‘=‘)
{
printf(“<运算符18:= >\n“); //a : = 3
i++;

//else printf(“<界符17:>\n“); // 冒号作为界符
break;

case ‘<‘: 
if(a[i+1]==‘=‘)
{
printf(“<运算符21<= >\n“);// <=运算符
i++;
}
else if(a[i+1]==‘>‘)   // <> 相当于 !=
{
printf(“<运算符22<> >\n“);
i++;
}
else printf(“<界符20< >\n“); //界符 <
break;

case ‘>‘: 
if(a[i+1]==‘=‘)
{
printf(“<运算符24>= >\n“); // >= 运算符
i++;

else printf(“<界符23> >\n“); // > 界符
break;

case ‘=‘: printf(“<25=>\n“);break;
case ‘;‘: printf(“<界符26; >\n“);break;
case ‘(‘: printf(“<界符27( >\n“);break;
case ‘)‘: printf(“<界符28) >\n“);break;
case ‘{‘: printf(“<界符29{ >\n“);break;
case ‘}‘: printf(“<界符30} >\n“);break;
case‘ ‘: break;
case‘\n‘: break;
default:
if(a[i]>=‘0‘&&a[i]<=‘9‘) 
printf(“<数字%c >\n“a[i]);
else 
printf(“‘%c‘输入错误!\n“a[i]);
break;
}
}
i++;
}
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-07-12 09:50  编译课设\
     文件       35047  2019-06-26 15:50  编译课设\first.jpg
     文件       29031  2019-06-26 16:00  编译课设\follow.jpg
     目录           0  2019-06-27 11:28  编译课设\源码\
     目录           0  2019-06-27 11:24  编译课设\源码\LR0\
     文件        5297  2019-06-27 10:16  编译课设\源码\LR0\Analyze.java
     文件         464  2019-06-27 10:11  编译课设\源码\LR0\Item.java
     文件        5996  2019-06-27 10:17  编译课设\源码\LR0\LR0.java
     文件          29  2019-06-27 09:55  编译课设\源码\LR0\grammer.txt
     文件        2699  2019-06-27 09:16  编译课设\源码\cifa.cpp
     目录           0  2019-06-27 09:14  编译课设\源码\ll1\
     文件        2024  2019-04-18 11:43  编译课设\源码\ll1\EventListener.class
     文件       10248  2019-04-18 11:43  编译课设\源码\ll1\GetInfor.class
     文件       13512  2019-04-18 11:43  编译课设\源码\ll1\GetInfor.java
     文件        1985  2019-04-18 11:43  编译课设\源码\ll1\LL1Analyse.class
     文件        2747  2019-04-18 11:43  编译课设\源码\ll1\LL1Analyse.java
     目录           0  2019-06-27 09:14  编译课设\源码\ll1\demo\
     文件       13541  2019-04-18 11:42  编译课设\源码\ll1\demo\GetInfor.java
     文件          63  2017-03-02 09:41  编译课设\源码\ll1\grammar.txt
     文件        2699  2019-04-04 10:29  编译课设\源码\词法分析.txt
     文件      330803  2019-07-12 09:48  编译课设\编译原理报告.docx
     文件       56320  2019-06-26 15:04  编译课设\词法分析流程图.vsd

评论

共有 条评论