【发布时间】:2013-06-05 16:29:06
【问题描述】:
我有一个 C 库,我想在不修改库的情况下与 C++ 代码交互。它有一个 yacc 生成的前端,从 yyin 读取,这是一个 FILE *。我想将yyin 设置为从内存中读取的FILE * 的某种仿真。是否有希望以可移植(Linux、Mac、Windows)的方式执行此操作 - 或者是否有其他技巧可以让这样的解析器从内存中读取而不是 FILE *?
【问题讨论】:
-
你的 yacc 前端是否也有 lex/flex 生成的分词器?
-
您是打算根据需要从外部文件中读取数据,还是要将整个字符串放在内存中进行扫描?
-
@BryanOlivier,是的,有一个 lex 分词器。
-
@templatetypedef 我希望能够根据需要向它发送一个字符串。
-
通常将 lex/flex 的输入例程更改为从字符串中读取。您可以使用 Dietrich 提到的
yy_scan_buffer,但我认为它仅限于flex,或者重新定义input宏(old skool)。