[发明专利]一种基于Java的CUP构造编译器的实现方法在审
| 申请号: | 202010695130.7 | 申请日: | 2020-07-19 |
| 公开(公告)号: | CN114020269A | 公开(公告)日: | 2022-02-08 |
| 发明(设计)人: | 杨际荣 | 申请(专利权)人: | 江苏华扬信息科技有限公司 |
| 主分类号: | G06F8/41 | 分类号: | G06F8/41 |
| 代理公司: | 暂无信息 | 代理人: | 暂无信息 |
| 地址: | 212009 江苏省镇江市新区*** | 国省代码: | 江苏;32 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 java cup 构造 编译器 实现 方法 | ||
一种基于Java的CUP构造编译器的实现方法:介绍了编译器自动生成器的基本原理,探讨了基于Java的CUP及其出错恢复机制,通过设计一个简单计算器,阐述了利用CUP(Constructor ofUseful Parsers)构造编译器的方法。
技术领域
本发明涉及一种基于Java的CUP构造编译器的实现方法,此技术主要是了利用CUP(Constructor ofUseful Parsers)构造编译器的方法。
背景技术
编译程序是计算机系统软件的一个重要组成部分,许多场合我们都会面临自己设计编译器的问题。
作为计算机应用中最常用的工具之一,编译器可以将我们所习惯使用的自然语言转换为等价的计算机可识别的数据结构。由于编译程序基本都是语法制导的,因此其分析部分的一项重要内容便是语法结构的识别。具体的分析过程一般先由词法分析器读人源程序的字符,然后利用语法分析器读人前面词法分析器输出的这些单词流,并建立.相应源程序的语法结构,语义分析器接着根据语法结构分析、检查程序的静态语义。
词法分析器、语法分析器和语义分析器是编译器的三个重要组成模块,另外还有一些模块会对我们构造编译器产生积极作用,例如中间代码生成器、中间代码优化器和代码生成器等,但这几个模块我们可以根据具体情况决定是否选择使用。程序设计人员在设计时完全靠手工来进行词法分析器、语法分析器的设计,毫无疑问其工作量繁重且效率不高。针对这种情况。我们可以在设计时有针对性的选择一些自动生成工具。利用这些词法分析器、语法分析器自动生成工具设计人员可以脱离具体设计细节。需要做的只是用正则表达式描述清楚这些单词符号的构成规则和用上下文无关文法描述清楚语言的语法规则,然后自动生成工具就会根据设计人员已描述好的词法规则和语法规则生成对应的词法分析器和语法分析器。但是这些自动生成工具不能只根据这些词法规则和语法规则来自动完成语义检查和生成相应的目标代码。为了解决这个问题,我们可以根据需要在分析器自动生成工具中插入代码.利用这些代码进行语义检查并生成目标代码。通过充分结合自动生成和人工插入代码的方式,词法分析器和语法分析器可以很好的实现一个编译器。
发明内容
基于上述问题,特此发明一种基于Java的CUP构造编译器的实现方法;作为Java运行环境下一种自动生成工具.CUP(Constructor ofUseful Parsers)与其它自动生成工具工作原理相似:首先读人按CUP语法规则编写的源程序,这些Java源程序代码段包含了词法规则、文法规则及与此文法规则相联系的语义动作:然后按照这些规则自动生成该文法Java代码形式的语法分析器。为了更好的说明CUP源程序的结构,本文以一个简单实用的计算器为例子,介绍了CUP源程序以及如何利用CUP来设计一个编译器,此例中我们设定该计算器接受命令行输入,可以完成若干正整数的加、减和乘法运算。
具体实现方法
首先对源代码进行预先声明; 预先声明部分规定如何产生分析器,还提供了运行时的代码。预先声明段一般可以根据具体需要决定是否选择。上述计算器中预先声明段包含了包声明和导入类声明两项内容。对于可选的预先声明项,以若干关键字和“(:”开始、“:)”结尾;相应java代码写在“{:”和“:)”中间,并会被复制到分析器的类定义中。
第二进行2符号列表定义; 每个CUP源程序中都必须包含符号列表,符号列表为其中包含的终结符和非终结符提供类型说明。终结符的语法格式是:
terminal Classname namel,name2,⋯⋯;
Classname是符号所对应的java类型,无Classname则被认为是Object类型。该类型的终结符的多个名字可在此Classname后列出来,且各终结符之间以逗号分隔。词法分析器识别PLUS符号后会将表示PLUS的代码传递给语法分析器;但词法分析器识别NUMBER后不仅要传递表示NUMBER的代码,还要传递具体的值。非终结符与终结符的声明方式相同。但以nonterminal起始。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于江苏华扬信息科技有限公司,未经江苏华扬信息科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010695130.7/2.html,转载请声明来源钻瓜专利网。





