在 lex/flex 代码中使用 STL



我正在尝试使用 lex/flex 和 yacc/bison 实现汇编语言解析器的原型。我想创建一个符号表,它是struct的C++ STL vector。但是,我是关于 lex 的新手,只知道当 lex 生成 C 代码时,我想符号表不能直接在 lex 文件中使用,因为它 C 没有 STL。

有没有办法帮助我从 lex 操作矢量符号表并从 yacc 代码访问它?

谢谢。。

我在构建自定义编译器时遇到了类似的问题。有几种方法:

  • 创建一个单独的 c++ 文件,在 c++ 中实现函数并将其导出为 C:

    外部"C" { void f() { 在此处C++代码 }}

现在你可以从 lex/yacc 生成的代码中调用它。

  • 用 flex/bison 生成 c++ 代码,然后可以直接用语法编写C++代码。

  • 您仍然可以在语法中包含C++代码,但由于许多原因,这不是一个好主意。

flex

和 bison 有C++友好的等价物,flex++ 和 bison++。 这些手册页可能对您有所帮助。

flex++只是输出C++代码的flex。 bison++是一个独立的项目,基于bison,它生成C++代码。

最新更新