【译】Jep 文档(1)——介绍(Introction)

article/2025/10/3 18:42:35

原文连接(http://www.singularsys.com/jep/doc/html/index.html)

介绍

综述

Jep 是一个用于分析和计算数学表达式的java库。有了这个包,您就可以把数学公式当作是字符串,并且立即求出它们的值。许多常见的数学函数和常量都是内置的,可以直接使用。但是,您还可以通过自定义变量、常量和函数来扩充Jep。

特征

  • 小巧(仅有 218KB 的 jar 归档)
  • 求值快
  • 支持任意精度的算法
  • 支持字符串、向量和复数
  • 包含常见的数学函数和预定义的常量
  • 支持布尔表达式(!, &&, ||, <, >, !=, ==, >=, 和 <=)
  • 支持隐式乘法(允许使用如“3x”这样的表达式代替“3*x”)
  • 支持赋值表达式(x = 5)
  • 允许在声明和未声明变量之间进行选择
  • 通过用户自定义的函数可扩展
  • 可定制的语法表达式
  • 兼容J2SE 5
  • 支持Unicode字符(包括希腊符号)
  • 大量的文档
  • 包括 JavaCC 语法

解释和求值

用Jep来求解字符串表达式是一个两步过程,如下图所示。首先,解释表达式,将它从字符串表示转换成树形表示。树形表示是表达式的结构化表示,它允许在第二步中对表达式进行简单快速的计算。下面的部分将更加详细地讨论这两个步骤。

解析

我们可以用一般的术语来描述解析,即把一系列字符作为输入,并生成包含在该组字符中的信息的结构化表示。这里的重点是数学表达式,尽管解析也用于其他领域,例如自然语言解析。

数学公式可以用数据结构来表示,数字、变量、操作符和函数都用数的节点来表示。数字和变量由所谓的子节点表示,而运算符和函数由父节点表示。父节点在子节点之上运行。例如,表达式“1+2*3”可以表示成一个有5个节点的树,如上所示。

您可能会问为什么乘法节点是加法节点的子节点。其原因是操作符的优先级。操作符有一个优先顺序,在解释表达式时需要遵循。乘法的优先级比加法的优先级高。所以,在上面的例子中,我们需要先将2和3相乘,再将结果加1。在树中,这被表示成将数字2和3作为乘操作的子元素。最后,乘法节点自身所为加法节点的子节点,表示乘法的结果被用作加法运算。语法分析器负责按照语法中指定的优先顺序执行。

语法分析器通常使用语法分析生成程序生成,例如JavaCC,ANTLR,Sablecc,Yacc或Bison。Jep中的一些例程是用JavaCC(https://javacc.dev.java.net/)生成的。JavaCC使用在JccParser.jjt文件中定义的语法,创建了一组类来执行解释过程的核心任务。还包括一个可配置的纯java解释器。

求值

求值使表达式从树形表示到表达式的值。由于树是根据操作符的优先级构建的,所以求值的方法不需要知道操作符的优先级。可以使用简单的方法来遍历树,以确定表达式的值。

一个简单的方法是从根节点(最顶层结点)开始,并应用递归的方法。这可以通过访问者设计模式实现。可以为每个节点类型创建不同的方法。要求一个操作符结点或函数结点的值,首先要求其子节点的值。然后,使用子节点的值来确定节点本身的值。对于那些是常量(数字)或变量的节点,节点计算的是常量或变量的值。使用这种递归方法,树将以深度优先的方式快速遍历。


http://chatgpt.dhexx.cn/article/C3BGVEO4.shtml

相关文章

Java RMI反序列化/JEP290相关

RMI 远程过程调用 (Remote Procedure Call)是一种服务器-客户端模式&#xff0c; Java的RMI&#xff08;Remote Method Invocation&#xff09;是一种RPC实现。 其基本思想是程序员可以像本地那样&#xff0c;与远程对象进行交互。 步骤&#xff1a; 1、创建一个接口IRemote…

Java第三方库——Jep数学公式计算

Java第三方库——Jep数学公式计算 官网简介&#xff1a;JEP JAVA仅用几行代码解析和计算数学表达式。这个包允许用户以字符串的形式输入公式&#xff0c;并立即对其求值。JEP支持用户定义的变量、常量和函数。包括一些常用的数学函数和常量。 1.下载3.x版本依赖并引入 官方网站…

你知道Java中的JCP, JEP, JLS, JSR是什么意思吗?

目录 一、JCP 二、JSR 三、JLS 四、JEP 公众号&#xff1a;MCNU云原生&#xff0c;欢迎微信搜索关注&#xff0c;更多干货&#xff0c;及时掌握。 JCP, JEP, JLS, JSR这些概念是Java社区中的一些概念&#xff0c;但是没有没有经常关注社区的童鞋们未必知道这些缩写所代表的…

Java中JCP, JEP, JLS, JSR是什么

JCP Java Community Process JCP&#xff08;Java Community Process&#xff09;是一个开放的国际组织&#xff0c;主要由Java开发者以及被授权者组成&#xff0c;职能是发展和更新。 JCP维护的规范包括J2ME、J2SE、J2EE&#xff0c;XML&#xff0c;OSS&#xff0c;JAIN等。组…

java 使用JEP解析字符串计算公式 求值(附带自定义函数编写)

2.X 存在精确度问题 推荐使用3.X 参考文章: java 使用 jep3.5 解析公式自动计算(包含BigDecimal模式 浮点数精准计算) 1.增加jep依赖 <dependency><groupId>org.scijava</groupId><artifactId>jep</artifactId><version>2.4.2</versio…

使用Jep在Java中执行Python代码

接上次用Eclipse编写Python代码&#xff1a;使用Eclipse编写Python代码_Cc_Sonia的博客-CSDN博客_eclipse写python程序 为了把深度学习模型部署到Java App上&#xff0c;需要用Java调用Python。试过Jython&#xff0c;但它只对python2有效。。。最后supervisor建议使用Jep&…

jep的使用

参考jep官网:http://www.singularsys.com/jep/ Jep Java只用几行代码解析和评估数学表达式。此程序包允许您的用户输入公式作为字符串&#xff0c;并立即对其进行评估。Jep支持用户定义的变量&#xff0c;常量和函数。包括许多常见的数学函数和常数。 那么啰嗦,说白了就是支持…

python JEP安装

安装python ( 深坑 &#xff1a;安装之前请yum install python3-devel 避免出现i.e.: export LD_PRELOAD/usr/lib/libpython2.7.so.1.0 问题 ) 下载源码 Python Release Python 3.6.5 | Python.org 解压 进入目录 ./configure --prefix/opt/software/python --enab…

JEP:Java表达式分析器

JEP 是一个用于解析和计算数学表达式的 Java 类库。通过使用这个包你可以把公式看 作字符串并快速计算它们。其中内置了大量公共的数学函数和常量供用户使用。另外&#xff0c;你也 可以通过自定义变量、常量、函数等方式扩展 JEP 。 使用 JEP 计算一个字符串表达式包括…

java 使用JEP 进行节点计算

2.X 存在精确度问题 推荐使用3.X 参考文章: java 使用 jep3.5 解析公式自动计算(包含BigDecimal模式 浮点数精准计算)​​​​​​​ 1.JEP基础相关 请参考: java 使用JEP解析字符串计算公式 求值(附带自定义函数编写) 2.使用节点计算 注释写的很明白 要仔细看 public st…

如何在Java中执行Python模块?从认识JEP库开始

让我们从认识JEP库开始。 关注《Java学研大本营》 本教程基于带M1芯片的macOSX&#xff0c;用于Python 3.8/3.9和Java 11。 介绍 从我的实践来讲&#xff0c;我遇到的上一个挑战是&#xff0c;当基础应用引擎是Java的时候&#xff0c;我按常理应该添加一个新的机器学习功能。…

JEP 290 初识

JEP 290 初识 全局过滤器自定义过滤器内置过滤器 JEP 290是 oracle提供已一套JAVA反序列化机制&#xff0c;其并不是一种必须被强制执行的策略&#xff0c;而是需要程序员或者运维人员进行开发与启用。关于该机制的优缺点借用老外的一篇文章 https://dzone.com/articles/a-firs…

jep 使用方法与简介

1什么是jep JEP是Java expression parser的简称&#xff0c;即java表达式分析器&#xff0c;Jep是一个用来转换和计算数学表达式的java库。通过这个程序包&#xff0c;用户可以以字符串的形式输入一个、任意的公式&#xff0c;然后快速地计算出结果。Jep支持用户自定义变量、常…

那些人工智能明星公司都在搞什么?

事件&#xff1a;全球机器学习技术大会 时间&#xff1a;2021年1月13-14日 地点&#xff1a;金茂北京威斯汀大饭店 画外音&#xff1a;文末送所有PPT。 大会特邀近40位机器学习领域的技术领袖和行业应用专家&#xff0c;与1000来自电商、金融、汽车、智能制造、通信、工业互联网…

中国人工智能公司CIMCAI世界港航AI领军企业,自动化港口数字化码头,智能闸口各箱面箱况残缺检测视频流动态感知中国人工智能公司

中国人工智能公司CIMCAI世界港航AI领军企业&#xff0c;自动化港口数字化码头&#xff0c;智能闸口各箱面箱况残缺检测视频流动态感知&#xff0c;智能化港口码头数字化。CIMCAI已完成全球250万人工智能集装箱箱况检验&#xff0c;完成全球上亿集装箱信息&#xff0c;先进产品在…

外媒评选出来的中国五大人工智能(AI) 公司

https://www.toutiao.com/a6656628348795486727/ 2019-02-11 14:37:43 全球三分之二的人工智能投资正在进入中国市场&#xff0c;仅去年一年就帮助人工智能行业增长了67&#xff05;。 中国科技行业最近宣布了其前50家人工智能公司。其中包括14只“独角兽”--估值为10亿美元或…

【研究】那些人工智能公司现在发展到哪一步了?

作者&#xff1a;欧应刚 | 小编&#xff1a;小葱 近期&#xff0c;为了撰写《2018中国人工智能应用与生态研究报告》&#xff0c;中国软件网对我国人工智能产业应用和平台、生态建设进行了调研&#xff0c;以下是部分调研结果&#xff0c;更多内容见报告完整版。 1.已经有相当…

全球最强人工智能创新公司Top100榜单重磅发布!

自2012年至现在&#xff0c;名单上的100家跟人工智能相关的创业公司在367笔交易中累计融资总额达到117亿美元。以下是2017年的AI 100名单列表。 今天CB insights公布了第二个年度AI 100&#xff0c;即2018 AI 100 名单&#xff0c;如下图所示&#xff0c;这是其中100家最有希望…

2017-2020年人工智能公司死亡名单

▼ 更多精彩推荐&#xff0c;请关注我们 ▼ 有浪潮就有泡沫&#xff0c;有泡沫就有死亡。 被称为继移动互联网之后又一次个重要技术爆炸的人工智能&#xff0c;从者如云。从2017年以来&#xff0c;又有多少人工智能公司在浪潮中诞生&#xff0c;又有多少公司在浪潮中死亡&#…

AI公司--国外知名公司

微软、Facebook、IBM、迪士尼、亚马逊、Adobe 波士顿动力 波士顿动力成立于1992年&#xff0c;当时属于麻省理工学院&#xff0c;后被Alphabet收购。去年&#xff0c;软银从Alphabet手中收购了波士顿动力公司。软银通过自己的愿景基金&#xff0c;在机器人领域进行了大量投资。…