`
javatar
  • 浏览: 1704648 次
  • 性别: Icon_minigender_1
  • 来自: 杭州699号
社区版块
存档分类
最新评论

MeteorTL发布属性语法外套

    博客分类:
  • HTTL
阅读更多
MeteorTL模板引擎:
http://www.meteortl.org
http://meteortl.sourceforge.net

<html>
  <body>

    <!--标准语法 -->
    @if{users != null && users.size > 0}
    <table border="1">
      @for{user : users}
      <tr>
        <td>@{status.index + 1}</td>
        <td>@{user.name}</td>
        <td>@{user.coins}</td>
      </tr>
      @end
    </table>
    @end

    <!-- 注释版语法外套 -->
    <!--@if{users != null && users.size > 0}-->
    <table border="1">
      <!--@for{user : users}-->
      <tr>
        <td>@{status.index + 1}</td>
        <td>@{user.name}</td>
        <td>@{user.coins}</td>
      </tr>
      <!--@end-->
    </table>
    <!--@end-->

    <!-- 属性版语法外套 -->
    <table m:if="users != null && users.size > 0" border="1">
      <tr m:for="user : users">
        <td><span m:out="status.index + 1">james</span></td>
        <td><span m:out="user.name">james</span></td>
        <td><span m:out="user.coins">2</span></td>
      </tr>
    </table>

  </body>
</html>


两版语法外套都是在借鉴了其它模板及框架的基础上实现的。
属性版语法外套已在0.3.1版本完成。

语法外套的目标是维护html的WYSWYG以及简便性,
语法外套都会被预编译成标准语法。

欢迎大家提出新的语法构想。
分享到:
评论
6 楼 javatar 2007-09-08  
经过crofton一提醒,发现大家已经太习惯${}形式了,
而我考虑的JavaScript问题(即:在JS中经常用$()作为getElementById()取值,和${}容易混崤的问题)是否值得为此改变习惯?
思索良久,感觉使用习惯的方式,更容易被接受,对推广也更有益,
准备接纳crofton的想法,顺应习惯,将${}作为默认语法,
当然,继续保持语法的可自定义性,喜欢用其它标识符的也可以自己设置,
这是第二次向习惯妥协了,上一次是注释风格的更改:
http://javatar.iteye.com/blog/118734
5 楼 javatar 2007-09-07  
crofton 写道
一个问题:能否配置使用${}形式,毕竟这种方式比较通用,眼比较熟。因为主要用在邮件模板以及XML模板,没有JavaScript问题。


语法是可以自定义的,可以查看:
语法定义:
org.meteortl.config.Syntax
语法注册:
org.meteortl.standard.StandardConfiguration#setSyntax
4 楼 javatar 2007-09-07  
flash 写道
楼主的这个框架挺好。就是不知道性能怎么样,有没有与jsp和其它模板的性能对比测试?


关于性能方面:

(1)解析时,采用针对特定语法写的低级专有DFA解析器解析,比FreeMarker等使用通用抽象的E-BNF语法体系解析(Java中一般用JavaCC或AntLR)要快,因为E-BNF为了通用,考虑了太多因素。当然,E-BNF在处理复杂语法(比如要解析C/C++/Java的语法等时)很有优势,但MeteorTL的语法非常简单且统一,所以使用专有的解析器是比较好的选择,
准备把这一点也写到MeteorTL的优势中去,(BTW: Django模板的优势中也写着使用低级解析器)

(2)解析后,结果被表示成一个线程安全(不变类级)的指令树,可以在多线程中任意重复使用,避免使用重复解析或克隆等性能损耗。

(3)并且,解析结果可以被序列化冻结,系统重启后,可以从冻结结果直接还原,不必再解析,也就是说模板只有第一次加载时才需要解析。

(4)解析或还原的模板,都可以在内存中缓存起来,以减少IO量,并且缓存策略是可扩展的。(已内置实现了NONE, STRONG, SOFT, FIFO, LRU, MRU, OSCACHE, EHCACHE等缓存策略)
3 楼 crofton 2007-09-07  
感觉不错,语法很对胃口,大概看了一下代码,定制能力很不错,比较关心的是稳定和性能。
一个问题:能否配置使用${}形式,毕竟这种方式比较通用,眼比较熟。因为主要用在邮件模板以及XML模板,没有JavaScript问题。
2 楼 flash 2007-09-07  
楼主的这个框架挺好。就是不知道性能怎么样,有没有与jsp和其它模板的性能对比测试?
1 楼 xly_971223 2007-05-16  
这是楼主自己想的还是心语法?

相关推荐

    编译原理属性文法与语法制导翻译(1)

    编译原理属性文法与语法制导翻译(1)

    面试题练习题前端 JavaScript高级语法-字符串属性

    面试题练习题前端 JavaScript高级语法-字符串属性面试题练习题前端 JavaScript高级语法-字符串属性面试题练习题前端 JavaScript高级语法-字符串属性面试题练习题前端 JavaScript高级语法-字符串属性面试题练习题前端...

    编译原理课设:属性计算-递归下降语法分析器

    设计递归下降翻译器,完成语法分析和中间代码翻译。 输入:一个完整的源程序 输出:与输入对应的一个语法树、四元式序列 2、资源 课设报告word 课设源码 3、开发环境 编程语言:C++ IDE:VS 2019

    属性文法与语法制导翻译

    属性文法与语法制导翻译 给语法上各个符号赋予一定的含义并且将各个符号进行有结构的连接,可以形成语言的具体语句的含义。这给予我们以启示:可以通过扩充文法,在文法符号上附着某些语义信息,并在这些语义信息间...

    我们可以将逻辑程序转换为属性语法吗?-研究论文

    在本文中,我们研究了属性语法与逻辑程序之间的关系,着重于将逻辑程序转换为属性语法。 这在逻辑程序的编译技术中具有潜在的应用程序。 似乎不可能将任意逻辑程序转换为属性语法,因为基本上相同的逻辑变量有时可以...

    编译原理 语法分析 语法树生成

    本主题主要关注的是“语法分析”和“语法树生成”,特别是如何使用经典的工具yacc(Yet Another Compiler-Compiler)和lex来实现C++语言的语法分析器。 首先,我们来了解一下什么是语法分析。语法分析是编译器设计...

    JS语法字典 JS语法字典 JS语法字典

    JS语法字典JS语法字典JS语法字典JS语法字典JS语法字典JS语法字典JS语法字典JS语法字典JS语法字典JS语法字典JS语法字典JS语法字典JS语法字典JS语法字典JS语法字典JS语法字典JS语法字典JS语法字典

    Html语法大全.pdf

    图像的语法格式为:,其中 src 属性是图像 URL,alt 属性是图像替代文字,width 和 height 属性是图像宽度和高度,border 属性是图像边框宽度,align 属性是图像对齐方式。 表格 Html 的表格包括表格结构、表格...

    SmPL语法文档说明

    该语法的文档版本为1.0.6,由2016年9月27日发布。 首先,SmPL语法的主要内容是用标准符号书写的,但在一些规则中,左侧(即规则名称)都是大写。这些是宏,它们可以将一个或多个语法规则的右侧作为参数。此外,SmPL...

    一个带界面的词法分析+语法分析语法树生成

    词法分析、语法分析以及语法树是编译原理中的核心概念,它们在程序设计语言的解析和理解过程中起着至关重要的作用。在这个Java实现的项目中,这些概念被集成到一个具有图形用户界面(GUI)的工具中,使得学习和实践...

    Markdown语法大全(超级版).pdf

    Markdown文件应该以纯文本形式原样发布,不应该包含标记标签和格式化指令。 Markdown语法集合相对较小,只是HTML标签的一小部分。对于Markdown中未包含的标签,可以直接使用HTML标签,例如使用HTML `&lt;a&gt;`标签替代...

    编译原理语法树的实现

    语法树,也被称为抽象语法树(Abstract Syntax Tree, AST),是编译器或解释器在解析源代码时构建的一种数据结构,它以树的形式表示程序的语法结构。本文将深入探讨编译原理中语法树的实现,以及其在程序分析、翻译...

    matlab函数语法格式

    get 函数用于获取对象的属性值,语法格式为: v = get(object) v = get(object, 'property') v.property 其中,object 是要获取属性值的对象,property 是要获取的属性名称。 8. set 函数语法格式: set 函数...

    Altium Designer 高级规则语法参考

    在Altium Designer中,高级规则语法是用于定义复杂设计约束的强大工具,其允许设计者对PCB设计进行精细控制,确保设计满足各种复杂要求。该部分提供了PCB查询函数的详细参考,这些查询函数由Altium Designer中的查询...

    编译原理-语法制导翻译技术与中间代码生成.ppt

    与属性相关的信息,即属性值,可以在语法分析过程中计算和传递。 在属性文法中,存在两种类型的属性:综合属性和继承属性。综合属性的计算规则按“自下而上”方式进行,即规则左部符号的某些属性根据其右部符号的...

    html 语言语法大全

    #### 基础语法与标签 1. **注释**: ```html &lt;!----&gt; ``` 用于添加注释,对代码进行解释或备注,不会显示在页面上。 2. **滚动文字**:`&lt;marquee&gt;`标签可以创建滚动的文字或图片。 - `behavior`属性定义滚动...

    语法分析树

    语法分析树是编译原理中一个非常重要的概念,它是将源代码的语法结构通过树状图的方式来表示的一种形式,是编译器理解程序语法的重要手段。 首先,我们来理解什么是语法分析树。语法分析树,也被称作解析树或派生树...

    c++语法分析器c++语法分析器c++语法分析器c++语法分析器c++语法分析器

    语法分析器语法分析器语法分析器语法分析器语法分析器语法分析器语法分析器语法分析器语法分析器

    mysql语法手册-mysql语法手册-mysql语法手册-mysql语法手册

    MySQL语法手册是学习和理解MySQL操作的重要参考资料,涵盖了从基本的查询到复杂的存储过程等所有方面。 一、SQL基础 SQL是用于管理关系数据库的语言,MySQL语法手册首先会介绍SQL的基础概念,包括数据类型(如整数...

Global site tag (gtag.js) - Google Analytics