ANTLR 3.2的C运行时发行版曾将函数声明为

ANTLR3_API pANTLR3_INPUT_STREAM antlr3NewAsciiStringCopyStream
    (pANTLR3_UINT8 inString, ANTLR3_UINT32 size, pANTLR3_UINT8 name);

include/antlr3defs.h中。也有一些类似的功能,如antlr3NewAsciiStringInPlaceStreamantlr3NewUCS2StringInPlaceStream等等。
但在3.4版本中,这些功能似乎已经消失了。它们既没有在任何.h文件中声明,也没有编译到库中。
我查看了发行说明中的3.33.4以及the FAQ,但找不到任何关于这个的内容。相反,常见问题解答建议(见下文[2]:
如何从std::string(或char*变量)获取pANTLR3_输入流?
功能
[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版本或上面列出的其他函数之一,但最好知道发生了什么,以及如何最好地处理这个问题。

最佳答案

我最近也遇到了这个问题。看起来,您可以使用以下函数来获得相同的功能:

pANTLR3_INPUT_STREAM antlr3StringStreamNew (pANTLR3_UINT8 data, ANTLR3_UINT32 encoding, ANTLR3_UINT32 size, pANTLR3_UINT8 name);

对于编码,您可以使用ANTLR3_ENC_8BIT(或其他方式)
汤姆。

关于c - ANTLR 3.4(C运行时)中的antlr3NewAsciiStringCopyStream发生了什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14431902/

10-09 07:00