课 程 设 计 报 告课程名称 编译原理 实验项目 设计与实现一个词法分析器 实验仪器 PC 机 北京信息科技大学信息管理学院(课程上机)实验报告1
实验目的:结合讲授内容,进一步培育学生编译器设计的思想,加深对编译原理和应用程序的理解,针对编译过程的重点和难点内容进行编程,独立完成有一定工作量的语法分析程序设计任务,同时强调好的程序设计风格
实验内容:对输入的文法判定是否为 LL(1)文法,若是 LL(1)文法,则构造 LL(1)分析表,输入一个句子,依据 LL(1)分析表输出与句子对应的语法树
设计 LL(1)文法的词法分析器
实验要求:(1)输入一个文法 G(如:测试数据 1);(2)编写求 FIRST 集的算法;输出文法 G 的 First 集;(3)编写求 FOLLOW 集的算法;输出文法 G 的 FOLLOW 集;(4)编写求 SELECT 的算法,输出文法 G 的 SELECT 集;(5)判定是否为 LL(1)文法,若是,则编写构造 LL(1)分析表的算法,并输出预测分析表(6)编写表驱动的预测分析算法;(7) 给出输入一个句子(如:测试数据 2)的预测分析步骤; (8)输出依据句子构对应的语法树的过程; (9)构造文法 G 的递归子程序;(选作)测试数据 1:(若用其它测试数据,请替换下面内容)输入文法 G:S->aHH->aMd|dM->Ab|@A->aM|e测试数据 2:输入句子: aaabd#4
实验准备:5
实验过程:#include#include#include/*******************************************/int count=0; /*分解的产生式的个数*/int number; /*所有终结符和非终结符的总数*/char start; /*开始符号*/char termin[50]; /*终结