Advertisement
Guest User

Untitled

a guest
Sep 9th, 2010
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.62 KB | None | 0 0
  1. // ANTLRTest.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
  2. //
  3.  
  4. #include "stdafx.h"
  5.  
  6. // ANTLR
  7. #include "PLSQL3cLexer.h"
  8. #include "PLSQL3cParser.h"
  9.  
  10. #include <set>
  11. #include <string>
  12.  
  13. int _tmain(int argc, _TCHAR* argv[])
  14. {
  15.  
  16.     //std::set<std::string> stmts;
  17.     //stmts.insert("select * from a.b;");
  18.  
  19.     //for (std::set<std::string>::const_iterator it = stmts.begin(); it != stmts.end(); ++it)
  20.     //{
  21.     //  parseStatement((*it).c_str());
  22.     //}
  23.  
  24.     std::string testStr("select * from scott.emp;");
  25.  
  26.     bool isValid                        = true;
  27.     pANTLR3_INPUT_STREAM        input   = NULL;
  28.     pPLSQL3cLexer               lxr     = NULL;
  29.     pANTLR3_COMMON_TOKEN_STREAM tokens  = NULL;
  30.     pPLSQL3cParser              parser  = NULL;
  31.  
  32.     ANTLR3_UINT8 statementStringName[]  = "statementString";
  33.  
  34.     input = antlr3NewAsciiStringInPlaceStream(
  35.         (pANTLR3_UINT8)testStr.c_str(),  
  36.         (ANTLR3_UINT32)strlen(testStr.c_str()),
  37.         statementStringName
  38.         );
  39.  
  40.     if (input == NULL)
  41.     {
  42.         return false;
  43.     }
  44.  
  45.     // set token recognition to be case-insensitive
  46.     input->setUcaseLA(input, ANTLR3_TRUE);
  47.  
  48.     if (lxr == NULL)
  49.     {
  50.         lxr = PLSQL3cLexerNew(input);
  51.     }
  52.  
  53.     if (lxr == NULL)
  54.     {
  55.         return false;
  56.     }
  57.  
  58.     tokens = antlr3CommonTokenStreamSourceNew(
  59.         ANTLR3_SIZE_HINT,
  60.         TOKENSOURCE(lxr)
  61.         );
  62.  
  63.     if (tokens == NULL)
  64.     {
  65.         return false;
  66.     }
  67.  
  68.     parser = PLSQL3cParserNew(tokens);
  69.  
  70.     if (tokens == NULL)
  71.     {
  72.         return false;
  73.     }
  74.  
  75.     // parse the statements
  76.     PLSQL3cParser_parse_statements_return r = parser->parse_statements(parser);
  77.  
  78.     // clean up
  79.     parser->free(parser);
  80.     tokens->free(tokens);
  81.     lxr   ->free(lxr);
  82.     input ->close(input);
  83.  
  84.     return true;
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement