- 浏览: 1680336 次
- 性别:
- 来自: 杭州699号
文章分类
最新评论
-
莫莫摸:
为什么不用dubbo
RCP数据传输模型回顾 -
大胡子爸爸:
String, Class 都实现了Serializable接 ...
RPC框架几行代码就够了 -
lss598018587:
谢谢大神分享,比起新手看复杂的dubbo框架还不如看大神的这一 ...
RPC框架几行代码就够了 -
15606915740:
你好,请问一下。<dubbo:consumer filt ...
Dubbo文档 -
joqk12345:
...
一些设计上的基本常识
CommonTemplate: http://www.commontemplate.org
问题来源:
http://javatar.iteye.com/blog/187669
解决方案:
在core包增加接口, 使外部构建树或表达式简化.
外部构建树或表达式通常分两种:
自顶向下: 也就是先创建父节点, 再压入子节点(通过栈的方式, 压入完所有子节点后弹出父节点).
自底向上: 也就是先创建子节点, 再创建父节点(在创建时将子节点传入).
基于这些, 提供了以下接口, 这些接口通过TemplateEngine和ExpressionEngine调用.
问题来源:
http://javatar.iteye.com/blog/187669
解决方案:
在core包增加接口, 使外部构建树或表达式简化.
外部构建树或表达式通常分两种:
自顶向下: 也就是先创建父节点, 再压入子节点(通过栈的方式, 压入完所有子节点后弹出父节点).
自底向上: 也就是先创建子节点, 再创建父节点(在创建时将子节点传入).
基于这些, 提供了以下接口, 这些接口通过TemplateEngine和ExpressionEngine调用.
package org.commontemplate.core; /** * 模板构建器, 为外部引擎或存储方式提供模板构建接口, 适合于自顶向下的构建方式. * (非线程安全) * * @author liangfei0201@163.com * */ public interface TemplateBudiler { /** * 获取构建结果模板 * * @return 模板 */ public Template getTemplate(); /** * 开始模板 * * @param templateName 模板名称 */ public void beginTemplate(String templateName); /** * 结束模板 */ public void endTemplate(); /** * 开始块指令 * * @param directiveName 指令名 * @param expression 指令表达式 */ public void beginBlockDirective(String directiveName, Expression expression); /** * 结束块指令 */ public void endBlockDirective(); /** * 添加指令 * * @param directiveName 指令名 * @param expression 指令表达式 */ public void addDirective(String directiveName, Expression expression); /** * 添加文本 * * @param text 文本内容 */ public void addText(String text); /** * 添加注释内容 * * @param comment 注释内容 */ public void addComment(String comment); }
package org.commontemplate.core; import java.util.List; /** * 模板元素工厂, 为外部引擎或存储方式提供模板组装元素, 适合于自底向上的构建方式. * * @author liangfei0201@163.com * */ public interface ElementFactory { /** * 创建注释 * * @param comment 注释内容 * @return 注释 */ public Comment createComment(String comment); /** * 创建文本 * * @param text 文本内容 * @return 文本 */ public Text createText(String text); /** * 创建行指令 * * @param name 指令名 * @param expression 指令表达式 * @return 行指令 */ public Directive createDirective(String name, Expression expression); /** * 创建块指令 * * @param name 指令名 * @param expression 指令表达式 * @param elements 块指令内部元素 * @return 块指令 */ public BlockDirective createBlockDirective(String name, Expression expression, List elements); }
package org.commontemplate.core; /** * 表达式 构建器, 为外部引擎或存储方式提供自顶向下的构建方式. * (非线程安全) * * @author liangfei0201@163.com * */ public interface ExpressionBuilder { /** * 获取表达式结果 * * @return 表达式 */ public Expression getExpression(); /** * 添加一元操作符, 将把紧随其后添加表达式(包括操作符,变量,常量)作为参数. * * @param operatorName 操作符名 */ public void addUnaryOperator(String operatorName); /** * 添加二元操作符, 将把紧随其后添加的两个表达式(包括操作符,变量,常量)作为参数. * * @param operatorName 操作符名 */ public void addBinaryOperator(String operatorName); /** * 添加变量 * * @param variableName 变量名 */ public void addVariable(String variableName); /** * 添加常量 * * @param value 常量值 */ public void addConstant(Object value); }
package org.commontemplate.core; /** * 表达式组件工厂, 为外部引擎或存储方式提供表达式组装元素, 适合于自底向上的构建方式. * * @author liangfei0201@163.com * */ public interface ExpressionFactory { /** * 创建常量 * * @param constantValue 常量值 * @return 常量表达式 */ public Constant createConstant(Object constantValue); /** * 创建变量 * * @param variableName 变量名 * @return 变量表达式 */ public Variable createVariable(String variableName); /** * 创建一元操作符 * * @param operatorName 操作符名 * @param operand 操作数 * @return 一元操作符表达式 */ public UnaryOperator createUnaryOperator(String operatorName, Expression operand); /** * 创建二元操作符 * * @param operatorName 操作符名 * @param leftOperand 左操作数 * @param rightOperand 右操作数 * @return 二元操作符表达式 */ public BinaryOperator createBinaryOperator(String operatorName, Expression leftOperand, Expression rightOperand); }
发表评论
-
以HTTL为例讲讲模块分包&领域模型&扩展框架
2011-10-09 20:08 16450注:该博客内容已加入 ... -
CommonTemplate增加HTML标签版语法外套
2008-09-09 10:33 2924CommonTemplate(http://www.commo ... -
CommonTemplate访问者设计思考
2008-09-03 10:45 1709经过多个版本的调整, CommonTemplate(http: ... -
CommonTemplate发布0.8.6版本
2008-08-26 20:49 1762CommonTemplate发布0.8.6版本 ... -
CommonTemplate发布0.8.5版本
2008-08-04 13:23 1842CommonTemplate发布0.8.5版本(2008-08 ... -
CommonTemplate加入代码生成器
2008-07-21 13:15 2195模板引擎经常被用于做代码生成, 为此, CommonTempl ... -
加入对YAML数据格式的支持
2008-07-01 12:41 3957CommonTemplate(http://www.commo ... -
嵌套注释语法思考
2008-06-29 14:40 3918主流的C/C++/Java/C#等语言,都将注释语法设计成不可 ... -
转:开源协议
2008-06-10 17:23 2162来源:网络 (1)Contrib ... -
CommonTemplate完成查看器Viewer.exe(及安装程序)
2008-06-04 15:12 1834完成查看器初始版本. 实现功能: 双击*.ctl文件, 自动读 ... -
CommonTemplate异常国际化完成
2008-05-26 11:48 1892周未把一个累活给干了, 就是异常信息的国际化. 总共有220多 ... -
CommonTemplate加入对无穷数的支持.
2008-05-23 11:07 2708用"*"号表示无穷数, 常在下标号中使用, ... -
CommonTemplate导出模板所需变量结构
2008-05-12 18:28 2232在velocity的邮件列表中收到下面的邮件: Simon G ... -
CommonTemplate完成$snatch指令
2008-05-06 09:20 1857CommonTemplate(http://www.commo ... -
关于CTE当前API无法支持从非引擎方式构建模板树
2008-04-28 17:20 1761因隐藏了模板树的实现, 现在CommonTemplate(ht ... -
CommonTemplate完成DEBUG单步调试
2008-04-21 09:56 2481CommonTemplate(http://www.commo ... -
CommonTemplate准备加入$breakpoint指令
2008-04-19 10:30 2154准备在CommonTemplate( http://www.c ... -
很高兴桂林兄加入CommonTemplate的开发
2008-04-05 20:49 2893桂林的blog: http://jasongreen.itey ... -
展开式序列实现
2008-03-31 22:47 2042现在CommonTemplate(http://www.com ... -
CommonTemplate 0.8.3 版本发布
2008-03-31 15:05 2168项目地址: http://www.commontemplat ...
相关推荐
POJ2014考研试题表达式·表达式树·表达式求值答案
在上一阶段对字元提取的基础上,完成了表达式树的构建,通过这一表达式树的建立,可以很容易生成可顺序执行的基于堆栈的代码,这在脚本解析系统,已经编译器中是一个重要的部分。
二叉树的C语言实现 构建表达式树,分别前序遍历、中序遍历、后序遍历表达式树 同事在main文件中,有测试代码。
输入中缀表达式 输出后缀表达式树 VC6.0
(2) 初始化表达式树; (3) 生成表达式树; (4) 输出表达式树的各种遍历的结果; (5) 打印表达式树; (6) 删除表达式树; (7) 设计相应的“菜单”,通过键盘输入选择,完成实验要求的测试。 [选作内容] ...
动态创建表达式树、执行表达式树及表达式树的调试,使读者能熟练认识表达式树在动态查询上带来的便利。
将简单的中缀表达式转换成表达式树,然后利用表达式树对中缀表达式进行求值。
C# 表达式树教程,阐释表达式树的原理,结合lambda表达式讲解
Expression表达式树缓存 Expression表达式树序列化
给定一个表达式,输出其中缀表达式,利用了栈和二叉树,是理解数据结构很好的资料
中缀表达式转后缀生产表达式二叉树,并在控制台中画出。
表达式树的建立和遍历,表达式树的建立使用中缀表达式,输出可产生中缀表达式和后缀表达式两种,并计算出结果。
C++实现的表达式树。测试的组合有 3 4 + 2 * 2 3 4 * + x x - a b + * x 1 * x 3 + 2 * 3 4 5 * + 3 4 5 ^ + 3 4 5 ^ % 31 x + 42 5 ^ % xcc xc - aa bb + * x 1 % x ^ 10 + 可将上面字符复制到测试文件中,文件名写...
标识符树与表达式求值[定义].pdf
3、要求在语法分析模块中利用语法制导翻译技术完成具体的中缀表达式到后缀表达式的翻译,其中包括按前述翻译器的规格说明构建对应表达式、项、因子的非终结符expr、term和factor的函数以及检查记号是否匹配的函数;...
这个程序是根据数据结构中二叉树,根据这个树,输入表达式,然后创建树,输出计算结果还有遍历等信息
利用树计算简单表达式 排序 利用树计算简单表达式 排序
(1)题目一的内容和要求: 1、编写已知二叉树的先序、中序序列,恢复此二叉树的程序 2、编写求二叉树深度的程序 (2)题目二的内容和要求: 1、算术表达式由操作数、运算符和界限... 3、依据后缀表达式计算表达式的值
表达式解析表达式解析表达式解析表达式解析表达式解析表达式解析
正则表达式 正则表达式 正则表达式 正则表达式 正则表达式 正则表达式 正则表达式 正则表达式 正则表达式 正则表达式 正则表达式 正则表达式