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以及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/