问题标签 [antlr2]
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 - 在 antlr4 中使用错误令牌
这是我试图输入的语法
一切正常,但当我给
它按预期在第一个字符串上给了我一个错误,但我想要的是解析第二个命令忽略第一个' altasder table;
'
我怎样才能实现它???
我已经使用了 DefualtError 策略,但仍然没有工作
主类:公共类主{
我的输出:
为什么它不移动到第二个命令?
antlr - 自定义错误处理程序方法无法处理令牌识别错误
这是我的 .g4 文件:
我的主要课程:
我的CutomErrorHandler
班级:
当我给出输入altasdere table ; alter table ;
时,它不会解析第二个命令,因为它在第一个命令中发现了错误。我的主要课程的输出是
antlr - 将 ANTLR v2 语法迁移到 ANTLR v4
我们有一个为 antlr V2 编写的语法,我想迁移到 antlr v4。有迁移指南吗?我还想知道对现有 V2 语法的修改,以便我们能够很好地利用 v4 功能。
java - ANTLR 2 不生成 AST 文件
我收到了一个废弃的专有 Java 代码库的 tarball,它使用 ANTLR 2.7.6 来生成词法分析器、解析器和 AST。在 tarball 中有一个文件夹,其中包含其他内容
- 名称.g
- 名称AST.class
- 名称AST.java
- NameLexer.class
- NameLexer.java
- NameLexer.smap
- NameParser.class
- 名称解析器.java
- NameParser.smap
我想要做的是用一个整洁的 Gradle 项目替换手动生成的 ANTLR 代码和丑陋的构建脚本。所以我把 .g 文件放在我的项目中,并包含了Gradle ANTLR 插件。
但是,当我运行 Gradle 构建时,在build/generated-src
NameAST.java 文件中没有生成,导致编译时缺少符号错误。
我四处寻找,我唯一能找到的是buildAST
应该设置的,而且确实 Name.g 包含以下内容。
我的语法文件src/main/antlr/pkgname
按照文档存储,生成的代码最终在正确的位置。我无法共享语法文件,但由于我有一个工作 JAR 和提供的编译代码,我认为它们是正确的。
为什么 ANTLR 不生成 AST 文件?
build.gradle
InteliJ 当前生成的文件如下所示
java - 当属性值包含关键字时,尝试使用 antlr2 解析 edifact 文件时出错
我有一个忘恩负义的任务来修复用于解析 edifact 文件的旧 antlr2 解析器中的错误。不幸的是,我对 antlr2 或解析器一点也不熟悉,我无法让它工作。
edifact 文件如下所示:
有几个不同的段,以关键字开头。例如 XYZ 或 ABC。关键字后面跟着不同的属性值,都用' + '分隔。属性值可能为空。每个段都以'结尾。
问题是,只要数据属性包含关键字,解析器就会抛出错误:
意外令牌:XYZ
XYZ +公司+++ XYZ +zip+street'
这是语法文件的摘录:
非常感谢任何帮助:)。
antlr - 无法理解 Antlr 工具错误解析语法
第 85 行是statement
规则。我真的不知道为什么会失败。请帮忙?
这与 Antlr2 顺便说一句。是的,是的,超级老,是的,是的……
谢谢!
antlr - 否定词法分析器规则/令牌
我正在尝试匹配(并忽略)c 样式的块注释。对我来说,顺序是 (1)/*
后跟 (2) 任何其他/*
或*/
直到 (3) */
。
但是 Antlr 不像我那样思考 ;)
所以错误信息有点神秘,但我认为它试图说只有范围、单字符替代或标记替代可以被否定。但这不是我所拥有的吗?两者BLOCK_COMMENT_START
都是BLOCK_COMMENT_END
令牌。我错过了什么?
非常感谢您的帮助。
java - ANTLR 2 令牌流多路复用:为什么我的令牌出现故障?
我正在用java编写多行字符串(文本块)的语法。文本块的开始和结束的分隔符是三引号。我可以成功地解析和构建文本块及其内容的 AST,除了一个问题:TEXT_BLOCK_START
令牌是在第二个词法分析器的令牌之后返回的。我以此为指导:流程图。根据 ANTLR2 文档,我实现它的方式应该产生所需的令牌流:
TEXT_BLOCK_START
-> content from second lexer, etc...
->TEXT_BLOCK_END
我尝试更改操作和分隔符的顺序、规则的顺序以及使用select()
而不是selector.push()
.
以下是主类的重要部分:
词法分析器(主词法分析器)规则:
二级词法分析器规则:
如上所述,一切都按预期解析,除了令牌流如下所示:
content from second lexer, etc...
-> TEXT_BLOCK_END
->TEXT_BLOCK_START
我在这里想念什么?