问题标签 [infix-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.

0 投票
0 回答
123 浏览

c++ - 为什么输出中没有显示左括号和右括号?

在 C++ 中,我尝试使用堆栈将这些中缀表达式()+-*/转换为后缀,但输出不会打印出所有输入。程序运行后,括号未显示在输出中。也没有错误。

此图显示了编译后的输出:

图片

编码:

0 投票
1 回答
94 浏览

r - R 如何评估这些奇怪的表达式?

我试图在 R(例如,a, *b, c = [1,2,3], "C")中使 Python 3 样式的赋值解包成为可能,尽管我已经如此接近(你可以在这里查看我的代码),但我最终遇到了一些(奇怪的)问题。

我的代码是这样工作的:

并将分配a= 1b=c(2,3,4)c= 5(我的代码实际上确实这样做了,但是我稍后会遇到一个小障碍)。

为了让它做任何事情,我必须定义:

(以及%,*%%,*%<-,它们是先前函数的轻微变体)。

第一个问题:为什么用 R*tmp*代替lhs论点

据我所知,R 首先从左到右评估此代码(即,从ato c,直到它到达最后一个%,%,然后从右到左返回,沿途分配值。但第一个我注意到的奇怪的事情是,当我做match.call()substitute(lhs)类似的事情时x %infix% y <- z它说lhs参数的输入%infix%*tmp*,而不是说,ax

这对我来说很奇怪,我在 R 手册或文档中找不到任何提及。我实际上在我的代码中使用了这个奇怪的约定(即,它没有在赋值的右侧显示这种行为,所以我可以使用*tmp*输入的存在来使%,%赋值的这一侧表现不同),但我不知道为什么会这样。

第二个问题:为什么 R先检查对象是否存在

我的第二个问题是使我的代码最终无法正常工作的原因。我注意到,如果您从任何赋值左侧的变量名开始,R 似乎甚至不会开始计算表达式——它会返回错误object '<variable name>' not found。即,如果x未定义,x %infix% y <- z则不会评估,即使%infix%实际上并未使用或评估x

为什么 R 会有这样的行为,我可以改变它或绕过它吗? 如果我可以在R 检查是否存在%,% 之前x运行代码,我可能会破解它,这样我就不会成为问题,并且我的 Python 解包代码将非常有用,可以实际共享。但就像现在一样,第一个变量需要已经存在,我认为这太局限了。我知道我可以通过将 更改<-为自定义中缀运算符来做一些事情%<-%,但是我的代码将与zeallot包非常相似,以至于我认为它不值得。(它的功能已经非常接近了,但我更喜欢我的风格。)

编辑:

遵循 Ben Bolker 的出色建议,我能够找到解决问题的方法......通过覆盖<-.

我很确定这将是一个致命的罪过,对吧?我无法确切地看到它会如何搞砸任何事情,但我的程序员感觉的刺痛告诉我这适合分享像一个包这样的东西......这会有多糟糕?

0 投票
2 回答
230 浏览

c++ - 评估仅由加法和乘法组成的中缀字符串表达式

如何评估仅由+and*运算符组成的中缀字符串表达式。(无括号)。

示例 1:

  • 输入:"1+2*3"
  • 输出:7

示例 2:

  • 输入:"1+2*3+4"
  • 输出:11

这是我到目前为止的代码(没有给出正确的结果),我想知道我是否可以用一个堆栈(或没有)来完成

注意:不想使用任何非标准库。理想情况下不使用任何库。

0 投票
2 回答
121 浏览

ada - 如何以及为什么不允许 GNAT.Strings.String_List 使用子句?如何使用 System.Strings.String_List."&" 和中缀表示法?

发帖有两个原因:(1)对于这样一个简单的问题,我被困在无用的编译器错误上太久了,我希望下一个人在谷歌上搜索这些消息以找到我(或其他)的答案,以及(2)我仍然不明白不允许使用子句,所以我自己的答案确实不完整。

为了在两个地方使用几乎相同的参数调用程序,我想使用 '&' 附加到默认的内联列表:

但是,编译器抱怨System.Strings.String_List需要一个 use 子句:

但是插入会use System.Strings.String_List产生:

我也收到了这个警告:

因此,我在 with 和 use 子句中用 GNAT 代替了 System,除了原来的“您需要 System.Strings.String_List 的 use 子句”之外,还得到了一个额外的错误:

为什么 GNAT.Strings.String_List 不允许在 use 子句中使用?关于 use 子句的第 8.5 节似乎没有对不允许的包说明任何内容,所以这是编译器错误吗?是否可以定义一个不能有 use 子句的新包?

0 投票
1 回答
49 浏览

r - 为什么 tidyverse 的中缀函数 := 不需要它周围的 % ?

如果要创建自己的中缀函数,则需要具有%fun_name%. :=为什么of不是这种情况tidyverse?还有,跟算子一样!!,形式也一样tidyverse

0 投票
1 回答
623 浏览

parsing - 如何使用 Haskell 解析中缀而不是前缀?

我在尝试用 Haskell 编写的这个程序方面需要帮助。我已经写了大部分内容,这就是我基本上想要做的事情:

  1. 当我写

解析“a + b”

在终端中,我希望将其作为输出:

加号(单词“a”)(单词“b”)

  1. 当我写

解析“a - 2 * b + c”

在终端中,我希望将其作为输出:

减号 (单词 "a") (加号 (Mult (Num 2) (单词 "b")) (单词 "c"))

到目前为止我的代码:

现在我在终端中发布我写的文本时出错,但是当我这样写时:

解析“+ a b”

我得到正确的输出:

加号(单词“a”)(单词“b”)

我知道我必须更改代码,以便它接受我在此表单上发送到解析函数的内容:

值运算符值,

而不是这种形式:

运营商价值价值

但是我正在努力找出我必须在哪里以及在哪里做这个改变。

0 投票
0 回答
34 浏览

c - 使用 c 语言的带有最少括号数的中缀前缀

请帮助我,我没有得到应有的正确输出。我正在分享我的代码,因此大家会更容易理解我的代码的问题

我的问题的解释:

我一直在尝试编写将前缀形式转换为中缀的代码。除了最后一个额外的括号外,我得到了预期的输出:例如:

但是我的程序输出:

0 投票
1 回答
42 浏览

c++ - 如何解决此代码中的分段错误?

我正在尝试制作一个中缀计算器,我目前正在尝试将在字符数组中输入的数字转换为双精度。

这是我的代码:

样本输入

它停止工作并将分段错误作为标记位置的错误。

0 投票
1 回答
156 浏览

c# - C# 中的 F# 中缀运算符?

在 F# 中,为二元运算符声明中缀运算符并不少见。但是如果我们尝试在 C# 中使用它们,它们是如何表示的?因为在 C# 中无法声明中缀运算符?

玩具示例

0 投票
0 回答
81 浏览

select - 编译简单解码器时类型错误解析中缀表达式

这是 vhdl 中的代码:

当我尝试编译这个非常简单的 2 到 4 位解码器时,无论我做什么,我都会收到错误消息

我看不到或不明白问题出在哪里,因为我在第一行没有收到“<=”的错误,只有第 2、3、4 和 5 行。