问题标签 [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.
c# - 如何使用 Irony 定义转义序列和字符文字?
我正在实现一个具有如下规则的语法:
关键是,我不知道如何使用 Irony 定义字符文字。任何想法?
c# - 简单的反讽解析器不能识别超过 1 个特定匹配项的实例
我正在尝试创建一个简单的 Irony 解析器。语法应该是
能够识别其中一项或多项
设置链接(“字符串”);
它似乎成功识别了 1 个关键字()调用,但连续两个调用失败了。我得到一个错误状态。当我在 main 中检查 parseTree 变量时,我可以看到它在停止解析之前识别的最后一个标记是字母“c”,即“connect”标记中的第一个字母。谁能告诉我我在这里缺少什么?
code.txt的内容
LilGrammar.cs
主文件
parsing - Irony Shift 减少问题
我一直在试图弄清楚如何解决我遇到的一些转变减少冲突。我环顾四周,发现了修复它的不同主题,但似乎无论我做什么,我似乎都找不到解决这些问题的方法。
我正在尝试为流行的脚本引擎 Angel Script 编写语法类,我从解析器类中获得了 BNF 语法。您可以在此处找到语言参考 http://www.angelcode.com/angelscript/sdk/docs/manual/doc_script.html
在我的课堂上,我为每条规则添加了一条关于我试图复制的 BNF 语法的评论。目前我实际上并没有使用我定义的关键字。一旦我可以让它在没有冲突的情况下工作,我会回去尝试清理它。这是我的课 http://pastebin.com/FydCTqmU
您应该能够只创建一个 Dll 并使用语法资源管理器运行它,您将看到所有错误。似乎大多数错误都来自同一个问题,所以我想也许一旦我能解决这个问题,它几乎可以解决所有问题。
编辑:这是主要问题。那是主要的脚本状态,我知道它被分解成许多不同的规则,但我这样做了,所以我可以尝试解决我仍然没有运气的问题。
编辑:我尝试压缩我的代码以希望通过reduce-reduce错误,但它似乎保持完全相同,只是看起来更加混乱。如果有人能帮我把它弄好,我会很乐意通过贝宝寄给他们几百美元。我正要放弃它已经一个多星期了。我的电子邮件是 Anth0ny229@live.com。
状态 S0(不足)输入上的减少-减少冲突: const identifier void int8 int16 int32 int64 int uint8 uint16 uint32 uint64 uint float double bool ? auto :: 移位项目:
减少项目:
过渡:
shift-reduce-conflict - 具有讽刺意味的归约问题
我已经尝试解决这个问题将近 2 周了。起初是 shift-reduce 错误,现在是 reduce-reduce 问题。我已经尝试了很多方法,现在我已经到了需要帮助的地步。我已经编写了多种语言,并且几乎在 10 年前就开始了,这是我第一次真正发帖寻求帮助。
我正在尝试为流行的脚本引擎 Angel Script 编写语法类,我从解析器类中获得了 BNF 语法。您可以在此处找到语言参考http://www.angelcode.com/angelscript/sdk/docs/manual/doc_script.html
在我的课堂上,我为每条规则添加了一条关于我试图复制的 BNF 语法的评论。目前我实际上并没有使用我定义的关键字。一旦我可以让它在没有冲突的情况下工作,我会回去尝试清理它。这是我的课http://pastebin.com/FydCTqmU
您应该能够只创建一个 Dll 并使用语法资源管理器运行它,您将看到所有错误。似乎大多数错误都来自同一个问题,所以我想也许一旦我能解决这个问题,它几乎可以解决所有问题。我编写了一个应用程序来帮助我将语法拆分为更不具体的部分,但我认为这导致我遇到了更多的 reduce-reduce 问题。
我尝试压缩我的代码以希望通过reduce-reduce错误,但它似乎保持完全相同,只是看起来更加混乱。如果有人能帮我把它弄好,我会很乐意通过贝宝寄给他们几百美元。我正要放弃它已经超过 2 周的时间了。我的电子邮件是 Anth0ny229@live.com。
我已经从 shift-reduce 到 reduce-reduce 错误。似乎无论我做什么,我都会遇到问题。我只是无法绕过它,我真的需要帮助。正如我所提到的,我会更乐意向某人支付帮助,只需给我发电子邮件即可。我计划制作一个像 babelua 这样的 Visual Studio 扩展,这样人们就可以使用 Visual Studio 编写 Angel Script 脚本,并希望添加调试支持。它将是免费的,因为我认为这将是一个很好的补充。因此,如果有人能以任何方式提供帮助,只要它最终工作,我会更乐意确保他们得到回报。谢谢你。
状态 S0(不足)输入上的减少-减少冲突: const identifier void int8 int16 int32 int64 int uint8 uint16 uint32 uint64 uint float double bool ? auto :: 移位项目:
减少项目:
过渡:
parsing - 在 Irony 中获取分隔符
我在语法中有以下规则:
我得到正确解析的列表并将项目列表返回为 ChildNodes 但我想知道如何获得“链接器”非终端?
c# - 遍历 AST 树并获取子节点值 Irony
我想通过 AST 树并让 ChildNode 等于“IfStatement”,但可能有很多 Childnodes,如下面的代码所示。是否有一些方法可以以递归方式添加 childNodes 并检查值?
我正在尝试这样的事情,但它不起作用
c# - 如何使用 C# 恢复 Irony Parser 中的解析错误?
我目前正在使用 Irony 解析器,但我似乎还没有找到那么多文档。这次我想做一些类似于 Bison 中的错误恢复的事情,在这里你可以得到错误所在的行和行。我不太确定如何在这样的语法中获取错误信息,例如:
当我输入“2++”之类的内容而不是仅仅显示有错误时,报告第 1 行第 2 行有错误。
.net - 如何在 Irony 解析器上忽略特殊字符,因为它是空格
我正在 Irony 解析器上实现一个解析器,我想跳过一些特殊字符,如 <、>、(、) 等。
我希望解析器将它们视为空格字符。如何在忽略列表中添加一些字符?
c# - 使用 Irony 和 C# 将搜索字符串转换为 SQL 全文索引查询
我有一个搜索框,用户可以在其中输入文本,当他们点击搜索时,他们输入的文本将在SQL CONTAINSTABLE
语句中使用。我需要解析字符串,使其具有适合CONTAINSTABLE
函数的格式,并且我找到了一个使用 Irony 的示例,它几乎完全符合我的需要。我在这里得到了 Irony 示例类:
这实际上是为 SQL CONTAINS 函数设计的,但两者之间的区别CONTAINSTABLE
现在对我来说不是问题。我做了一点修改,因为我不想要“屈折”行为,所以我将任何引用更改为“精确”。
我现在遇到的问题是我希望将搜索短语视为短语,而不是作为由AND
运算符分隔的关键字列表。例如,如果用户输入:“总经理”,那么我希望它以“总经理”的身份通过解析器,但它目前正在带回“总经理”和“经理”
我想我需要以某种方式修改构造函数,它正在构建所有表达式规则 - 但我什至不确定从哪里开始!
非常感谢任何帮助,谢谢。
.net - Irony 语言中的自定义数据类型
我正在尝试使用 Irony 构建一种语言。我面临的问题是我希望我的语言具有一些内置数据类型(不仅仅是字符串和 muber,还有一些具有属性的自定义对象等)。在 ExpressionEvaluator 中,我看到了如何添加内置方法,但我看不到如何添加内置数据类型。