深化浅出基于Java的注释器筹划情势[Java编程]
本文“深化浅出基于Java的注释器筹划情势[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
1、引子
其实没有什么好的例子引入注释器情势,因为它描写了若何构成一个简单的语言注释器,主要利用在利用面向对象语言开辟编译器中;在实际利用中,我们大概很少碰到去构造一个语言的文法的情形.
固然你几近用不到这个情势,但是看一看还是能遭到一定的启迪的.
2、定义与构造
注释器情势的定义以下:定义语言的文法,并且成立一个注释器来注释该语言中的句子.它属于类的行为情势.这里的语言意思是利用规定格局和语法的代码.
在GOF的书中指出:假如一种特定范例的问题发生的频率充足高,那么大概就值得将该问题的各个实例表述为一个简单语言中的句子.这样便可以构建一个注释器,该注释器通过注释这些句子来办理该问题.并且当文法简单、效率不是关键问题的时刻效果最好.
这也就是注释器情势利用的环境了.
让我们来看看奥秘的注释器情势是由什么来构成的吧.
1) 抽象表达式角色:声明一个抽象的注释操作,这个接口为全部具体表达式角色(抽象语法树中的节点)都要实现的.
什么叫做抽象语法树呢?《java与情势》中给的注释为:抽象语法树的每一个节点都代表一个语句,而在每个节点上都可以履行注释办法.这个注释办法的履行就代表这个语句被注释.由于每一个语句都代表这个语句被注释.由于每一个语句都代表一个常见的问题的实例,因此每一个节点上的注释操作都代表对一个问题实例的解答.
2) 终结符表达式角色:具体表达式.
a) 实现与文法中的终结符相关联的注释操作
b) 并且句子中的每个终结符需求该类的一个实例与之对应
3) 非终结符表达式角色:具体表达式.
a) 文法中的每条法则R::=R1R2…Rn都需求一个非终结符表带式角色
b) 关于从R1到Rn的每个标记都保护一个抽象表达式角色的实例变量
c) 实现注释操作,注释普通要递归地调用表示从R1到Rn的那些对象的注释操作
4) 上下文(环境)角色:包含注释器之外的一些全局信息.
5) 客户角色:
a) 构建(大概被给定)表示该文法定义的语言中的一个特定的句子的抽象语法树
b) 调用注释操作
放上张注释器构造类图吧,这也是来自于GOF的书中.
对每一个角色都给出了具体的职责,并且在类图中给出五个角色之间的关系.这样实现起来也不是很艰难了,下面举了一个简单的例子,但愿能加深你对注释器情势的理解.
以上是“深化浅出基于Java的注释器筹划情势[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |