ANTLR 3.2 的 C 运行时发行版曾经有一个函数声明为
ANTLR3_API pANTLR3_INPUT_STREAM antlr3NewAsciiStringCopyStream
(pANTLR3_UINT8 inString, ANTLR3_UINT32 size, pANTLR3_UINT8 name);
在include/antlr3defs.h
. 还有一些类似的功能,例如antlr3NewAsciiStringInPlaceStream
,antlr3NewUCS2StringInPlaceStream
等等。
但在 3.4 版本中,这些功能似乎消失了。它们既没有在任何 .h 文件中声明,也没有编译到库中。
我查看了3.3和3.4的发行说明以及常见问题解答,但我找不到任何提及。相反,FAQ 建议(见下文 [2]):
如何从 std::string (或 char* 变量)中获取 pANTLR3_INPUT_STREAM?
职能[1]pANTLR3_INPUT_STREAM [2]antlr3NewAsciiStringCopyStream ([3]pANTLR3_UINT8 inString, [4]ANTLR3_UINT32 size, [5]pANTLR3_UINT8 name)
创建一个 ASCII 字符串流作为 ANTLR 3 的输入,复制输入字符串。
我有使用 ANTLR 3 和此功能的旧代码,我无法轻松切换到 ANTLR 4。我可以继续使用 3.2 版本或上面列出的其他功能之一,但很高兴知道发生了什么,并且如何最好地处理这个问题。