导航:首页 > 源码编译 > 北邮编译原理课程设计报告

北邮编译原理课程设计报告

发布时间:2022-07-07 04:30:24

编译原理课程设计:从NFA构造与之等价的正规式r的程序实现

NFA,DFA要画图,不会画图啊!

② 编译原理课程设计-词法分析器设计(C语言)

#include"stdio.h"/*定义I/O库所用的某些宏和变量*/

#include"string.h"/*定义字符串库函数*/

#include"conio.h"/*提供有关屏幕窗口操作函数*/

#include"ctype.h"/*分类函数*/

charprog[80]={''},

token[8];/*存放构成单词符号的字符串*/

charch;

intsyn,/*存放单词字符的种别码*/

n,

sum,/*存放整数型单词*/

m,p;/*p是缓冲区prog的指针,m是token的指针*/

char*rwtab[6]={"begin","if","then","while","do","end"};

voidscaner(){

m=0;

sum=0;

for(n=0;n<8;n++)

token[n]='';

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++]='';

ch=prog[p--];

syn=10;

for(n=0;n<6;n++)

if(strcmp(token,rwtab[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;}

elseif(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--];}

break;

case'+':syn=13;token[0]=ch;break;

case'-':syn=14;token[0]=ch;break;

case'*':syn=15;token[0]=ch;break;

case'/':syn=16;token[0]=ch;break;

case'=':syn=25;token[0]=ch;break;

case';':syn=26;token[0]=ch;break;

case'(':syn=27;token[0]=ch;break;

case')':syn=28;token[0]=ch;break;

case'#':syn=0;token[0]=ch;break;

default:syn=-1;}}

main()

{

printf(" Thesignificanceofthefigures: "

"1.figures1to6saidKeyword "

"2. "

"3.figures13to28saidOperators ");

p=0;

printf(" pleaseinputstring: ");

do{

ch=getchar();

prog[p++]=ch;

}while(ch!='#');

p=0;

do{

scaner();

switch(syn){

case11:printf("(%d,%d) ",syn,sum);break;

case-1:printf(" ERROR; ");break;

default:printf("(%d,%s) ",syn,token);

}

}while(syn!=0);

getch();

}

程序测试结果

对源程序beginx:=9:ifx>9thenx:=2*x+1/3;end#的源文件,经过词法分析后输出如下图5-1所示:

具体的你在修改修改吧

③ 跪求编译原理课程设计 要求就是:编写一款语言转换器,将类Pascal语言源程序转换为C源程序。

看看楼下怎么说。

④ 一个编译原理的课程设计,急急急

回答:alkaid_pku
学长
4月14日 06:31 1. 预处理
2. 编译
3. 汇编
4. 查找库函数
5. 连接

⑤ 编译原理课程设计的第5章错误处理

5.1.1错误的种类
5.1.2错误的诊察和报告
5.1.3错误处理技术
5.1.4错误处理实现中的要点 5.2.1错误处理数据结构定义和相关函数
5.2.2词法错误处理
5.2.3语法错误
5.2.4语义错误
5.2.5限制重复报告错误

⑥ 编译原理课程设计--FOR循环语句的翻译程序设计

晕,大哥你好懒,这都不自己写

⑦ 编译原理课程设计:证明一个文法是LR(0)文法 求大神帮忙啊

这个很简单呀,如果一个项目集中不存在既含移进项目又含规约项目或者含有多个规约项目的情况,则该文发是一个LR(0)文法。多以就是要先构造你面临的项目的项目集。然后逐个检查项目集中的各个项目。有不会的继续追问。

阅读全文

与北邮编译原理课程设计报告相关的资料

热点内容
javajdbcmysql连接 浏览:469
制作linux交叉编译工具链 浏览:751
编程负数除以正数 浏览:508
app和aso有什么区别 浏览:324
手机vmap是什么文件夹 浏览:34
塔科夫锁服如何选择服务器 浏览:286
消费者生产者问题java 浏览:57
程序员筱柒顾默结婚的时候 浏览:576
安卓截长屏怎么弄 浏览:473
优信办理解压手续怎么那么慢 浏览:603
私有云服务器一体机安全吗 浏览:428
python的tk界面禁用鼠标 浏览:184
怎么看服务器mac地址 浏览:289
安卓如何将图镜像翻转 浏览:324
操作系统设计与实现pdf 浏览:547
长虹空调遥控什么app 浏览:738
四轴外圆编程教程 浏览:947
vb在线编译环境 浏览:884
编译原理全书知识点总结 浏览:908
javaoa开发 浏览:883