欢迎来到天天文库
浏览记录
ID:59252715
大小:121.00 KB
页数:9页
时间:2020-09-08
《sample词法分析与语法分析.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、一、实验目的根据SAMPLE文法规范,要求编写SAMPLE语言的词法分析程序以及语法分析程序二、实验内容根据SAMPLE语言文法,输出token表以(关键字、专用符号以及其它标记)及符号表。根据某一文法编写LL(1)语法预测分析程序,以便对任意输入的符号串进行分析,构造预测分析表,并利用分析表和一个栈来实现对上述程序设计语言的分析程序。分析法的功能是利用LL(1)控制程序根据显示栈栈顶内容、向前看符号以及LL(1)分析表,对输入符号串自上而下的分析过程。三、实验方案设计1)、词法分析方案设计:1、设计SAMPLE语言的词法分析器A、 字符集定义1. <字符集> → <字母>│<数字
2、>│<单界符>2. <字母> → A│B│…│Z│a│b│…│z3. <数字> → 0│1│2│…│94. <单界符> → +│-│*│/│=│<│>│(│)│[│]│:│. │; │, │' B、单词集定义5.<单词集> → <关键字>│<双界符>│<标识符>│<常数>│<单界符>6.<关键字> → begin│bool│char│const│do│else│end│false│for│if│integer│program│read│real│then│to│true││var│while│write7.<双界符> → <>│<=│>=│:= │/*│*/│..8.<标识符> →
3、 <字母>│<标识符> <数字>│<标识符> <字母>9.<常数> → <整数>│<布尔常数>│<字符常数>10.<整数> → <数字>│<整数> <数字>11.<布尔常数> → true│false12.<字符常数> → ' 除 {'} 外的任意字符串 '13.<运算符>→+
4、-
5、*
6、/
7、>
8、<2、词法分析系统流程设计2)、LL(1)分析法实验设计思想及算法:(1)定义部分:定义常量、变量、数据结构。(2)初始化:设立LL(1)分析表、初始化变量空间(包括堆栈、结构体、数组、临时变量等);(3)控制部分:从键盘输入一个表达式符号串;(4)利用LL(1)分析算法进行表达式处理:根据
9、LL(1)分析表对表达式符号串进行堆栈(或其他)操作,输出分析结果,如果遇到错误则显示错误信息。四、实验测试对词法分析:测试文件:programexample;vara,b,c:integer;x:char;beginif(a+c*3>b)and(b>3)thenc:=3;x:=2+(3*a)-b*c*8;if(2+3>a)and(b>3)and(a>c)thenc:=3;forx:=1+2to3dob:=100;whilea>bdoc:=5;forx:=1+dto3dob:=15;whilet>bdoc:=5;repeata:=10;untila>b;end.分析结果:·····
10、·················开始分析··········································analyzerow1·················[保留字]program[标识符]example·····················analyzerow2·················[保留字]var·····················analyzerow3·················[标识符]a[单界符:逗号],[标识符]b[单界符:逗号],[标识符]c[保留字]integer·····················anal
11、yzerow4·················[标识符]x[保留字]char·····················analyzerow5·················[保留字]begin·····················analyzerow6·················[保留字]if[单界符:左圆括号]([标识符]a[单界符:加号]+[标识符]c[单界符:星号]*[数字]3[标识符]b[单界符:右圆括号])[保留字]and[单界符:左圆括号]([标识符]b[数字]3[单界符:右圆括号])·····················analyzerow7····
12、·············[保留字]then[标识符]c[双界符6]:=[数字]3·····················analyzerow8·················[标识符]x[双界符6]:=[数字]2[单界符:加号]+[单界符:左圆括号]([数字]3[单界符:星号]*[标识符]a[单界符:右圆括号])[单界符:减号]-[标识符]b[单界符:星号]*[标识符]c[单界符:星号]*[数字]8·····················analyzerow9
此文档下载收益归作者所有