安徽工程大学课程设计(论文)
《编译原理课程设计》任务书
1、本课题的目的及意义
课程设计实践对学生巩固所学基础专业课程知识、进行编译系统基本技能训练、培养实践动手能力,从而掌握编译系统的基本工作原理、基本方法和基本开发技术,最终达到具有一定的编译系统的实际开发能力有重要意义。通过课程设计,主要达到以下目的:1.帮助学生深入理解编译原理的有关理论和巩固编译原理相关知识。2. 巩固学生学习的编译原理、程序设计语言、数据结构等课程的基础知识,训练学生分析和解决编译系统的相关问题的能力,提高学生的综合素质。3. 从软件工程的角度来看,《编译原理》课程设计是一个很好的实例,可以训练学生软件设计的能力以及编码调试能力。
2、本课题任务的主要内容
本课程设计主要内容包括以下几点:
1、根据选定的题目,查阅资料,熟悉相关理论、方法; (1)掌握文献检索方法,以获得编译系统开发技术等相关资料; (2)学习并熟练使用一种4GL开发平台(如VC++、Java、Dephi、PB、VB
等);
2、分析问题,确定系统逻辑结构;
3、确定系统所需模块及模块结构,并用流程图描述各模块; 4、编码及调试程序; 5、撰写课程设计说明书。
3、提交的成果
1、一份符合课程设计说明书撰写规范的课程设计说明书。 2、一套系统原型。
第 1 页
安徽工程大学课程设计(论文)
LL(1)语法分析构造器的设计
指导教师 王勇 作者 陈慧娟
摘 要
语法分析的主要任务是接收词法分析程序识别出来的单词符由某种号串,判断它们是否语言的文法产生,即判断被识别的符号串是否为某语法部分。 一般语法分析常用自顶向下方法中的LL(1)分析法,采用种方法时,语法分程序将按自左向右的顺序扫描输入的的符号串,并在此过程中产生一个句子的最左推导,即LL(1)是指自左向右扫描,自左向右分析和匹配输入串。
我们使用VC++作为前端开发工具,在分析语法成分时比较方便直观,更便于操作。运行程序的同时不断修正改进程序,直至的到最优源程序。
关 键 字
语法分析 文法 自顶向下分析 LL(1)分析 最左推导
Abstract
Grammatical analysis of the main tasks was to receive lexical analysis procedure to identify the words from a website, string, and judge whether they have a grammar of the language, that is, judging by the series of symbols to identify whether a grammar part. General syntax analysis commonly used top-down methods of LL analysis, using methods, Grammar hours will be from the procedures of the order left-to-right scanning input string of symbols, and in the process produced one of the most left the sentence is derived, LL is scanned from left to right, From left to right analysis and matching input strings. After analysis, we use VC + + as a front-end development tool for the analysis of syntax ingredients more convenient visual, more easy to operate. Operational procedures at the same time constantly improving procedures, until the source of optimal
. Key Words
Grammatical analysis grammar Top-down analysis LL (1) Analysis Most left Derivation
第 2 页
安徽工程大学课程设计(论文)
目录
引言
第1章 概述??????????????????????????5
1.1 编写目的?????????????????????????5 1.2 项目背景?????????????????????????5 1.3 软件定义?????????????????????????6 1.4 开发环境?????????????????????????6
第2章 需求分析???????????????????????7
2.1问题陈述?????????????????????????7 2.2功能要求?????????????????????????7 2.3数据流图?????????????????????????8
第3章 设计任务分工???????????????????? 10
3.1 小组的任务分工??????????????????????10 3.2 本人主要工作???????????????????????10
第4章 系统设计??????????????????????? 11 4.1总体设计????????????????????????? 11
4.1.1 LL(1)文法改造和源程序预处理?????????????11 4.1.2 LL(1)文法的判别、消除左公因子、消除左递归??????14 4.1.3预测分析器的构造?????????????????? 16 4.1.4构造生成LL(1)语法树?????????????????18 4.2详细设计????????????????????????21
第5章 运行与测试结果???????????????????? 29 5.1测试数据??????????????????????????29 5.2界面实现情况????????????????????????29 结论与展望???????????????????????????30 参考文献???????????????????????????? 31 致谢???????????????????????????????32
第 3 页
安徽工程大学课程设计(论文)
引言
编译器的构造工具是根据用户输入的语言的文法,编译器的构造工具可以生成程序来处理以用户输入的文法书写的文本。随着计算机应用范围的扩大,在软件自动生成,文档处理,特定专业的语言等领域,编译器的构造工具这一技术显得越来越重要。
一个编译程序在对某个源程序完成了词法分析工作之后,就进入语法分析阶段,分析检查源程序是否是语法上正确的程序,并生成相应的内部中间表示供下一阶段使用。程序设计语言是一般形式语言的特例,程序语法正确性的检查正是语法句子的识别,语法分析问题也就是句型识别问题。按照识别句子时语法树建立的方式,有自顶向下与自底向上两大类分析技术。本课程设计讨论自顶向下的情况。
本次课程设计所做的工作是用VC要建立一个针对LL(1)文法的编译器的编译器。本文既可以以定义好的文法书写的文件作为输入,其中包括语法及语义动作,鉴于输入文件的所用的文法可以用LL(1)分析,于是对输入的文件用递归下降的分析方法在内存中建立它的存储结构,然后分别计算所输入的文法的非终结符号是否可以生成空,每个非终结符号的first集合,每个非终结符号的follow集合,以及每个规则的predict集合,接着判断任意一个非终结符号的任意两个规则的Predict集的交集是不是都为空,如果是则输入文法可以用递归下降法分析,否则不可以,用户应该对所输入的文法作适当的修改,使其满足LL(1)文法分析的要求,。如果所输入的文法可以用递归下降法分析,生成相应文法的语法分析程序。也可以自行添加文法,本课程设计有根据相应文法自动生成分析表和语法树,并将分析信息和结果保存到一个外部文件中的的功能,能灵活实现语法编译器的相应功能。
第 4 页
安徽工程大学课程设计(论文)
第1章 概述
1.1 编写目的
语法分析器通过接受词法分析程序识别出来的单词符号串,判断它们是否由某种语言的文法产生,即判断被识别符号串是否为某语法成分,同时进行语法检查,为后面的语义分析和代码生成作准备。本次课程设计所做的工作是用VC要建立一个针对LL(1)文法的编译器的编译器。本文既可以以定义好的文法书写的文件作为输入,其中包括语法及语义动作,鉴于输入文件的所用的文法可以用LL(1)语法分析,根据相应文法自动生成分析表和语法树,并将分析信息和结果保存到一个外部文件中的的功能,能灵活实现语法编译器的相应功能。
1.2 项目背景
编译程序是现代计算机系统的基本组成部分之一,而且多数计算机系统都配有不止一个高级语言的编译程序。由于早期的机器语言、汇编语言编写起来不容易、又枯燥无味,所以开发一种更类似数学定义和自然语言的简洁形式来编写程序的操作,应与任何机器无关的编译器十分重要。编译器的构造工具是根据用户输入的语言的文法,可以生成程序来处理以用户输入的文法书写的文本。随着计算机应用范围的扩大,在软件自动生成,文档处理,特定专业的语言等领域,编译器的构造工具这一技术显得越来越重要。
一个编译程序在对某个源程序完成了词法分析工作之后,就进入语法分析阶段,分析检查源程序是否是语法上正确的程序,并生成相应的内部中间表示供下一阶段使用。程序设计语言是一般形式语言的特例,程序语法正确性的检查正是语法句子的识别,语法分析问题也就是句型识别问题。按照识别句子时语法树建立的方式,有自顶向下与自底向上两大类分析技术。本课程设计讨论自顶向下的情况。
第 5 页