问题标签 [prefix-operator]
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.
c++ - c ++中缀到前缀转换?
我正在尝试编写一个简单的程序来将中缀表示法转换为前缀和后缀。到目前为止,后缀一完美。但是,我似乎无法正确转换前缀。我对两者都使用了调车场算法。如果我的代码有点不寻常(即编写自己的堆栈类而不是使用#include,不必要地使用其他东西),请事先道歉,我必须满足作业要求(这是大学作业)。这是我到目前为止所尝试的:
当我尝试转换一个简单的中缀表示法,即 1*(2+3)/4^5-6 时,后缀转换是正确的 (123+*45^/6-) 但前缀转换返回错误的答案 (- *1/+23^456) 而不是 -/*1+23^456。谁能帮忙?
theory - CFG 用于反向波兰符号
我需要使用运算符 +-*/ 为反向波兰符号创建一个 CFG,然后写出正确的推导并创建一个抽象语法树。
我了解如何创建派生和语法树,但我并不真正了解如何在给定一组规则的情况下创建 CFG。我在网上做了很多研究,我只能找到如何使用 CFG,而不是如何使用给定的规则创建一个 CFG。
如果有人能指出我正确的方向或解释一个不同的例子,那就太棒了。谢谢!
c++ - 前缀的中缀有效,但不适用于幂(插入符号)函数表达式?
我有一个函数,它接受中缀表达式并将它们转换为前缀表达式。这是我的代码:
此功能与教授希望我使用的示例表达式配合得很好;“3-4-5”产生“--345”,“5*(4/2)”产生“*5/42”。但是,这不适用于表达式“3^4^5”。它一直给我“^^345”,它应该是“^3^45”。
我的算法不正确吗?或者这可能与 ICP 和 ISP 有关(在她给我的代码中,两者都有“^”= 3。)?
java - 为什么自减和自增操作后的结果是2
有一些代码:
我知道前缀和后缀运算符。但是你能解释一下这些表达式中执行的操作顺序吗?
parsing - 使用二进制前缀、中缀和后缀运算符解析表达式
是否可以解析可以包含二进制前缀、二进制中缀和二进制后缀运算符(假设所有符号都不同)的表达式(没有歧义),并且它们之间具有优先级?例如:
Thena
等于 5,因为=
它的优先级低于后缀post+
运算符,并且b
是14
. 我知道您可以使用运算符优先级解析或分流场来解析中缀表示的表达式,但这个问题对我来说似乎要复杂得多。
编辑:
允许使用括号,并且运算符的前后变化具有与中缀相同的优先级。
我想推出一个手写算法。
编辑2:
我所说的优先级是指消耗多少。例如这个:
可能导致这些 AST-s:
(第二个是我在这种情况下需要的)。我不能真正使用现有的解析器生成器或操作数的固定语法,因为运算符是动态加载的。
c# - 一元前缀增量 ++ 运算符不同的输出
有人可以解释为什么 C# ++ 运算符根据分配的变量提供不同的输出。 https://msdn.microsoft.com/en-us/library/36x43w8w.aspx
我的理解是y
被设置为x
,即 (0) 然后在分配y
; x
加 1;
为什么相同的逻辑在这里不适用?x
应设置x
为 0,然后在赋值增加x
1 并打印 1 而不是 0
此示例相同
再举一个例子
似乎在我不理解的背景中发生了一些不同的逻辑。
c++ - 如何手动跟踪 C++ 程序?
如图所示的输出如下:
但是当我尝试用笔和纸解决它时,我被卡住了。请告诉我如何得出正确的输出,以保持我的概念清晰。
javascript - javascript前缀操作结果如何?
结果是4,2。程序如何得到这个结果?在我看来,结果将是 2,2
谁能告诉我javascript编译器如何编译这段代码并得到结果4,2。
那么深层次的问题就是为什么这两段代码的结果是一样的。
谁能一步一步解释这个?
perl - Perl:后缀/前缀优先级我哪里出错了?
以下片段显示了一个简单的 n-perline 输出过程。
显示了两种情况,一种在布尔表达式中使用前缀 ++,另一种使用后缀 ++。
由于 '++' 比 '==' 具有更高的优先级,我希望结果是相同的,但事实并非如此:一个每行执行 5 个,另一个执行 6 个。
输出:
javascript - 为什么不能在函数调用前使用前缀运算符?
当我运行时++this.get('votes')
,我收到以下错误消息
我得到了同样的错误信息++(this.get('votes'))
。
我能够解决这个问题,this.get('votes') + 1
但我不知道为什么前缀运算符不起作用。
为什么不应该this.get('votes')
评估为 0 然后变为 1 并返回值 1?
上下文中的原始代码: