`
sjsky
  • 浏览: 904464 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java表达式计算引擎:Expr4J

    博客分类:
  • Java
阅读更多
    blog迁移至:http://www.micmiu.com

本文介绍一个开源的Java表达式计算引擎:
Expr4J Expression Calculation Engine for Java
官方主页:http://expr4j.sourceforge.net/
可以在官网下载相关的源码和lib包,本文附件也提供下载:expr4j-0.0.1-src.zip
/**
 * java 表达式计算引擎
 * @author Michael sun
 */
public class TestExpr4j {

    /**
     * @param args
     */
    public static void main(String[] args) {
        SimpleEvaluationContext context = new SimpleEvaluationContext();
        System.out.println("Expr Evaluator v1.0");
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        while (true) {
            try {
                System.out.print(">");
                String line = br.readLine();
                if (line == null)
                    break;
                Expr e = ExprParser.parse(line);
                Exprs.toUpperCase(e);
                if (e instanceof ExprEvaluatable) {
                    e = ((ExprEvaluatable) e).evaluate(context);
                }
                System.out.println(e);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

    }

}

测试执行结果如下:
Expr Evaluator v1.0
>25*36*(42-18*2)/3*2-45+89/46+13*2/32-45
3512.7472826086955
>10^2/5-(23/2)
8.5
>
分享到:
评论
2 楼 u013489005 2015-08-10  
追问:楼主,请问有中文文档么?
我的邮箱是frankgray@seekwillfind.org
1 楼 u013489005 2015-08-10  
感谢博主
需要引入的包是
import java.io.*;

import org.boris.expr.*;
import org.boris.expr.parser.ExprParser;
import org.boris.expr.util.Exprs;
import org.boris.expr.util.SimpleEvaluationContext;
谢谢!

相关推荐

    expr:用于Go的表达式评估引擎:快速,非图灵完整,动态键入,静态键入

    Expr软件包提供了可以编译和评估表达式的引擎。 表达式是返回值(主要但不限于布尔值)的单行代码。 它旨在简化,提高速度和提高安全性。 该软件包的目的是允许用户使用配置内部的表达式来实现更复杂的逻辑。 它是...

    编译原理实验(基于表达式的计算器ExprEval)

    相对新手而言,这个实验有较大难度。这里提供大家一个参考。但希望大家还是自己写,你会发现原来这么回事。不要把问题想得太复杂了。

    数学表达式解析器(中缀表达式求值)

    这个一个用C/C++实现的基于逆波兰式理论基础的小计算器程序,可以解析大部分常用的数学表达式。

    基于表达式的计算器ExprEval

    实现了四则运算+,-,*,/,max,min,sin,cos四个内值函数。 还有求负和求幂运算。 实现了三元运算符?: 实现了逻辑运算& ! ! 实现了比较运算符 > < >= 可以单独求布尔表达式的值。 java版。编译原理作业

    str-expr.zip_STR_expr_visual c_表达式计算

    表达式计算源代码

    ExprEval.rar_ExprEval_java 计算器_java表达式运算_jep-3.1.0-trial.jar_表达式

    Java编写的表达式计算器, 即可以像我们书写表达式那样直接输入计算表达式, 程序自动进行运算, 支持加减乘除幂运算以及判断表达式如A?B C, 程序包含完整的Document和测试运行环境

    exp4j_tld:exp4j JEE JSP 标签

    exp4j_tldexp4j JEE JSP 标签使用 JSTL 和表达式语言: < c xss=removed xss=removed>< c xss=removed xss=removed>< expr4j xss=removed xss=removed> x = ${ x } , ${ expr_str } = </ expr4j>没有标签体: < expr...

    数学表达式计算函数库V1.4.04_evalexprV144R.rar

    =======最终测试发布版========= 数学表达式计算函数库V1.4.04_ evalexprV144R.rar 数学表达式计算函数库V1.4.04_ evalexprV144R.rar =======最终测试发布版=========

    java源码小程序-expr:评估Java中的数学表达式

    java源码小程序表达式 这个包解析和评估浮点数上的数学表达式,如2 + 2或cos(x/(2*pi)) * cos(y/(2*pi)) 。 设计重点是易于使用和有用的错误消息,易于集成到小程序中,以及良好的性能:快速评估和较短的下载时间。 ...

    EL 表达式语言 jsp表达式

    EL语言是JSTL输出(输入)一个JAVA表达式的表示形式。 在JSTL中,EL语言只能在属性值中使用。EL语言只能通过建立表达式${exp1}来进行调用。在属性值中使用表达式有三种方式。 1、 value属性包含一个表达式 <some:...

    字符串表达式解释计算动态连接库EvalExpr.DLL_1.2.4

    字符串表达式解释计算动态连接库1.2.4 实用的程序开发辅助工具,,不再多说了, 需要的下,,V1.2.04比以前版本有很大变化, 程序算法改动较大,功能极为完善,, 为此资源分增加至二,, 或者你也可以选择下载...

    meta::Expr{T_emplate}-开源

    meta :: Expr {T_emplate}是一个处理表达式模板的C ++库。 有了它,您可以轻松地从ET功能中受益并加快C ++类的速度。 这对诸如数组或矩阵之类的数值分析类有效。

    Go-Expr是一个可以评估表达式的引擎

    该程序包的目的是允许用户在配置中使用表达式来处理更复杂的逻辑。 它是业务规则引擎基础的完美候选者。

    多项式拟合 dll 最小二乘法 表达式计算

    做了一个dll,具有多项式拟合和表达式计算的功能,导出接口如下: /////////////////////////////////// /* 获取帮助信息 strOut:保存帮助文本信息 len:表示strOut的缓存长度 返回值:strOut==NULL或len==0时,...

    java的BeanShell公式执行引擎

    根目录Bean/bin文件夹下bsh-core-2.0b4.jar文件是jar包, 根目录Bean/com/strart.java是用BeanShell计算1+2=3的代码例子

    C++支持的表达式解析

    使用boost::sprirt编写的表达式解析器,代码很容易扩展,功能很强大,适合做功能强大的客户化定义程序。 -----------表达式解析--------- 已定义的函数有:PI,SIN,COS,TAN,,ABS,EXP,LOGN,POW,SQRT,FORMAT,LENGTH,...

    西电软工oop上机题目4 10.11.rar

    The public interface should look like this:class Expr {// …public:Expr(char*);int eval();void print();};The string argument for the constructor Expr::Expr() is the expression. The function Expr::...

    Python中实现三目运算的方法

    判断表达式为真,此时如果expr1为真则expr=expr1,为假则变成False or expr2,expr=expr2. 判断表达式为假,则演变成False or expr2,此时expr=expr2. 只要表达式expr1,expr2都为真,上述等式就等同于C中的 expr=判断...

    expr.js:解析用户定义的表达式

    然后,您可以像这样计算表达式: expr . parse ( '2*2 + bar.foo' , { "bar" : { "foo" : 38 } } ) ; // 42 expr . parse ( 'x = y + " " + x = z' , { "x" : "abc" , "y" : "123" , "z" : "abc" } ) ; // false ...

Global site tag (gtag.js) - Google Analytics