问题标签 [polish-notation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
3148 浏览

algorithm - 为什么后缀(rpn)表示法比前缀更常用?

我所说的使用是指它在许多计算器中的使用,例如 HP35-

我的猜测(和困惑)是——

  1. 后缀实际上更节省内存 - (所以在这里发表评论)。(混淆 - 两者的评估算法与堆栈相似)
  2. 当时计算器中的键盘输入类型(混淆 - 这应该无关紧要,因为它只取决于首先或最后给出的运算符的顺序)

可以问这个问题的另一种方式是后缀表示法比前缀有什么优势?
任何人都可以启发我吗?

0 投票
1 回答
106 浏览

configuration-files - 有嵌入式批处理语言这样的东西吗?

我最近正在查看我正在玩的游戏的配置文件,当我发现配置文件中使用的语言与批处理语言非常相似,每行都被表述为命令,语法是多么简单,它是多么的清晰是文件中的每一行都在做什么,而不需要任何周围的上下文行。不过,我知道没有任何批处理语言经常用作扩展语言,可以嵌入到另一个应用程序中。

实际上是否没有设计用于嵌入其他程序的批处理语言(我想首先是用于配置文件),还是只是我没有听说过它们?如果有,有哪些这样的语言?

如果没有,是否有可能以某种方式从具有自定义命令的隔离环境中的程序运行 shell 脚本或类似脚本,然后从程序中访问生成的环境变量?

编辑:通过批处理语言,我的意思是应该可以给出命令,即在表格上制定行<command> [<arg1> [<arg2> [...] ] ]

0 投票
1 回答
1549 浏览

postfix-notation - 后缀表达式的优点?

后缀表达式比前缀表达式有什么优势?可以使用后缀表达式删除的前缀表达式的缺点是什么?

0 投票
0 回答
1576 浏览

java - 波兰语/前缀符号逻辑表达式到表达式树并返回

我正在寻找一个 java 库,它可以将以波兰语/前缀表示法编写的逻辑表达式转换为抽象语法树对象并返回。这是SMT-LIB 标准CVC4使用的语法 ,我正在尝试创建一些复杂的约束。我不想以任何方式评估表达式。例如

应该成为

需要或可扩展的附加功能以实现:

  1. 阅读前缀符号,必须可以对运算符类型做出反应,即某些运算符是可链接的 (+ abc) 表示 a+b+c。这可以通过使用 (+ (+ ab) c) 轻松处理。但是另一个运算符是 (distinct abc),这意味着 a,b,c 成对不同。然而,我想这将需要一个非二叉树。
  2. 遍历 Tree 对象并更改 Node 内容

我对语法一无所知,这使得理解有关该主题的一些问题变得更加困难。

感谢您的每一个想法和提示!

这是我到目前为止发现的。

关于如何自己写的问题:

一般如何实现这种转换的精彩答案: https ://stackoverflow.com/a/7867104/5451007

关于树和前缀(波兰语)表示法?

如果其中一些可以帮助我,我会很高兴:

可能是类似的问题,但在 c# 中:Implementing a prefix notation expression parser using Irony

也许使用 ANTRL 或 JavaCC 编写解析器和词法分析器是一种选择? https://stackoverflow.com/a/4590027/5451007

ANTLR: 在 Java 中解析算术表达式并从中构建树

编程等效问题时有关问题的问题: 表达式树的前缀 从前缀表示法构建二进制表达式树?

后缀到表达式树将后缀表示法转换为 ExpressionTree

字符串到抽象语法树

通用算法思路:

树的后缀:表达式树的后缀表示法

0 投票
1 回答
62 浏览

constraints - 前缀/波兰符号树中的可链接/N-ary 操作支持

前缀符号转换成树通常是这样完成的:

从代数表达式创建二叉树

但是,我需要支持具有两个以上操作数的所谓可链接操作。如果该操作是可拆分的,即

没有问题。

但是,如果运算符不可拆分,则此方法不起作用。一个例子是成对不同的运算符。

左边表示a != b、a != c 和b != c,而右边只表示a != b 和b != c。尝试构建 n 叉树可能会导致无法很好地遍历树:

是否有人对此类问题有经验并且对如何解决该问题有想法?

0 投票
0 回答
2357 浏览

c++ - 在 C++ 中创建一个逆波兰计算器

作业:对于这个作业,你要编写一个程序,计算用户提供的逆波兰表达式的结果。

您必须处理以下情况(错误):

运算符过多 (+ - / *)

操作数过多(双精度数)

被零除

该程序将接受一个波兰表达式,该表达式将运算符和操作数用一个空格分隔,并以等号结束表达式。

程序将继续获取和评估表达式,直到用户在一行中输入零 (0),然后是新行。

问题 1: 我在告诉用户有太多运算符和操作数时遇到问题。我试图对其进行编码,但我不知道从哪里开始。

问题2:我希望程序在用户输入0时结束,但是当我在我的程序中执行它时它什么也没做。

0 投票
1 回答
370 浏览

postfix-notation - 后缀/反向波兰表示法的中缀

如果我想将其从中缀转换为后缀:

这是正确的吗?:

另外,如果我想对此进行评估:

它会简化为这个吗?:

0 投票
1 回答
1055 浏览

c++ - 将中缀转换为前缀表示法

我有一个任务:制作一个程序(C++),它将“中缀”符号转换为“前缀”并使用自己的“堆栈和队列”实现。

但我得到:"Critical error detected c0000374"最后"Free Heap block modified at ... after it was freed"一串void main() { /*...*/ system("pause"); }或最后一串void toPrefix();

有人可以帮助我并指出我的错误吗?

源.cpp:

队列.h:

堆栈.h

0 投票
2 回答
320 浏览

c# - 使用标记列表解释递归波兰表示法

我有解释波兰符号的解释器。我有令牌中的所有操作和数字,并且我有一个令牌列表。例如- - 5 4 2,一个包含这些标记的列表:

SubtractionToken、SubtractionToken、NumberToken、NumberToken、NumberToken、STOPToken。

示例令牌:

所以,我无法理解如何使用递归函数来解决这个问题。因为当我 SubstractionToken.Inrerpret(value, value) 我需要从numberTokens应该从自身中减去的值中给出值,但是如果下一个令牌是操作令牌会发生什么?或者我们有- 5 - 7 2?我不知道如何实现这样的递归函数,它将检测到应该进行第一个操作 - 7 2 然后 - 5 和 resultof(- 7 2),记住结果并返回之前未完成的操作。有什么帮助吗?

0 投票
1 回答
878 浏览

python - Python递归函数或循环将字符串转换为json逻辑对象

我有这个功能:

它旨在将这样的字符串转换为 json-logic 条件:

json_logic 条件如下所示:

我的递归函数应该如何帮助我将字符串拆分为条件对象,就像上面的示例一样?


为了帮助您理解问题:

json_logic是一个检查条件的模块,就像您在上面看到的字典并返回一些结果,具体取决于您比较它的内容。

以及条件如何工作:键值 par 是一个单一的逻辑语句。键代表逻辑条件。列表中的值代表操作数。如果一个值本身不是一个列表而是一个字典,它会递归。

您可以将其与“波兰符号”进行比较

最后一件事 - AND 语句比 OR 语句具有更高的优先级,并且 OR 语句总是在一起。