antlr3相关内容

替换ANTLR中的令牌

我想使用ANTLR替换令牌. 我尝试使用TokenRewriteStream并替换,但是没有用. 有什么建议吗? ANTLRStringStream in = new ANTLRStringStream(source); MyLexer lexer = new MyLexer(in); TokenRewriteStream tokens = new TokenRewr ..
发布时间:2020-09-02 22:56:07 其他开发

antlr全局规则范围声明与@members声明

在这种情况下,您更愿意声明一个变量,全局范围还是@members声明?在我看来,它们可以达到相同的目的? 更新这是一种语法,解释我的意思. grammar GlobalVsScope; scope global{ int i; } @lexer::header{package org.inanme.antlr;} @parser::header{package org.inanm ..
发布时间:2020-09-02 22:52:48 其他开发

插入符号前缀而不是antlr中的后缀

我知道插入符号后缀在antlr中的含义(即,使root生效),但是插入符号何时是前缀,如我一直在阅读的以下语法中那样(该语法是全新的,并且由学习antlr的新团队完成).... selectClause : SELECT resultList -> ^(SELECT_CLAUSE resultList) ; fromClause : FROM tableList ..
发布时间:2020-09-02 22:46:40 其他开发

用于reStructuredText的ANTLR语法(规则优先级)

第一个问题流 大家好, 这可能是该问题的后续措施: Antlr规则优先级 我正在尝试为 reStructuredText标记语言. 我面临的主要问题是:“如何在不掩盖其他语法规则的情况下匹配任何字符序列(常规文本)?" 让我们以带有内联标记的段落为例: In `Figure 17-6`_, we have positioned ``before_ptr`` so ..
发布时间:2020-09-02 22:36:47 其他开发

如何在ANTLR3中创建TreeParser?

我正在尝试学习语言解析,这很有趣... 我创建了一个ANTLR语法,我相信它将与我希望实现的一种简单语言匹配.它将具有以下语法: ( +) { + } 实际示例: ForEach(in:[1,2,3,4,5] as:"nextNumber") { ..
发布时间:2020-09-02 22:25:32 其他开发

Antlr规则优先级

首先,我知道这种语法没有意义,但是它是为测试ANTLR规则优先级行为而创建的 grammar test; options { output=AST; backtrack=true; memoize=true; } rule_list_in_order : ( first_rule | second_rule | any_left_over_token ..
发布时间:2020-09-02 22:24:29 其他开发

动态创建词法分析器规则

这是一个简单的规则: NAME : 'name1' | 'name2' | 'name3'; 是否可以使用包含字符串的数组为此类规则动态提供替代方法? 解决方案 是的,动态令牌与IDENTIFIER规则匹配 在那种情况下,只需在Id完全匹配之后进行 检查,以查看Id匹配的文本是否在预定义的集合中.如果它在集合中(在我的示例中为Set),请更改令牌的类型. 一个小演 ..
发布时间:2020-09-02 22:22:14 其他开发

我可以在运行时添加Antlr令牌吗?

我遇到的情况是我的语言包含一些在构建时未知的词,但在运行时会被理解,这导致需要不断重建/重新部署程序以考虑新词.我在徘徊,是否可以在Antlr中从配置文件中生成一些令牌? 例如,在一个简化的示例中,如果我有一条规则 rule : WORDS+; WORDS : 'abc'; 我的语言在运行时遇到'bcd',我希望能够修改配置文件以将bcd定义为一个单词,而不必重新构建然后重新部署 ..
发布时间:2020-09-02 22:21:01 其他开发

否定词法分析器规则和内部规则

否定元字符~如何在ANTLR的词法分析器规则中使用? 解决方案 在在lexer规则内部,您可以否定字符,而在解析器规则中,您可以否定标记(lexer规则).但是词法分析器和解析器规则只能分别否定单个字符或单个标记. 几个例子: lexer规则 要匹配一个或多个字符(小写的ascii字母除外),您可以执行以下操作: NO_LOWERCASE : ~('a'..'z') ..
发布时间:2020-09-02 22:19:41 其他开发

ANTLR中的“语义谓词"是什么?

ANTLR中的 语义谓词 是什么? 解决方案 ANTLR 4 对于ANTLR 4中的谓词,请检查以下 stack overflow Q& A: Antlr4中语义谓词的语法 ANTLR4中的语义谓词? ANTLR 3 语义谓词 是一种在语法上强制执行额外(语义)规则的方法 使用普通代码进行操作. 语义谓词有3种类型: 验证 语义谓词; 门控 语义谓词 ..
发布时间:2020-09-02 22:19:32 其他开发

方案R5RS的ANTLR语法

我是ANTLR的初学者,并且通过示例学习它.我使用C作为目标语言. 该示例是从此问题获取的Scheme R5RS语法文件. ,稍作修改(重命名语法名称,并添加一些未更改语法规范的选项). antlr生成了词法分析器和解析器,我用测试main()对其进行了编译,在该测试中,我只是进行了一些初始化并仅调用了解析器.当使用一段方案代码运行测试程序时,解析器检测到一些语法错误(不应该发生!) te ..
发布时间:2020-07-05 04:32:25 其他开发

ANTLR从Java到C#

我正计划创建一些东西,以进行从Java到C#的自动翻译(此后相反).我需要的是可以用来将Java源代码转换为C#源代码的东西. 我遇到了ANTLR,但是我不确定如何在任务中使用它.我知道ANTLR对Java和C#都有很强的支持,并且两者都已经存在语法,包括词法/解析过程,AST创建,最后是树遍历器.从理论上讲,我明白了,但是当涉及到将其实际投入使用时,我会停滞不前. 有人找不到我可以找 ..
发布时间:2020-06-29 19:27:40 Java开发

扩展简单的ANTLR语法以支持输入变量

我仍然在我对一种非常简单的语言的追求,现在我知道没有了.因此,我正在使用ANTLR3编写自己的代码. 我在此答案中找到了一个非常好的例子: Exp.g: grammar Exp; eval returns [double value] : exp=additionExp {$value = $exp.value;} ; additionExp retur ..
发布时间:2020-06-26 23:53:55 Java开发

为什么Antlr不生成lexer Java文件?

Antlr3不会生成Mylexer.java.我使用AntlrWorks ... 当我的语法像这样 语法mylexer; 它会生成myParser.java 这看起来很简单. 我想知道可能是什么原因..以及解决方案... 我没有收到错误消息. 解决方案 我找到了一种方法. AntlrWorks 1.4似乎有一个错误. 当我按ctrl + shift + G生成时,它 ..
发布时间:2020-06-20 18:35:26 Java开发

Antlr AST产生(可能)疯狂

以下可能吗?我想“反转"输入给antlr的输入,并使每个标记成为上一个标记的子代. 因此,对于输入(假设每个令牌都由'.'字符分隔): Stack.Overflow.Horse 我希望我的语法产生以下AST: Horse |---Overflow |---Stack 到目前为止,我已经设法反转了节点,但是我无法使它们彼此成为子节点: funct ..
发布时间:2020-06-20 18:35:17 其他开发