21编译原理课程设计报告软件学院05级学号:20054451姓名:辛华时间:2007年7月25日
21一、词法分析1、实验目的编程实现词法分析程序,加深理解对词法分析原理。2、实验要求a、识别出特殊符号(用顿号隔开),如、、、、、、、、、、、、、、、、、、、等b、识别出关键字,如ifthe
whiledoe
dfor等c、识别其它标记ID和NUM,并通过以下正规式定义其他标记:IDletterletterdigitletterabzABZNUMdigitdigitdigit0193、算法思路:本程序每次判断均连续输入几个的词,不同的词之间用“空格”隔开,因为所输入的字符串中含有“空格”,故在输入的时候启用文本监视器,利用字符串解析器扫描所输入的字符串,以逗号,空格,分号分开,以javautil包中的模式匹配生成文法和保留字对每个toke
进行分析,测试其匹配的模式,把它们区分开来4、程序流程图主程序流程图NY结束是否输入结束字符?输出判断结果子程序扫描置初值开始
21扫描程序流程图NYYNYNYNYN5.运行环境JDK60实验二:LL1语法判断一、实验目要求:自定义一个文法集,输入文法产生式,计算文法的FIRST,FOLLOW和SELECT集合,开始往下个字符扫描输出判断结果是否关键字?是否是结束字符?是否运算符?结束无法识别是否数字?是否空格?
21利用SELECT集合构造预测分析表,接着用预测分析程序,栈和预测分析表对输入串进行分析,给出分析过程。二、设计思想:设计算法实现:(1)求FIRST集用关系图法(a)每个文法符号对应图中一个结点。(b)如果文法中有产生式AαXβ且αε,则从对应A的结点到对应X的结点连一条箭弧。(c)凡是从FIRSTA的结点有路径可到达的终结符结点所标记的终结符都为FIRSTA的成员。(d)判定ε是否为某非终结符FIRST集的成员,若是则将加入该非终结符的FIRST集中。(2)求FOLLOW集对于G中的每一A∈VN,为构造FOLLOW(A),可反复使用如下的规则,直到每个FOLLOW集不再增大为止。a对于文法的开始符号S,令∈FOLLOW(S)。br