编译原理课程设计报告c-语言词法与语法分析器的实现本科论文.docVIP

  • 0
  • 0
  • 约2.28万字
  • 约 35页
  • 2017-04-12 发布于辽宁
  • 举报

编译原理课程设计报告c-语言词法与语法分析器的实现本科论文.doc

编译原理课程设计报告c-语言词法与语法分析器的实现本科论文

编译原理课程设计报告 课题名称: 编译原理课程设计 C-语言词法与语法分析器的实现 提交文档学生姓名: 提交文档学生学号: 同组 成 员 名 单: 指导 教 师 姓 名: 指导教师评阅成绩: 指导教师评阅意见: . . 提交报告时间: 年 月 日 C-词法与语法分析器的实现 1.课程设计目标 (1) C-语言拥有一个完整语言的基本属性,通过编写C-语言的词法分析和语法分析,对于理解编译原理的相关理论和知识有很大的作用。通过编写C-语言词法和语法分析程序,能够对编译原理的相关知识:正则表达式、有限自动机、语法分析等有一个比较清晰的了解和掌握。 (2)C-语言的词法说明 ① 语言的关键字: else if int return void while 所有的关键字都是保留字,并且必须是小写。 ②专用符号: + - * / = = == != = ; , ( ) [ ] { } /* */ ③其他标记是ID和NUM,通过下列正则表达式定义: ID = letter letter* NUM = digit digit* letter = a|..|z|A|..|Z digit = 0|..|9 注:ID表示标识符,NUM表示数字,letter表示一个字母,digit表示一个数字。 小写和大写字母是有区别的。 ④ 空格由空白、换行符和制表符组成。空格通常被忽略。 ⑤ 注释用通常的c语言符号/ * . . . * /围起来。注释可以放在任何空白出现的位置(即注释不能放在标记内)上,且可以超过一行。注释不能嵌套。 (3)程序设计目标 能够对一个程序正确的进行词法及语法分析。 2.分析与设计 (1)设计思想 词法分析 词法分析的实现主要利用有穷自动机理论。有穷自动机可用作描述在输入串中识别模式的过程,因此也能用作构造扫描程序。 语法分析 语法分析采用递归下降分析。递归下降法是语法分析中最易懂的一种方法。它的主要原理是,对每个非终结符按其产生式结构构造相应语法分析子程序,其中终结符产生匹配命令,而非终结符则产生过程调用命令。因为文法递归相应子程序也递归,所以称这种方法为递归子程序下降法或递归下降法。其中子程序的结构与产生式结构几乎是一致的。 (2)程序流程图 程序主流程图: 词法分析: 语法分析: 词法分析子流程图: 语法分析子流程图: 3.程序代码实现 整个词法以及语法的程序设计在一个工程里面,一共包含了8个文件,分别为main.cpp、.cpp、scan.cpp、util.cpp、scan.h、util.h、 globals.h、parse.h,其中scan.cpp和scan.h为词法分析程序。 以下仅列出各个文件中的核心代码: Main.cpp #include globals.h #define NO_PARSE FALSE #include util.h #if NO_PARSE #include scan.h #else #include parse.h #endif int lineno=0; FILE * source; FILE * listing; FILE * code; int EchoSource = TRUE; int TraceScan=TRUE; int TraceParse=TRUE; int Error = FALSE; int main(int argc,char * argv[]) { TreeNode * syntaxTree; char pgm[120]; scanf(%s,pgm); source=fopen(pgm,r); if(source==NULL) { fprintf(stderr,File %s no

文档评论(0)

1亿VIP精品文档

相关文档