问题标签 [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 投票
3 回答
1399 浏览

parsing - 具有讽刺意味的 AST 生成引发空引用异常

我开始使用 Irony(版本 Irony_2012_03_15),但在尝试生成 AST 时我很快就卡住了。下面是一个抛出异常的完全约束语言:

一旦我取消注释最后一行,它就会在语法资源管理器中或当我想解析测试时抛出 NullReferenceException。错误在 AstBuilder.cs 第 96 行:

DefaultNodeCreator 是一个尚未设置的委托。

我试过用 MarkTransient 等设置东西,但没有骰子。

有人可以帮我在这里漂浮吗?我可能遗漏了一些明显的东西。在整个网络上寻找 AST 教程,但我似乎无法找到有关其工作原理的解释。

提前致谢,

格特-扬

0 投票
2 回答
675 浏览

c# - 具有讽刺意味的运算符优先级和一元运算符

我在让我的语法与一元运算一起工作时遇到问题。例如,如果我输入“-5/2”,我会得到 -(5/2),而不是我想要得到的 (-5)/2。在这种特殊情况下,差异并不重要,但是,我仍然认为解决这个问题对语法很重要。

但是,将 1-5/2 get 解析为 1-(5/2) 而不是 (1-5)/2 也很重要。

目前我注册了以下运营商:

not 运算符已经按照我的意愿工作,但是,“+”和“-”类型需要在它们所在的位置,以确保正确解释“*”、“/”和“%” . 我应该如何解决这个问题?顺便说一句,如果您需要更多语法,请告诉我,我只是认为我不需要在这里丢弃更多的代码。

0 投票
3 回答
1713 浏览

c# - Irony: StringLiteral without StartEndSymbol

I'm using the Irony DSL framework to parse a language. That language allows strings to be written without quotes ("), even if they contain special characters like dot (.) or minus (-).

If I editthe text files I get, so the strings have quotes around them, they can be parsed just fine. However, I want to read the files as they are. How can I make Irony parse a string without setting a StartEndSymbol?

I'm using the current version of Irony (2012_03_15).

0 投票
1 回答
866 浏览

c# - C# Irony Parser - 尽管一切看起来都正确,但不会解析文件

我对 Irony 有一些棘手的问题,我不明白......

我在应用程序运行时执行的第一次解析成功。

然后我按照一个提示将 LanguageData 变量移动到全局上下文。还是一切正常。但是现在我想在自定义函数中调用 Irony 解析器,使用 Irony 提供的 c# 语法 v3.5 解析多个文件(LINQ 查询对我来说并不重要,所以这似乎足够了)。相同的方法:

但是现在 parseroot 是并且仍然是“null”。我完全不知道为什么。刚才我还检查了解析器错误,在那里我发现了一个我无法理解的错误。

但我的文件看起来像这样:

我希望你能看到我的代码有什么问题......我对这件事感到绝望......

0 投票
2 回答
252 浏览

c# - 搜索中的“and”和“or”问题

我目前正在使用 Irony 作为我的搜索系统的一部分,我遇到了无数关于不正确语法的问题,我已经设法缩小了范围,但现在我被困在最后一个似乎与某些关键字有关的问题上。

如果您要搜索包含“或”或“和”的任何内容,则它会在 SQL 搜索字符串中返回语法错误。

对于其他问题,我只是简单地逃脱了流氓字符或完全从搜索中删除它们,但这似乎不是一个可行的解决方案,因为这些词可能是我们搜索的一部分。

Irony 链接:http: //irony.codeplex.com/

当联合被添加到字符串中时,它会导致它崩溃并抛出错误,并且错误出现在最后一行。

实际错误是:

目前如何解决其他问题;

给出错误时的实际查询是:

0 投票
1 回答
373 浏览

c# - 在字符串中包含“或”时出现语法错误

我目前正在使用 Irony 作为我的搜索过程的一部分(不是我的选择,我没有发言权:P),并且使用字母“或”后跟空格和另一个单词 IE 的组合存在问题Orbit Gum”但是,如果您单独搜索“orbit”或仅“或”之类的东西,它似乎可以正常工作。

发生的错误是

用于生成这部分的代码是

据我所知,导致问题的实际查询是这一行:

0 投票
1 回答
906 浏览

c# - Irony .NET - 作为运算符的字符

我正在尝试使用Irony .NET创建一个简单的 DSL 来处理相当复杂的掷骰子指令。基本的计算器功能很容易实现(加法、减法等)。然而,当我终于可以添加滚动表达式时,我遇到了麻烦。理想情况下,我希望滚动表达式采用以下形式: ndm 其中 n 是要滚动的骰子数,m 是每个骰子的面数。

我的问题是我想要 d 旁边的表达式,如果我这样做, Irony 会抱怨 d 是一个无效字符。它周围的空格有效(1 d 6),用非字母数字字符代替它有效(1%6)。目前,我只需将源中的每个 d 替换为“ d ”即可工作,但这显然在我处理变量时不起作用(我计划在前面加上 '$' 以将它们分开)。

问题是,我怎样才能让它在没有空格(1d6)的情况下工作,最好不要对语法进行任何重大改变?(注意:如果它仍然适用于空格,那是完全可以的,我只是不希望它们是必需的。)

0 投票
1 回答
1022 浏览

c# - Irony .NET:表达式运算符优先级

我正在使用 Irony 解析 DSL,它具有可以与 AND 和 OR 组合的表达式:

我有以下表达式:“A and (B and C or D)”。它被解析为“A and (B and (C or D))”,但我需要它是“A and ((B and C) or D)”。

我认为将 and 关键字注册为具有比 or 关键字更高优先级的运算符会这样做。我错过了什么?

0 投票
1 回答
270 浏览

parsing - 用简单的语言语法定义函数签名

我目前正在学习如何使用Irony创建简单的表达语言。我在找出定义函数签名的最佳方法以及确定验证这些函数输入的责任时遇到了一些麻烦。

到目前为止,我有一个简单的语法来定义我的语言的基本元素。这包括一些二元运算符、括号、数字、标识符和函数调用。我的语法的 BNF 看起来像这样:

使用 Irony 解析器,我能够验证各种输入字符串的语法,以确保它们符合以下语法:

这一切都很好,但现在我想更进一步,定义可用的函数,以及每个函数所需的参数数量。因此,例如,我想要一个FOO接受一个参数并BAR接受两个参数的函数:

解析第二条语句时,我希望能够输出一条错误消息,该消息知道此函数的预期输入:

我实际上不需要评估任何这些语句,只需验证语句的语法并确定它们是否是有效的表达式。

我到底应该怎么做?我知道从技术上讲,我可以像这样简单地将函数添加到语法中:

但是这方面的某些事情感觉不太对劲。在我看来,语法似乎应该只定义一个通用函数调用,而不是该语言可用的每个函数。

  • 这通常在其他语言中是如何实现的?
  • 哪些组件应该负责分析语言语法的基本语法与函数定义等更具体的元素?这两个职责应该由同一个组件处理吗?
0 投票
1 回答
1078 浏览

c# - 使用 Irony 实现前缀符号表达式解析器

我正在尝试使用带有 Irony 库的上下文无关语法来解析用户输入的前缀符号逻辑表达式。这是一个课堂作业,所以如果有人碰巧是这方面的专家,我很想知道更多。

我需要接受以下格式的用户输入逻辑表达式:

我正在尝试使用我在 Irony 中实现的上下文无关语法将这些解析为表达式树。我正在使用的上下文无关语法在 BNF 中:

我以前使用 Irony 来解析表达式,但由于某种原因,我无法让它工作。当我键入表达式and P Q时,它似乎将“and”标识为标识符终端,而不是 And 非终端的一部分。我可能正在做一些明显的事情,但我根本无法弄清楚。这是我扩展的语言课:

这是我的驱动程序类:

如果我做错了什么,请告诉我,我很想对此提出一些建议。