[antlr-interest] calling parser from c++, correct way?
Anders.Karlsson at sybase.com
Anders.Karlsson at sybase.com
Tue Jun 15 02:00:17 PDT 2010
Hi,
Is this the correct way to call the antlr-runtime from C++? (It seems I
have some memory overwrite issues so that is why I am asking)
I have a string with the content I want to parse (e.g. string s = "1+1")
pANTLR3_INPUT_STREAM input = antlr3NewAsciiStringInPlaceStream(
reinterpret_cast<pANTLR3_UINT8>(const_cast<char*>(s.c_str())),
(ANTLR3_UINT64)s.length(), NULL);
pMAExpressionLexer lxr = MAExpressionLexerNew(input);
pANTLR3_COMMON_TOKEN_STREAM tstream =
antlr3CommonTokenStreamSourceNew(ANTLR3_SIZE_HINT, TOKENSOURCE(lxr));
pMAExpressionParser psr = MAExpressionParserNew(tstream);
MAExpressionParser_ma_expression_return r = psr->ma_expression(psr);
// calling the start rule for parsing
when I later free psr it crashes
psr->free(psr); psr = NULL;
Has anybody an idea what I am doing wrong?
Thank you and kind regards,
Anders
More information about the antlr-interest
mailing list