ANTLR4 C++ 生成的词法分析器不接受输入流

ANTLR4 C++ Generated lexer not accepting input stream

提问人:Amukh1 提问时间:10/24/2023 最后编辑:wohlstadAmukh1 更新时间:10/24/2023 访问量:65

问:

我正在使用 Ubuntu。

我包括了使用 -Dlanguage=Cpp 标志时生成的解析器和词法分析器 ANTLR4。我根本没有更改文件,而是从文档中获取了此代码。

这是我的代码:

#include <iostream>

#include "antlr4-runtime.h"
#include "ExprLexer.h"
#include "ExprParser.h"

using namespace antlr4;

int main(int , const char **) {
  // make input stream with string, put input stream into ANTLRInputStream
  ANTLRInputStream input("h");
  ExprLexer lexer(&input);
  return 0;
}

这是我的编译语句:

g++ -std=c++17 *.cpp -o index -I/usr/local/include/antlr4-runtime -L. -lantlr4-runtime

我正在使用 gcc g++、c++17。它编译良好,但是当我运行它时出现错误。

这是我得到的错误。

terminate called after throwing an instance of 'std::system_error'
  what():  Unknown error -1
Aborted (core dumped)

我怀疑它来自 InputStream 错误。

我尝试包装 try catch 语句,但告诉我的只是这可能是系统调用错误。如果这是真的,我不确定如何解决这个问题。

C++ 解析 C++17 antlr antlr4

评论

1赞 tkausl 10/24/2023
I suspect不要怀疑,启动调试器并弄清楚到底是谁抛出这个异常以及为什么。
0赞 Amukh1 10/24/2023
调试器?在哪里可以找到一个?ubuntu 上已经安装了 gnu 吗?
1赞 tkausl 10/24/2023
gdb是 GNU/linux 上一个著名的调试器。
0赞 Amukh1 10/24/2023
是的,谢谢,我查了一个教程
1赞 Amukh1 10/25/2023
@kaby76 9.4.0、c++17

答: 暂无答案