欢迎来到天天文库
浏览记录
ID:21822410
大小:300.03 KB
页数:10页
时间:2018-10-24
《sample词法分析与语法分析》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、一、实验目的根据SAMPLE文法规范,要求编写SAMPLE语言的词法分析程序以及语法分析程序二、实验内容根椐SAMPLE语言文法,输出token表以(关键字、专用符号以及其它标记)及符号表。根据某一文法编写LL(1)语法预测分析程序,以便对任意输入的符号申进行分析,构造预测分析表,并利用分析表和一个栈来实现对上述程序设计语言的分析程序。分析法的功能是利用LL(1)控制程序根裾显示栈栈顶内容、向前看符兮以及LL(1)分析表,对输入符号申自上而下的分析过程。三、实验方案设计1)、词法分析方案设计:1、设计SAMPLE语言的词法分
2、析器A、字符集定义1.<字符集〉一<字付〉I<数字〉I<单界符〉2.<字母〉A
3、B
4、…
5、Z
6、a
7、b
8、…
9、z3.<数字〉一0丨1
10、2丨…
11、94.<单界符>-*+
12、-
13、*
14、/
15、=
16、<
17、>
18、(
19、)
20、[
21、]
22、:
23、.I;I,PB、单词集定义5.<单词集〉一<关键字〉
24、<双界符〉
25、<标识符〉
26、<常数〉
27、<单界符〉6.<关键字〉begin
28、bool
29、char
30、const丨do丨else
31、end丨false
32、for
33、if
34、integer
35、programIread
36、real
37、then
38、to
39、trueIIvarIwhile
40、write7.<双界
41、符〉-*<>
42、<=
43、>=
44、:=
45、/*
46、*/
47、..8.<标识符〉一<字母〉
48、<标识符〉<数字〉
49、<标识符〉<字母〉9.<常数〉一<整数〉
50、<布尔常数〉
51、<字符常数〉10.<整数〉一<数字〉
52、<整数〉<数字〉11.<布尔常数>-*■true
53、false12.<字符常数〉-除{’}外的任意字符串113.<运算符〉->+
54、-H/
55、〉
56、<2、词法分析系统流程设计用户请求2)、LL(1)分析法实验设计思想及算法:(1)定义部分:定义常fi、变fi、数裾结构。(2)初始化:设立LL(1)分析表、初始化变量空间(包括堆桟、结构体、数组、临时
57、变量等);(3)控制部分:从键盘输入一个表达式符号串;(4)利川LL(1)分析算法进行表达式处理:根据LL(1)分析表对表达式符号申进行堆栈(或其他)操作,输出分析结果,如果遇到错误则显示错误信息。JF鰌赚<秘»入LL(1)预測分析程序流程U!实验测试对词法分析:测试文件:programexample;a,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:=l+
58、2to3dob:=l(X);whilea〉bdoc:=5;forx:=l+dto3dob:=15;whilet〉bdoc:=5;repeata:=IO;untila〉b;end.分析结果:开始分析analyzerow1[保留字]program[林符]exampleanalyzerow2[保衍字]varanalyzerow3[标识符]a[单界符:逗号],[标识符]b[单界符:逗号],[标识符]c[保衔字]integeranalyzerow4[标识符]x[保留字]charanalyzerow5[保衍字]beginanalyzer
59、ow6[保衔字]if[单界符:左圆括号]([标识符]a[单界符:加号]+[标识符]c[单界符:星号]*[数字]3[标识符]b[单界符:右岡括号])[保衔字]and[单界符:左圆括号]([标识符]b[数字]3[单界符:右圆括兮])analyzerow7[保衍字]then[标识符]c[双界符6]:=[数字]3analyzerow8[标识符]x[双界符6]:=[数字]2[-中•界符:加号]+[单界符:左圆括号]([数字]3[单界符:星号]*[标识符]a[单界符:右圓括号])[单界符:减号]-[标识符]b[单界符:星号]*[标识符]
60、c[单界符:星号]*[数字]8analyzerow9[保留字]if[单界符:左M括号]([数字]2[单界符:加号]+[数字]3[标识符]a[单界符:右圆括号J)[保留字]and[单界符:左圆括号]([标识符]b[数字]3[单界符:右圆括号J)[保留字]and[单界符:左圆括号]([标识符]a[标识符]C[单界符:右树括号])analyzerow10[保留字]then[标识符]c[双界符6]:=[数字]3analyzerow11[保衔字]for[标识符]x[双界符6]:=[数字]1[羊界符:加号]+[数字]2[保衔字]to[数
61、字]3[保所字]doanalyzerow12[标识符]b[双界符6]:=[数字]100analyzerow13[保留字]while[标识符]a[标识符]b[保留字]doanalyzerow14[标识符]c[双界符6]:=[数字]5analyzerow15[保衔字]for[标识符]x[双界符
此文档下载收益归作者所有