CT重构-充实模板域模型

在CommonTemplate([url]http://www.commontemplate.org[/url])的模板域模型中, 包含两个解析树结构:

一、指令树:

Directive (指令, 接口)
Text (文本块,内置)
Comment (注释块,内置)
LineDirective (行指令,可扩展)
BlockDirective (块指令, 接口)
StartBlockDirective (起始块指令,可扩展)
MiddleBlockDirective (中间块指令,可扩展)
EndDirective (结束指令,标识)


二、表达式树:

Expression (表达式, 接口)
Constant (常量,内置)
Variable (变量,内置)
Operator (操作符, 接口)
UnaryOperator (一元操作符,可扩展)
BinaryOperator (二元操作符,可扩展)
Parenthesis (括号,标识)


接口:归类接口
内置:编译器内置实现。
可扩展:用户可扩展实现。
标识:不出现在编译结果树中。

已暴露在core包中的有:
指令树中的:
Directive,BlockDirective
表达式树中的:
Expression,Operator,UnaryOperator,BinaryOperator

现准备将:
指令树中的:
Text, Comment
表达式树中的:
Constant, Variable
也移到core包,
因为这些是指令树或表达式树的基本元素,放到core可以使模板域模型更充实,
如:用户若需要判断指令是不是文本,就可以用 if (directive instanceof Text)

而EndDirective和Parenthesis,作为标识,编译后就已抛弃,放在core包没有意义。
StartBlockDirective和MiddleBlockDirective的区分是虚拟的,在指令树中都以同样的BlockDirective保存,所以也不应该放在core包.

LineDirective似乎也应放到core包,作为BlockDirective的补集,这样会使Directive的组成部分比较完整,待进一步思考确定。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值