Main.cpp
上传用户:afrynkmhm
上传日期:2007-01-06
资源大小:1262k
文件大小:1k
源码类别:

编译器/解释器

开发平台:

Others

  1. #include "DemoJavaLexer.hpp"
  2. #include "DemoJavaDocLexer.hpp"
  3. #include "DemoJavaParser.hpp"
  4. #include "antlr/TokenStreamSelector.hpp"
  5. #include <iostream>
  6. int main()
  7. {
  8. ANTLR_USING_NAMESPACE(std)
  9. ANTLR_USING_NAMESPACE(antlr)
  10. // Define a selector that can switch from java to javadoc
  11. TokenStreamSelector selector;
  12. try {
  13. // attach java lexer to the input stream, which also creates a shared input state object
  14. DemoJavaLexer main(cin);
  15. main.setSelector(&selector);
  16. // create javadoc lexer; attach to same shared input state as java lexer
  17. DemoJavaDocLexer doclexer(main.getInputState());
  18. doclexer.setSelector(&selector);
  19. // notify selector about various lexers; name them for convenient reference later
  20. selector.addInputStream(&main, "main");
  21. selector.addInputStream(&doclexer, "doclexer");
  22. selector.select("main"); // start with main java lexer
  23. // Create parser attached to selector
  24. DemoJavaParser parser(selector);
  25. // Pull in one or more int decls with optional javadoc
  26. parser.input();
  27. // spin thru all tokens generated via the SELECTOR.
  28. RefToken t;
  29. while ( (t=selector.nextToken())->getType()!=Token::EOF_TYPE ) {
  30. cout << t->toString() << endl;
  31. }
  32. }
  33. catch(exception& e) {
  34. cerr << "exception: " << e.what() << endl;
  35. }
  36. }