2008-04-09

CT中表达式处理的思考

关键字: commontemplate, 表达式
目前的CT中,对于表达式的处理是根据操作符的优先级生成一个二叉树。有兴趣的朋友可以看看ExpressionReducer.java 这个类。这种处理方式可以说是中缀表达式的方式吧。然后到解释模板内容的时候,再遍历这个二叉树。 那么,是不是可以考虑换一种方式呢?也就是后缀表达式的形式。后缀表达式的最终结果就是一个栈的结构,在Java中就好像是一个List。而当对这个表达式进行解释的时候,只需要对栈进行从上到下的访问就可以了。 两种方式哪个更好?个人觉得后缀表达式更好一些。原因有以下几点:1、使用中缀表达式需要生成一个树形结构,而模板本身为了缓存,进行了序列化操作,从序列化的角 ...
2008-04-07

BNF范式

关键字: bnf
每一个经历都是一个宝贵的财富。加入CommonTemplate也是如此。通过阅读它的代码,我学习了自动机的知识,看到编译原理这个大门。于是,又勾起了我的另一个兴趣:我想看看门的里面到底有什么东西。听说这个门挺重的,不好开,不过没关系,我每天只开1厘米,开到什么程度算什么程度吧! “龙书”的第一章应该是基础,不过其中的bnf不太好理解,发现下面这个文章写的不错,能够帮助理解书的内容。抄录一下,日后再次温习。 什么是BNF范式,什么又是EBNF范式? 巴科斯范式及其扩展 BNF & Augmented BNF 什么是巴科斯范式?   巴科斯范式(BN ...
最近一直在写操作符处理的单元测试。正如liangfei所说,想要更好的优化表达式,首先得十分了解操作符的功能,而写单元测试就是非常好的一个途径。十分赞同这个观点,所以我最近一直在写测试,也确确实实地了解了操作符的功能。 在测试类中如何获得操作符对象呢?我参考了一下写完的测试类,发现是 new 出来的。可是在程序中,操作符不是new出来的,而是通过一个IOC容器获得的,而且获得是某一种操作符的handler,例如下面这样: Configuration config = PropertiesConfigurationLoader.loadStandardConfiguratio ...
yananay
搜索本博客
我的相册
D35bafa8-5bf0-475f-aa06-16f3080557a1-thumb
tdd
共 3 张
存档
最新评论