- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个用于评估 csv 文件的语法,并且根据 TestRig 它可以正常工作。生成以下解析树:
但是,如果我在应用程序中使用以下 java 代码,则解析失败并出现错误:
line 2:33 no viable alternative at input '=A2+B2+C1'
更新:我现在直接使用文件中的 Char 流,但错误仍然存在。
private static void parseFile(String fileName) throws IOException {
CSVLexer lexer = new CSVLexer(CharStreams.fromFileName("test.csv", StandardCharsets.UTF_8));
CSVParser parser = new CSVParser(new CommonTokenStream(lexer));
ParseTree tree = parser.start(); //start is the start rule
}
据我了解,TestRig 也是这样做的,那么它怎么会成功,而这个却失败呢?
这是我用来测试的test.csv
:
12;=35.5+6*2;=A1+B1
"szoveg";"masik szoveg";=A2+B2+C1
至于如何调用 TestRig,我使用命令行:
java -cp path\to\antln\jar org.antlr.v4.gui.TestRig CSV start -gui
更新:使用时
java -cp path\to\antln\jar org.antlr.v4.gui.TestRig CSV start -gui test.csv
我也遇到同样的错误。
最佳答案
所以问题是我的语法要求在每行末尾有一个换行符,而 test.csv
在最后一行没有换行符!
在最后一行按回车键并保存后,它现在可以工作了。
解决方案:重写行规则以使最后一个换行符可选或使用java在从文件读取的字符串末尾添加换行符(我选择这个)
if(!fileContent.endsWith("\n")) {
fileContent += "\n";
}
关于java - 使用 TestRig 时 ANTLR 解析有效,但使用 Java 解析时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60247681/
我一直在努力让 ANTLR 工作一整天。我使用过几个网站,包括 antlr.org、大量的 StackOverflow 查询和 Terence Parr 的教科书。我在 Windows 7 机器上(工
我最近开始使用 ANTLR 并发现了 ANTLRWorks IDE。尽管编辑器工作正常,但是,当我运行测试装置时,它似乎卡在编译语法文件上(或者更确切地说,对编译的语法没有任何作用?),无论我给它什么
在 ANTLR 执行后,我将所有生成的 java 文件放在一个目录中,因此我使用了一些选项来生成一个单独的目录和命名空间来存储和编译,以存储所有生成的文件。 这是语法文件: 语法表达式; prog:
我正在尝试使用 antlr4 构建 MT940 解析器。语法很简单,但适用于大多数情况。 现在我想返回我自己的类(class)。这有效: file returns [String myString]
我刚开始使用解析器之类的东西,我正在尝试为我一直在玩的游戏构建我自己的小逻辑语言。我在我的机器上设置了 ANTLR4 并运行了测试代码 - 通过运行 grun Hello r -gui 我能够获得适当
我知道可以通过终端使用 ANTLR 的 TestRig“grun”生成解析树的图形表示: $ alias grun='java org.antlr.v4.runtime.misc.TestRig'
所以,这是我的问题。我已经成功编译了我的 ANTLR4 代码,没有错误,现在我想测试一下。 ANTLR4 文档告诉我,要测试我的应用程序,我应该这样做: java org.antlr.v4.runti
上下文 我正在尝试使用从 plsql antlr4 语法文件生成的 Java 类来解析存储在应用程序配置中的一些 SQL。 在这种情况下,我想知道如何正确使用这些类并利用 grun (org.antl
我正在尝试从此处执行 ANTLRv4 示例 http://www.antlr.org/wiki/display/ANTLR4/Getting+Started+with+ANTLR+v4 . 我已经下载
我正在尝试学习 ANTLR 4,并且我正在按照The Definitive ANTLR 4 Reference 中给出的示例进行操作。遗憾的是,我停留在第一个示例上。 系统: Windows 10 (
我有一个用于评估 csv 文件的语法,并且根据 TestRig 它可以正常工作。生成以下解析树: 但是,如果我在应用程序中使用以下 java 代码,则解析失败并出现错误: line 2:33 no v
Windows 7 上的 Antlr4。 在运行“具有管理权限的 cmd 中带有 -gui 选项的 TestRig”时遇到问题 CLASSPATH 是按照 ANtlr 网站上的建议设置的。 “-tok
我有一个分离的解析器和词法分析器语法,想要运行 org.antlr.v4.gui.TestRig调试/测试我的语法。 我的词法分析器语法开头为: lexer grammar TestLexer; ID
我是一名优秀的程序员,十分优秀!