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

编译器/解释器

开发平台:

Others

  1. header {
  2. #include "antlr/TokenStreamSelector.hpp"
  3. }
  4. options {
  5. language="Cpp";
  6. }
  7. class DemoJavaDocLexer extends Lexer;
  8. options {
  9. k=2;
  10. importVocab = Common;
  11. exportVocab = JavaDoc;
  12. filter=true;
  13. }
  14. {
  15. private:
  16. ANTLR_USE_NAMESPACE(antlr)TokenStreamSelector* selector;
  17. public:
  18. void setSelector(ANTLR_USE_NAMESPACE(antlr)TokenStreamSelector* selector_) {
  19. selector=selector_;
  20. }
  21. }
  22. PARAM
  23. : "@param" ' ' ID
  24. ;
  25. EXCEPTION
  26. : "@exception" ' ' ID
  27. ;
  28. protected
  29. ID : ('a'..'z'|'A'..'Z')+
  30. ;
  31. /** This rule simply prevents JAVADOC_CLOSE from being
  32.  *  called for every '*' in a comment.  Calling JAVADOC_CLOSE
  33.  *  will fail for simple '*' and cause an exception, which
  34.  *  is slow.  In other words, the grammar will work without
  35.  *  this rule, but is slower.
  36.  */
  37. STAR: '*' {$setType(ANTLR_USE_NAMESPACE(antlr)Token::SKIP);}
  38. ;
  39. JAVADOC_CLOSE
  40. : "*/" {selector->pop();}
  41. ;
  42. /** Ignore whitespace inside JavaDoc comments */
  43. NEWLINE
  44. : ( "rn"  // Evil DOS
  45. | 'r'    // Macintosh
  46. | 'n'    // Unix (the right way)
  47. )
  48. { newline(); $setType(ANTLR_USE_NAMESPACE(antlr)Token::SKIP); }
  49. ;