捐赠 | 广告 | 注册 | 发布 | 上传 | 关于我们    
  沪ICP备05001939号 DELPHI盒子 | 盒子论坛 | 盒子文章 | 盒子问答悬赏 | 最新更新 | 论坛检索 | 下载中心 | 高级搜索    
  精品专区 | 繁體中文 | 奖励公告栏 | 直通车账号登陆 | 关闭GOOGLE广告 | 临时留言    
盒子资源分类
全部展开 - 全部合拢
表达式解析求值 & JSON操作 0.4.2
关键字:表达式 JSON 求值 解析
来 自:原创
平 台:Win9x,Win2k/XP/NT,Win2003,Vista 下载所需:0 火柴
深浅度:中级 完成时间:2011/11/26
发布者:creation_zy 发布时间:2011/12/25
编辑器:D2007 语  种:简体中文
分 类:字符串 下载浏览:4261/10203
加入到我的收藏
下载错误报错
登陆以后才能下载
 用户名:
 密 码:
自动登陆(30天有效)
图片如果打不开,说明流量不够了,请稍候下载……
http://code.google.com/p/jsonexpr/

    表达式的解析和求值是一个应用面非常广的功能。而JSON格式因其简明、易于操作,使用面日渐广泛。本项目将表达式分析的结果存放在JSON对象中,可以非常方便的进行解读及求值。 实现了基于JSON表达式的目标语言文本输出功能。 

Functions:

    ExprToJSON
    JSONToExpr
    Eval
    EvalNumber
    VarNeeded
    TraceOnLine
    ValImport
    ValExport
    TJETranslater.TranslateJETree 

Plugins:

    Var Helper
    Func Helper 

Supports:

Math operation  + - * / \ % & | ^ ~ ! >> <<
Bool operation  AND OR XOR
Compare operation  = > < <> >= <=
Object operation  . IS
Set value  X := Y += -= = /= ...
Value collection  IN (a,b)
String operation  LEN
Condition expr  IF( condition, value1, value2)
IFELSE( condition1, value1, condition2, value2, ... valueElse)
Case expr  CASE( v, value1, expr1, value2, expr2, ... , exprElse)
Loop expr  FOR, WHILE, REPEAT, TIMES
Sentence end tag  ;
Variable with "  "My Var"
Array access  AB[ C+2 ,10 ]
Print output  Print(Msg)
Eval a string  Eval('A+=20; B:=A/10;')
Funcion/Var define public function Max(A,B):=IF(A>B,A,B);

Parse Example:

    2 + X / Sin(Y) => {op:"+",p1:2,p2:{op:"/",p1:"X",p2:{op:"SIN",p1:"Y"}}}
    Z/(X.Max+0.5) => {op:"/",p1:"Z",p2:{op:"+",p1:{op:".",p1:"X",p2:"Max"},p2:0.5}} 

Eval Example:

    IF( Y.Name IS not NULL, PI, 3 + (9<<2) )
    X:=3; Y:=X-5; IF(2>X+Y, 2, X*Y)
    X1:=1; Y:=IF(X IS NULL,0,X1|5); Z:=9/IF(X1+2<=(3+Y),X2:=X1<<3,(Y:=X1*10; X2:=Y|100));
    P1.X:=10; P1.Y:=9-P1.X/2; S:=P1.((X+2)/Y) 

Aim Language Convert Example:

    Convert expression to Pascal:

    X:=1+IF(A<B,IF(B,100,0.5)*1.5,IF(A<>C,2,4+5))

=>

if A<B then
begin
  if B then
  begin
    tv_4_2:=100;
  end
  else begin
    tv_4_2:=0.5;
  end;
  tv_2_1:=tv_4_2*1.5;
end
else begin
  if A<>C then
  begin
    tv_3_3:=2;
  end
  else begin
    tv_3_3:=4+5;
  end;
  tv_2_1:=tv_3_3;
end;
X:=1+tv_2_1
Google
 
本站原创作品,未经作者许可,严禁任何方式转载;转载作品,如果侵犯了您的权益,请联系我们
龙脉加密锁 15元起 Grid++Report 报表 申请支付@网
 相关文章
没有相关文章
相关评论
共有评论1条
我要发表评论 查看全部评论
 
  DELPHI盒子版权所有 1999-2023 V4.01 粤ICP备10103342号-1 更新RSS列表