[antlr-interest] Creation of Lexer and Parser in the loop? Bad idea
Ruslan Zasukhin
sunshine at public.kherson.ua
Mon Oct 18 03:32:45 PDT 2004
Hi All,
I have note that we must write such code in C++
Foo( string SqlQuery )
{
istringstream inp( SqlQuery.c_str() );
Lexer lex( inp );
Parser parser(lex);
..............
}
But if we look into constructor of Lexer we have
VSQL_Lexer::VSQL_Lexer(std::istream& in)
: antlr::CharScanner(new antlr::CharBuffer(in),false)
{
initLiterals();
}
void VSQL_Lexer::initLiterals()
{
literals["words"] = 218;
literals["local"] = 212;
literals["blob"] = 111;
literals["byte"] = 89;
literals["action"] = 227;
literals["nullif"] = 144;
..............
}
---------------------------------------------
I hope it is easy to see that Lexer must built the map for N elements.
For big grammar this is few hundreds of items.
Guys, this is terrible!
For example, if I will do in the loop 100,000 or million SQL commands
INSERT INTO ...
Then I will need million times create/destroy objects of lexer and parer,
And what is the worst I need million (!!!!!!) times create and fill THE SAME
std::map. I believe this is just silly.
And I do not see that ANTLR can allow me create Lexer/Parser only once,
And reuse them for different texts many times.
Or I have miss something ?
I am sure that this DESIGN MISTAKE must be fixed in the ANTLR.
Any comments?
Or advices how to reuse Lexer/Parser in huge loops?
And this is NOT theoretical tasks. SQL Server can get such loops very often.
--
Best regards,
Ruslan Zasukhin [ I feel the need...the need for speed ]
-------------------------------------------------------------
e-mail: ruslan at paradigmasoft.com
web: http://www.paradigmasoft.com
To subscribe to the Valentina mail list go to:
http://lists.macserve.net/mailman/listinfo/valentina
-------------------------------------------------------------
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/antlr-interest/
<*> To unsubscribe from this group, send an email to:
antlr-interest-unsubscribe at yahoogroups.com
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
More information about the antlr-interest
mailing list