`
javatar
  • 浏览: 1699602 次
  • 性别: 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++语言的语法分析器。 首先,我们来了解一下什么是语法分析。语法分析是编译器设计...

    CSS3 属性选择器;属性选择器其特点就是通过属性来选择元素;属性选择器的语法: E:attr;

    属性选择器的语法: E:[attr]; E表示元素,attr表示元素中的属性 E:[attr=val]; attr=val表示当元素中的属性值是指定值时,设置一个统一的样式 E:[attr^=val]; attr^=val表示当元素中指定的属性值是val开头时 E...

    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...

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

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

    UBB语法UBB语法UBB语法

    - **属性**:某些标签还可以带有属性,用等号`=`分隔属性名和值,例如`[color=red]`。 接下来,我们将详细解析上述文件中提到的UBB语法标签及其用途。 ### 字体颜色 UBB语法提供了丰富的颜色标签,可以用来改变...

    语法分析器java实现

    在编程语言处理领域,语法分析器是至关重要的组成部分,它负责将源代码转换为抽象语法树(AST,Abstract Syntax Tree),这是编译器或解释器理解程序结构的基础。本主题聚焦于使用Java实现一个语法分析器,同时也...

    XAML基础特性和属性元素语法介绍和使用

    wpf;XAML基础特性和属性元素语法介绍和使用。

    RFC2252属性与法定义中文版

    RFC2252是LDAP(轻量级目录访问协议)的一个关键部分,它详细阐述了LDAP服务器和客户端如何理解和处理目录服务中的属性语法。 **1. LDAP概述** LDAP是一种开放标准的网络协议,用于存储和检索分布式目录服务中的...

    编译原理语法树的实现

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

    Altium Designer 高级规则语法参考

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

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

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

    语法分析器源代码

    从给定的文件信息来看,本文档主要围绕“语法分析器源代码”展开,深入探讨了语法分析器的构建过程,特别是在C++编程环境下的实现。以下是对文档中提到的关键知识点的详细阐述: ### 实验目的与内容 实验旨在使...

    html 语言语法大全

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

Global site tag (gtag.js) - Google Analytics