问题标签 [antlr3]
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.
antlr - 求生成C代码时非常简单的ANTLR错误处理例子
我想生成 C 代码。我不会从输入文件中读取,一次一行(例如,编译器可能)。相反,我将在用户输入到达时对其进行解析,一次一行。
我更愿意检测和处理词法分析器/解析器中的错误输入,例如
好的,如果我无法在词法分析器/解析器中捕获它,我似乎需要使用它,displayRecognitionError()
但是如何使用?
谁能指出一个非常简单的示例,该示例生成 C 代码并显示对无效输入的一些错误处理?
谢谢!
好的,赏金,yippee!
但仅适用于具有真实有效代码的真实有效答案。没有 wxample 就没有“使用方法 X()”。
java - 扩展简单的 ANTLR 语法以支持输入变量
我仍在寻求一种非常简单的语言,我现在知道没有。所以我正在使用 ANTLR3 自己编写一个。
我在这个答案中找到了一个非常好的例子:
经验:
Java 代码:
使用这个 ANTLR 语法,我可以评估表达式
结果得到13。
现在,我的用例唯一缺少的是将简单的双变量注入其中的方法,以便我可以通过提供 {"A": 12.0, "B":14.0} 作为输入映射来评估以下内容:
有任何想法吗?
antlr - 如何在 ANTLR3 中制作 TreeParser?
我正在尝试学习语言解析以获得乐趣......
我创建了一个 ANTLR 语法,我相信它会匹配我希望实现的简单语言。它将具有以下语法:
实际示例:
我相信我的语法可以正常工作以匹配这个结构,现在我正在尝试为该语言构建一个抽象语法树。
首先,我必须承认我不确定这棵树应该是什么样子。其次,我完全不知道如何在我的 Antlr 语法中做到这一点......我已经尝试了几个小时但没有取得多大成功。
这是我目前对树的想法:
这是我当前的 Antlr 语法文件:
任何帮助/建议都会很棒。我已经尝试阅读数十篇教程,但似乎没有任何关于 AST 生成的内容:(
unicode - 如何匹配 antlr 中的 unicode 字符
我正在尝试挑选文本中的所有标记,并且需要匹配所有 Ascii 和 Unicode 字符,所以这就是我如何布置它们。
现在,如果我将令牌规则写为:
我得到“Decision can match input such as "'A'..'Z'" using multiple alternatives: 1, 3 因此,该输入的替代项 3 被禁用”“Decision can match input such as "' 0'..'9'" 使用多个备选方案:2、3 因此,该输入的备选方案 3 被禁用"
没有任何匹配:如果我把它写成
什么都匹配不上。
有没有办法做到这一点。
antlr3 - ANTLR3 将一个 int 注入到我的树中
有可能做我在这里尝试的事情吗?或者,也许我接近它错了?
llvm - 如何使用 ANTLR 和 C 目标生成 LLVM IR
我目前正在尝试使用 ANTLR3 生成 LLVM IR。但问题是,我需要 C 目标(C++ 会更好,但还没有工作,或者是吗?)但是从 C 中我不能调用 LLVM C++ API 来构建 IR。
Terence Parr 的教程使用 Java 和 StringTemplate 库。但据我所知,StringTemplate 库不适用于 C。
有没有人有一些好主意如何做到这一点?:)
谢谢
c - ANTLR3 C 目标线程安全吗?
ANTLR3 C 目标线程安全吗?
antlr - 在 ANTRL 重写器语法中使用 $ 作为 StringTemplate 中的分隔符
我正在尝试编写一个使用 StringTemplate 生成 HTML 输出的 ANTLR3 语法。为了避免必须转义模板规则中的所有 HTML 标记(例如\<p\><variable>\</p\>
),我更喜欢使用美元作为 StringTemplate 的分隔符(例如<p>$variable$</p>
)。
AngleBracketTemplateLexer
虽然后者在单独使用 StringTemplate 时似乎是默认设置,但初始化 StringTemplate 时始终使用 ANTRL 生成的解析器代码。
如何让 ANTLR 使用DefaultTemplateLexer
(即使用美元作为分隔符的变体)生成代码?
c# - ANTLR - 包括意外字符的基本语法?
我有一个非常简单的 ANTLR 语法,我正在尝试开始工作,但目前失败得很惨。真的很感激这方面的一些指示......
使用以下测试输入:
我想要一棵只是关键字节点列表的树,
此刻我得到
(由于某种原因“。”出现在最后一个关键字中,它错过了“工作”
如果我将 ABBRV 子句更改为
然后效果很好,但我得到关键字(asp)和关键字(.net) - 分开 - 但我需要它们作为一个单一的标记。
您可以提供的任何帮助将不胜感激。
compiler-construction - 如何使用 ANTLR 修改 CommonTokenStream 中的令牌文本?
我正在尝试学习 ANTLR,同时将其用于当前项目。
我已经到了可以在一段代码上运行词法分析器并将其输出到 CommonTokenStream 的地步。这工作正常,我已经验证源文本被分解成适当的标记。
现在,我希望能够修改此流中某些标记的文本,并显示现在修改的源代码。
例如我试过:
我正在尝试将所有标识符标记的文本设置为字符串文字“V”。
为什么当我调用 tokens.toString() 时我对令牌文本的更改没有反映出来?
我怎么知道各种令牌类型 ID?我带着我的调试器走过去,发现 IDENTIFIER 令牌的 ID 是“4”(因此我的常量在顶部)。但否则我怎么会知道呢?是否有其他方法可以将令牌类型 ID 映射到令牌名称?
编辑:
对我来说很重要的一件事是我希望标记具有其原始的开始和结束字符位置。也就是说,我不希望他们通过将变量名称更改为“V”来反映他们的新位置。这样我就知道标记在原始源文本中的位置。