问题标签 [irony]

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 回答
46 浏览

asp.net - 商店的 SQL Server 2008 R2 全文搜索

这是一个较长的,所以请多多包涵:-)

我的情况是提前搜索我们的 Intranet 商店。当前的解决方案运行良好,但它的实现方式存在一些缺点。

我们使用 ASP.NET 和 SQL Server 2008 R2,搜索主要使用CONTAINSTABLE. 我们遇到的问题是一些用户需要在描述中找到具有特定技术/物理细节的项目。搜索查询的一些示例是

例如,我尝试使用第一个搜索词查找项目描述,这些项目看起来大多像这样

我正在使用 Irony 将搜索查询转换为CONTAINSTABLE. 我什至支持搜索词前面的排除(带 -)和搜索词末尾的通配符之类的东西。

现在据我了解,在更新全文索引时,像 1/2" 这样的术语没有被索引,因此CONTAINSTABLE在寻找它作为条件时找不到它。我也遇到了 "和 ' 在搜索中使用,因为它会导致 SQL 级别的语法错误,因此即使在搜索到达数据库之前我也必须丢弃它们。

示例:SomeItem 1/2" 当前已转换为搜索条件 ("SomeItem" AND "1/2") 并返回 0 结果,因为 FullTextIndex 将 / 计为标点符号,并且不索引我正在尝试的项目描述的那部分找到(至少据我所知)。

我该如何解决这个问题?可以这样做CONTAINSTABLE还是我需要做一些完全不同的事情?我对我们的几个供应商自己的商店进行了搜索,这些查询似乎有 0 个问题。

当前的“解决方法”是,如果搜索没有返回结果,我会再次使用FREETEXTTABLE而不是运行相同的搜索CONTAINSTABLE,这主要是找到项目,但也有很多不相关的东西。

我们即将在 SQL Server 2014 上测试我们的代码,这对全文索引的工作方式有影响吗?

此致

-戴夫

0 投票
1 回答
61 浏览

c# - Irony BnfExpression 产生不同的非终结符,可以是任何顺序

我正在尝试创建一种允许产品以任何顺序出现的语法。例如:

两者都应该被接受。

到目前为止,我已经能够像这样使用每个产品的排列来摆脱困境:

以下代码是使用讽刺的 BnfExpresion 编写的,其中 + 表示连接

然而,当我尝试用 6 个不同的非终端置换一个产品时,这种方法成为一个问题。6阶乘是720,对于c#来说太多了,因为它会提示编译器错误(表达式太长或编译太复杂)。

有没有办法我可以实现“任何顺序”而不必排列所有不同的可能性。

0 投票
1 回答
54 浏览

irony - Irony - SampleExpressionEvaluator 1.0 - “iff”符号在哪里定义?

我正在使用 Irony 存储库中提供的语法资源管理器。我试图了解事情是如何运作的。我很困惑。我似乎找不到在 SampleExpressionEvaluator 1.0 示例中定义 iff 符号的位置 - “testlif.txt”

iif(1 > 0, "true", 1/0) + ", " + (1 > 0 ? "true" : 1/0) # expected: true, true

如果我iff改为blah我得到一个Error: Unknown symbol 'blah'. At (4:1).让我假设iff在某个地方定义的,我就是不知道在哪里。

这是语法定义

我正在寻找解析现有的专有字符串表达式语言。这个样本似乎是最相关的,但这个样本让我感到困惑。

一个示例字符串文字将是Hello I am Feeling {IF(boolMoodIsGood = True, "Good","Bad")} 如果 boolMoodIsGood 为真,则结果将是 Hello I am Feeling Good else Hello I am Feeling Bad

但实际上我不需要评估表达式我只需要解析它并获得一个表达式树。

0 投票
1 回答
111 浏览

c# - 具有讽刺意味的是,解析以空格分隔的列表

我正在尝试为 Allen Bradly SLC 语言/文件格式编写解析器。我已经成功地让它解析了一个寄存器引用。即 N5:4/3。但是,当我尝试进入下一个级别时,让它解析由空格分隔的寄存器引用列表,它会引发以下错误

输入:

N30:3/8 B20:3/3

错误:

(L1,C9)语法错误,预期::

这是我的代码,可以构建并将 dll 加载到 Irony Grammar Explorer

如果我更改以下行

我明白了

错误:(L1,C9)语法错误,预期:

我认为这意味着它需要一个空格字符

任何帮助,将不胜感激。我刚刚开始学习讽刺,没有大量的文档。

注意:稍后我希望能够解析采用这种形式的寄存器,这T8:5/DN意味着在正斜杠之后是字符串而不是数字。被终止的是空白

0 投票
1 回答
100 浏览

c# - 使用 Irony 解析时包含空格

我正在使用以下库编写解析器: https ://www.nuget.org/packages/Irony

我目前的目标是解析一个包含纯文本行的文件。每行都以空格或制表符开头。

这是我的语法课的样子:

这是目标文件的内容(不包括行):

令人惊讶的是,这件事在我身上失败了,并显示以下消息:

看起来语法默认配置为跳过空格和制表符。因此,它从一个“t”字母开始解析,跳过了第一个“”符号。这对大多数情况都很好,但不适用于这种情况。我正在尝试编写类似 python 的语言,因此跟踪空格很重要。

我不希望您为我编写整个语法,只是建议一种通用方法。任何帮助表示赞赏,谢谢!

UPD:我最终覆盖了 2 个这样的函数: