DLRD语法分析算法

代码量少到极致仅 215 行代码搞定 statement 语法分析

 

DLRD语法分析算法是Jfinal Template Engine独创的,其中Jfinal Template Engine还使用了独创的DKFF词法分析算法。

极大减少了代码量,降低了学习成本,并提升用户体验。
当初刚接触jfinal实现分页的时候,当时只会用jsp来进行前端实现接收后台数据。而有人说jsp已经过时了,现在都用jfinal和Template Engine来实现接收后台数据。当时觉得Template Engine有这么好用吗?而我现在也喜欢用Template Engine来实现前端接收数据...
Jfinal Template Engine表达式的规则设计总体是符合java表达式的规则,仅仅只对模板引擎的特征进行极其少少量符合直觉有利于开发体验的拓展。

接下来开始Template Engine的使用:
1.设置模块引擎

    public void configEngine(Engine me) 
    {
        //模块文件修改会即时生效,相当于热加载
        me.setDevMode(true);
        me.addSharedFunction("Test.html");
        me.addSharedMethod(new Now());
    }

搜狗截图17年12月07日1124_4.png

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>[图片上传中...(搜狗截图17年12月07日1056_3.png-d3843a-1512615375914-0)]

</head>
<body>
    <h1>#(123+"abc")</h1>
    <h1>#("asdasdxzc".substring(0,5))</h1>
        <h1>#(userlist.get(0).getName)</h1>
</body>
</html>

对于表达式的使用,掌握一个关键点,就是表达式与java是直接相同的。以上的第一行第二行的代码跟java的表达式一样,方法也是一样的。如果是第三行的集合类型,想要取出当中的某些值,也能直接使用方法.
表达式:
算术运算:+,-,*,/,%,++,--
比较运算:>,>=,<,<= == !=
逻辑运算:!,&&,||
三元表达式:?:
字符串常量:"abcd"
布尔常量:true,false
数字类型:123,456F,789L,0.1D,02E10
数组存取:arrayi
属性取值:object.field(Map被增强为额外支持map.key的方式取值)
方法的调用:object.method(p1,p2...pn)
逗号表达式:123,1>2,null,"abc",3+6

接下来介绍几种常用的表达式:

//for的表达式

  //两种方式都行
    #for(x:[1..10])
      #(x)
    #end
      
        #for(i=0;i<10;i++)
        #(i)
    #end

Map的定义表达式:

#set(map={k1:123,"k2":"abc",'k3':object})
     #(map.k1)
     #(map.k2)
     #(map["k1"])
     #(map["k2"])

if指令:

   #if(object)
    ...
   #end


  #if(object)
  ...
  #elseif(object1)
  ...
  #elseif(object2)
  ...
  #else
  ...
  #end

set指令:

 #set(x=15553)
 #set(a=1,b=2,c=a+b)
 #(x),#(c)

调用自定义函数(要有返回值的函数)

package com.common;

public class Now 
{
  
  public String SayHello(String name)
  {
      return "hello "+name+",欢迎学习jfinal!";
  }
}

模块调用方法:

#(SayHello("大家"))

以上几种是比较常用的指令和表达式.其他更多的可以去查询jfinal文档。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章