gs语法分析实验报告c语言,编译原理实验报告(词法分析器语法分析器)

本次实验报告详细介绍了词法分析器和语法分析器的设计过程,旨在识别简单语言的单词符号。实验中,设计了一个词法分析器用于识别基本字、标识符、无符号整数、运算符和界符,并给出了相应的种别编码。接着,通过程序流程图和源代码展示了如何处理算术表达式的求解,涉及运算符优先级判断和栈的操作。实验结果表明,该分析器能有效进行词法和语法分析,加深了对编译原理的理解与实践应用。
摘要由CSDN通过智能技术生成

《编译原理实验报告(词法分析器语法分析器)》由会员分享,可在线阅读,更多相关《编译原理实验报告(词法分析器语法分析器)(10页珍藏版)》请在装配图网上搜索。

1、编译原理实验报告实验一一、实验名称:词法分析器的设计二、实验目的:1,词法分析器能够识别简单语言的单词符号2,识别出并输出简单语言的基本字.标示符.无符号整数.运算符.和界符。三、实验要求:给出一个简单语言单词符号的种别编码词法分析器四、实验原理:1、词法分析程序的算法思想算法的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符号,其基本思想是根据扫描到单词符号的第一个字符的种类,拼出相应的单词符号。2、程序流程图(1)主程序输入要分析的语句调用扫描、分析程序输出单词符号二元组结束判断读入字符是否为“#”(2)扫描子程序Token清空当前字符=?标示符常数表中查找结束 Error()输。

2、出二元式基本字用户标示符结束Get()3、各种单词符号对应的种别码单词符号种别码助记符内码值while1while-if2if-else3else-switch4switch-case5case-标识符6idid在符号表中的位置常数7numnum在常数表中的位置+8+-9-*10*-#include #include int i,j,k;char c,s,a20,token20=0;int letter(char s)if(s=97)&(s=48)&(sE+E|E-E|E*E|E/E|(E)E-0|1|2|3|9根据此文法编写程序时,算术表达式的求解过程需要用到算术符号的优先判断,定义两个字符。

3、串数组optr、opnd用来模拟栈,存放算术符和操作数,用a来存放表达式字符串,在分析时还要通过函数intf(charc)和intg(charc),判断运算符之间的优先关系,根据不同情况作各种不同操作。流程图如下:输入算数表达式,以#结束初始化loptr1=#用get()取一个待分析字符sOptr1和s是否同时为#判断S是否为运算量Floptrjg(s)其他情况error()当前字符栈optr栈顶元素出栈结束存入opndget()2,实验程序源代码:#includechar a21,optr10,op,s;int opnd10,i,j,k,x1,x2,x3;int operand(char s。

4、)if(s=48)&(sg(s) op=optrj;j-;x1=opndk-1;x2=opndk-2;k=k-2;switch(op)case +:x3=x1+x2;break;case *:x3=x1*x2;break;default:break;opndk=x3;k+;printf(%c,%d,%d,%d)n,op,x2,x1,x3);else j-;get(); 3实验结果:心得体会:通过本次实验,我更加深刻的学习到了很多: 1、通过实验我对词法分析和语法分析原理有了更深刻的理解。2、而且对词法分析和语法分析在实践中的应用有了深入的掌握。3、更加熟悉了构造词法分析程序和语法分析程序的手工方式的相关原理,能够实现对词法分析程序所提供的单词符号序列进行相应的语法检查和结构分析,达到了学以致用的目的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值