将 yyin 设置为“模拟”FILE*?

Ern*_*ill 3 c c++ yacc stdio

我有一个 C 库,我想在不修改库的情况下与 C++ 代码进行交互。它有一个 yacc 生成的前端,可以读取yyin,这是一个FILE *. 我想设置yyin某种从内存中读取的模拟FILE *。是否有希望以可移植(Linux、Mac、Windows)的方式做到这一点——或者是否有其他技巧可以让这样的解析器从内存而不是读取FILE *

Die*_*Epp 5

您可以fmemopen()在 Linux 上使用。不幸的是,不仅没有可移植的方法来做到这一点,而且甚至fopen()不是真正可移植的(它在 Windows 上已经被破坏了很长时间)。

但是,如果您的分词器是 Flex,则可以使用yy_scan_buffer(). 请参阅Flex 词法分析器的字符串输入