Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ANTLRTest.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
- //
- #include "stdafx.h"
- // ANTLR
- #include "PLSQL3cLexer.h"
- #include "PLSQL3cParser.h"
- #include <set>
- #include <string>
- int _tmain(int argc, _TCHAR* argv[])
- {
- //std::set<std::string> stmts;
- //stmts.insert("select * from a.b;");
- //for (std::set<std::string>::const_iterator it = stmts.begin(); it != stmts.end(); ++it)
- //{
- // parseStatement((*it).c_str());
- //}
- std::string testStr("select * from scott.emp;");
- bool isValid = true;
- pANTLR3_INPUT_STREAM input = NULL;
- pPLSQL3cLexer lxr = NULL;
- pANTLR3_COMMON_TOKEN_STREAM tokens = NULL;
- pPLSQL3cParser parser = NULL;
- ANTLR3_UINT8 statementStringName[] = "statementString";
- input = antlr3NewAsciiStringInPlaceStream(
- (pANTLR3_UINT8)testStr.c_str(),
- (ANTLR3_UINT32)strlen(testStr.c_str()),
- statementStringName
- );
- if (input == NULL)
- {
- return false;
- }
- // set token recognition to be case-insensitive
- input->setUcaseLA(input, ANTLR3_TRUE);
- if (lxr == NULL)
- {
- lxr = PLSQL3cLexerNew(input);
- }
- if (lxr == NULL)
- {
- return false;
- }
- tokens = antlr3CommonTokenStreamSourceNew(
- ANTLR3_SIZE_HINT,
- TOKENSOURCE(lxr)
- );
- if (tokens == NULL)
- {
- return false;
- }
- parser = PLSQL3cParserNew(tokens);
- if (tokens == NULL)
- {
- return false;
- }
- // parse the statements
- PLSQL3cParser_parse_statements_return r = parser->parse_statements(parser);
- // clean up
- parser->free(parser);
- tokens->free(tokens);
- lxr ->free(lxr);
- input ->close(input);
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement