在ANTLR 3.4(C-runtime)中,antlr3NewAsciiStringCopyStream发生了什么?

时间:2013-01-21 02:59:08

标签: c antlr antlr3

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的发行说明,但我找不到任何提及。相反,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版本或上面列出的其他功能之一,但是知道什么是好的发生了,以及如何最好地处理这个问题。

1 个答案:

答案 0 :(得分:2)

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

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

对于编码,您使用ANTLR3_ENC_8BIT(或其他方式)

汤姆。