第一范文网 - 专业文章范例文档资料分享平台

jep学习文档

来源:用户分享 时间:2025/7/24 23:15:32 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

JEP(Java Expression Parser)学习笔记

By shenweifeng

2012-9-25 in HangZhou

JEP

基本用法

1、 入门 2、 错误处理 3、 计算表达式

4、 替代的解析和计算方法 5、 缩略的乘法

入门

在项目中使用JEP的类包是很简单的!下面的步骤将会使用很快入门。 1、 下载JEP 包,下载格式为ZIP 2、 解压缩该包

3、 移动jep-x.x.x.jar到你选择的目录中

4、 重要:为了当编译你的程序时Java编译器能找到jep类,编译器需要知道jep的位

置。所以你需要添加.jar文件的路径到你的CLASSPATH环境变量中。(如果你不清楚如何使用,请读这里);你的CLASSPATH变量应该包含某些东西如

C:\\java\\packages\\jep-x.x.x.jar,取决于你jar包放置的位置。或者,你也许需要在你的JAVA IDE中设置jar包的位置,使编译器能找到类库。

5、 在你的程序中,创建一个解析器对象,如:

org.nfunk.jep.JEPmyParser = new org.nfunk.jep.JEP();

6、 添加标准函数和常量,如果你想有能力使用三角函数和pi,e计算表达式。 myParser.addStandardFunctions(); myParser.addStandardConstants();

7、 通常情况下,你需要具体指明哪些变量能在表达式中被使用。如果一个变量在表达式被

解析时还没被添加,解析器将声明表达式是不合法的(这种情况能被改变通过使用 允许未声明的变量)。 添加变量x并且初始化为0, myParser.addVariable(\;

8、 解析表达式并计算它

myParser.parseExpression(ExpressionString); result = myParser.getValue();

9、 变量值可以通过addVariable(String, double)改变

样本小应用程序提供了更多更广泛的表现来展示解析器的使用。

错误处理

错误可能发生在解析表达式过程中,也可能发生在计算表达式过程中。方法handError()将报告一个错误是否已经发生在最近的行为中(或解析,或计算)。如果返回值是true,你能使用getErrorInfo()方法获得已发生错误的进一步错误信息。

计算表达式

4个计算表达式的方法是可以获得的:

? getValue(): 当你期望一个正常的浮点运算值时使用 ? getComplexValue():当你期望一个复数时使用

? getValueAsObject():返回结果为一个对象(任意类型)

? evaluate(Node root):从根节点计算一颗树(一种数据结构)并且返回一个对象。

前两种方法内在也算是getValueAsObject(),通过一些必须地转换就能变成double类型或者Complex类型。

替代的解析和计算方法

有一种替代方法解析和计算表达式,该方法为计算机应用提供了更多的灵活性,特别是在处理一系列相关的等式时。它们是:

public Node parse(String expression) throws ParseException public Object evaluate(Node node) throws Exception 分别解析和计算表达式。这些能被使用如下: try { 量 }

j.evaluate(node1);

Node node2 = j.parse(\Object val2 = j.evaluate(node2); System.out.println(\// Alternative syntax

Node node1 = j.parse(\实际使用中需要打开允许赋值和使用未声明变

catch(ParseException e) { }

catch(Exception e) }

因此,它更容易记录一系列等式。注意使用这种语法,异常需要被捕获而且getTopNode() 方法将不返回有意义的值。

{

System.out.println(\System.out.println(\

缩略的乘法

你能使用缩略的乘法通过使用setImplicitMul(true)。

默认的设置是false(没有缩略乘法)。

缩略乘法允许表达式例如“2 x”能被解释为“2*x”。注意两个变量之间的空格是必须的使它们被解释为乘法。这同样适用于变脸后跟随一个数字。举个例子“y 3”被解释为“y*3”,但是y3被解释为单个名为y3的变量。如果一个数字位于变量之前,它们之间的空格是不需要的,缩略乘法照样有效。

变量

? ? ? ? ?

基础

允许未声明的变量 获得变量队列

赋值(Assignment) 变量观察者

基础

变量有两种处理方式可供选择: 1、 不允许未声明的变量(默认):在这种情况下,解释一个表示式前添加表达式中的变量

时必须的。添加通过使用addVariable()方法实现。

2、 允许未声明的方法:如果你允许未声明的变量,它们将在表达式被解析时自动地添加到

符号表(symbol table)中。

在一个表达式已经被解析后,变量值可以通过使用addVaribale()或setVariable()方法来进行更新。这样就允许使用不同的值对表达式进行重复计算。

一个变量的值可以通过使用getVarValue()方法进行查询。一个更进一步的方法是使用getVar() ,返回一个代表该变量的对象。

这里的变量可能是常量,即不能改变值。添加一个新的常量使用addConstant,添加一个新的变量使用addVariable;

符号表类(SymbolTable)存储代表变量的对象而不仅仅是它们的值。该类的get和put已经过时,不赞成使用。这导致一个运算上的细微提高。

允许未声明的变量

使其能够解析未声明的变量,使用方法setAllowUndeclared(true)。

默认的设置是false(不允许未声明的变量)。

如果你不清楚声明变量名将会出现在将要解析的表达式中,你可以使用setAllowUndeclare(true)。设置该选择后,解析表达式前将变量添加到表达式中将不是必须的了。当解析时如果一个新变量被发现,它被自动的添加到符号表中。看获得变量队列,你可以读到有关怎么访问这些变量的方式。

获得变量队列

在未声明对象允许的情况下解析表达式,变量和常量队列被添加进解析器中,可以通过方法 getSymbolTable获得。该方法是最有效的当未声明变量选项被选中后。方法返回值是一个SymbolTable对象。注意SymbolTable继承HashTable。

赋值(Assignment)

赋值允许变量的值被设置通过使用等式中的“=”操作符,这样,执行操作例如x=3,

Y=x^2,然后y将获得值9。赋值能被使用通过标准的JEP包,没有需要用到org.lsmp.djep树中的任何包。为了打开赋值功能,JEP的方法setAllowAssignment(true)需要调用。 // standard initialisation JEP j = new JEP(); j.addStandardConstants(); j.addStandardFunctions(); j.addComplex(); j.setAllowUndeclared(true); j.setImplicitMul(true); // switch assignment facilities on

搜索更多关于: jep学习文档 的文档
jep学习文档.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c9tgbx3gbbh1oirv32mc5_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top