语法分析器

编译原理实验---语法分析器

对着背影说爱祢 提交于 2019-12-28 01:44:25
编译原理实验—语法分析器 一、算术表达式文法 VN = { E, T, E’, F, T’ } 其中:E为开始符号; VT = { +, -, , /, (, ), id, num } 其中:id代表标识符,要求是长度不超过10的字母序列;num代表常数,要求是正整数; 文法规则集如下: E→TE’ E’→+TE’| -TE’ |ε T→FT’ T’→ FT’| /FT’ |ε F→(E) | id | num 二、文法中每个非终结符的First集和Follow集 三、由产生式F→(E) | id | num构造的递归下降分解程序示例: PROCEDURE F IF SYM = ` id ` THEN ADVANCE ELSE IF SYM = ` num ` THEN ADVANCE ELSE IF SYM = ` ( ` THEN BEGIN ADVANCE ; E IF SYM = ` ) ` THEN ADVANCE ELSE ERROR END ELSE ERROR 其中,SYM代表输入串指针所指的符号;ADVANCE代表把输入指针调至下一输入符号。 四、程序代码 # include <iostream> # include <stdio.h> # include <cctype> # include <string.h> # include <iomanip> #

5.JavaCC官方入门指南-概述

折月煮酒 提交于 2019-12-02 06:01:49
一、前言   在最开始使用JavaCC的时候,从网上查询了许多资料,但是网上的资料水平是参差不齐的,走了许多弯路,不得已自己查阅了英文版官网文档。令我伤心的是最后我回过头来再看那些博客资料时,发现其实他们写的都是没错的,只不过某些地方少了必要的讲解,以至于新手刚接触的时候是持续懵逼的。   不管怎样,下面内容是对官方文档的翻译,加上一些自己的理解。   官方文档连接: https://www.engr.mun.ca/~theo/JavaCC-Tutorial/javacc-tutorial.pdf   这里所翻译的部分是JavaCC的入门知识,通过由浅入深的几个小例子,可以循序渐进的一步步了解JavaCC技术。 二、 JavaCC概述   JavaCC全称为Java Compiler Compiler,它是一个生成器,用于生成词法分析器(lexical analysers)和语法分析器(parsers)。它可以通过读取一个词法和语法描述文件(即词法和语法描述是写在同一个文件中的),来生成一个java程序,这个java程序就包括了词法分析器和语法分析器。接着就可以用生成的词法分析器和语法分析器来对我们的输入进行判断,判断输入是否符合我们所要求的语法规则。   编程语言中的编译器,其实就包含了词法分析器和语法分析器,编译器便是通过这两者来识别我们所编写的代码。除了在编译器中的应用之外