问题标签 [expression]

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 投票
1 回答
2418 浏览

expression - 将表达式转换为带有扭曲的合取范式

我有一个库,我必须与之交互,它基本上充当数据源。检索数据时,我可以将特殊的“过滤器表达式”传递给该库,然后将其转换为 SQL WHERE 部分。这些表达非常有限。它们必须是合取范式。喜欢:

这对于编程来说当然不是很舒服。所以我想制作一个小包装器,它可以解析任意表达式并将它们转换为这种正常形式。喜欢:

会被翻译成类似的东西:

我可以使用Irony库将表达式解析为树。现在我需要对其进行规范化,但我不知道如何......哦,还有,这是扭曲:

  • 最终表达式可能不包含NOT运算符。但是,我可以通过将运算符替换为逆运算符来反转各个项。所以,这没关系:

    (not A or not B) AND (not C or not D)

    但这不是:

    not (A or B) and not (C or D)

  • 我想让表达式尽可能简单,因为它将被翻译成几乎相同的 SQL WHERE 语句,因此复杂的语句很可能会降低执行速度。
0 投票
2 回答
1968 浏览

linq - 如何实现外连接表达式树?

我需要使用表达式语法来实现查询(因为我不知道编译时的类型)。例如这样的查询:

我找到了实现组加入部分的方法,如下所示:

但我不知道如何使用这种语法编写查询的其余部分。有人可以帮助我吗?

0 投票
3 回答
4965 浏览

javascript - 表达式解析:如何分词

我希望在 Javascript 代码中标记类 Java/Javascript 的表达式。我的输入将是一个包含表达式的字符串,输出需要是一个标记数组。

做这样的事情的最佳做法是什么?我需要迭代字符串还是有一个正则表达式可以为我做这个?

我需要这个能够支持:

  • 数字和字符串文字(单引号和双引号,引号转义)
  • 基本的数学和布尔运算符和比较器(+、-、*、/、!、and、not、<、> 等)
  • 递归对象访问的点和括号表示法 (foo.bar, foo['bar'], foo[2][prop])
  • 带嵌套的括号
  • 三元运算符 (foo ? bar : 'baz')
  • 函数调用 (foo(bar))

出于安全原因,我特别想避免使用eval()或任何类似的东西。此外,eval()无论如何都不会为我标记表达式。

0 投票
6 回答
644 浏览

parsing - 重构布尔方程

假设您有一个像这样的布尔规则/表达式

您想将其转换为尽可能多的 AND 表达式,就像这样

你只是在减少 OR,所以它变成了

布尔代数中是否有可以做到这一点的属性?

0 投票
1 回答
1202 浏览

dynamic - 亚音速动态查询表达式

当谈到亚音速表达时,我在尝试生活在亚音速世界并成为亚音速女孩时遇到了一些问题......

在阅读了Subsonic Query (ConditionA OR ConditionB) AND ConditionC之后,看来我不是唯一遇到此类问题的人,但希望有人(全能的抢劫??)可以回答这个问题。

我正在尝试根据循环条件在我的查询中创建一个表达式。我想要实现的(在伪代码中)是这样的:

我的主要问题是表达式中的每个条件都是不同的列 - 否则我可以只使用 .In() 。我在外面也有额外的搜索条件(读一点),所以它不能在表达式之外。

我真的不想离开强类型亚音速子宫的温暖舒适,但我认为在这种情况下我可能也有……如果我必须这样做,有没有办法用手添加到亚音速查询中输入条件,所以我不必更改查询中的所有其他代码(现在很多业务逻辑都生活在亚音速领域)

一如既往,感谢您的帮助

0 投票
2 回答
37002 浏览

c# - 如何为 Like 创建 System.Linq.Expressions.Expression?

我从这个源创建了一个可过滤的 BindingList 。它工作得很好:

做它应该做的。内部像解析器一样工作,将表达式==!=转换为System.Linq.Expressions.Expression. 在这种情况下,==变为System.Linq.Expressions.Expression.Equal

不幸System.Linq.Expressions.Expression的是不包含类似的运算符,我不知道如何解决这个问题。

初始代码如下所示:

然后我创建了一个表达式来做我想做的事:

例如

binaryOpFactory需要这个:

预定义的表达式似乎正是:

谁能告诉我如何转换我的表达方式?

0 投票
5 回答
1315 浏览

java - 将插入的字符串转换为可编译的表达式

我对Java有点陌生,所以我的问题似乎微不足道,但是我在书中的任何地方都找不到答案。

我想与用户启动一个对话,他将在其中输入算术表达式(例如(2 * x + y))然后打印出该表达式的结果(对于给定的x和y值)

我无法转换用户插入的字符串,因此它将用作 x 和 y 的算术表达式,从而定义输出的值

TIA JMT

0 投票
8 回答
2327 浏览

php - PHP 中的通用声明式表达式生成器

伙计们,

我正在寻找构建一个PHP5 UI,我很确定它对一堆应用程序很常见。基本上,它是一个表达式构建器,允许用户指定通过逻辑运算符 (AND/OR) 组合的表达式,如下所示:

  • 场 X > 3 和场 Y = 5
  • FieldY = "bob" 并且 FieldZ 不为空
  • FieldX > '5/23/2007' OR (FieldY = 5 AND FieldY 不为空)

理想情况下,像这样的系统将允许我作为程序员指定用户可以选择的参数列表(列)以及每个参数的数据类型。它还将提供一个很好的、用户友好的界面来定义这样的表达式 - 我在想象一个类似于表格的东西,其中每一行都有几个选择器:

[列] [条件] [值] [AND/OR] [列] [条件] [值] [AND/OR] ...

你知道做类似事情的开源组件吗?或者也许是这种功能的一部分?

0 投票
4 回答
657 浏览

visual-studio - 在 Visual Studio 2008 中执行表达式求值/归约

是否可以让 Visual Studio 进行数学表达式评估/简化?

例如,如果我输入“-0.005 + -0.345”,我如何让 Visual Studio 减少它(即用减少量替换它)?我必须写一个宏吗?如果是这样,是否有任何预先存在的宏来执行这种类型的表达式减少?

为了清楚起见,我希望能够突出显示一个表达式并将其替换为缩减的结果。许多人建议立即窗口,但我看不出这如何足够?

编辑我应该指出,这是在编辑未运行或调试时。即时窗口几乎没有用处。我也认为这是一个语言中立的问题。我当然有兴趣看到我发布的宏的替代宏。

编辑一次......去两次......(即在我考虑接受我自己的答案之前有任何其他建议吗?)

0 投票
9 回答
3003 浏览

c++ - 是否有任何类型的“表达式类”(C++)

我正在创建一个游戏,让玩家输入输入,改变一些状态,然后检查“目标值”是否为真(显然这个描述被大大简化了),我希望能够让这个目标值来自 if如果剩余的敌人数量等于零,则玩家的生命低于某个值。是否有任何“表达式类”可以保存一个简单的“value1 比较运算符 value2”并检查它?IE:

如果没有,是否有人对我如何开发表达式课程有任何建议?

编辑:另一个(更接近我想要实现的目标)示例: