1 /* It's an automatically generated code. Do not modify it. */
2 package com.intellij.lexer;
4 import com.intellij.psi.tree.IElementType;
5 import com.intellij.psi.*;
10 private boolean myJdk15Enabled;
11 private DocCommentTokenTypes myTokenTypes;
13 public _JavaDocLexer(boolean isJdk15Enabled, DocCommentTokenTypes tokenTypes) {
14 this((java.io.Reader)null);
15 myJdk15Enabled = isJdk15Enabled;
16 myTokenTypes = tokenTypes;
19 public boolean checkAhead(char c) {
20 if (zzMarkedPos >= zzBuffer.length()) return false;
21 return zzBuffer.charAt(zzMarkedPos) == c;
24 public void goTo(int offset) {
25 zzCurrentPos = zzMarkedPos = zzStartRead = offset;
27 zzAtEOF = offset < zzEndRead;
39 %state COMMENT_DATA_START
42 %state PARAM_TAG_SPACE
44 %state DOC_TAG_VALUE_IN_PAREN
45 %state DOC_TAG_VALUE_IN_LTGT
46 %state INLINE_TAG_NAME
48 WHITE_DOC_SPACE_CHAR=[\ \t\f\n\r]
49 WHITE_DOC_SPACE_NO_LR=[\ \t\f]
52 IDENTIFIER={ALPHA}({ALPHA}|{DIGIT}|[":.-"])*
56 <YYINITIAL> "/**/" { return myTokenTypes.commentEnd(); }
57 <YYINITIAL> "/**" { yybegin(COMMENT_DATA_START); return myTokenTypes.commentStart(); }
58 <COMMENT_DATA_START> {WHITE_DOC_SPACE_CHAR}+ { return myTokenTypes.space(); }
59 <COMMENT_DATA> {WHITE_DOC_SPACE_NO_LR}+ { return myTokenTypes.commentData(); }
60 <COMMENT_DATA> [\n\r]+{WHITE_DOC_SPACE_CHAR}* { return myTokenTypes.space(); }
62 <DOC_TAG_VALUE> {WHITE_DOC_SPACE_CHAR}+ { yybegin(COMMENT_DATA); return myTokenTypes.space(); }
63 <DOC_TAG_VALUE, DOC_TAG_VALUE_IN_PAREN> ({ALPHA}|[_0-9\."$"\[\]])+ { return myTokenTypes.tagValueToken(); }
64 <DOC_TAG_VALUE> [\(] { yybegin(DOC_TAG_VALUE_IN_PAREN); return myTokenTypes.tagValueLParen(); }
65 <DOC_TAG_VALUE_IN_PAREN> [\)] { yybegin(DOC_TAG_VALUE); return myTokenTypes.tagValueRParen(); }
66 <DOC_TAG_VALUE> [#] { return myTokenTypes.tagValueSharp(); }
67 <DOC_TAG_VALUE, DOC_TAG_VALUE_IN_PAREN> [,] { return myTokenTypes.tagValueComma(); }
68 <DOC_TAG_VALUE_IN_PAREN> {WHITE_DOC_SPACE_CHAR}+ { return myTokenTypes.space(); }
70 <INLINE_TAG_NAME, COMMENT_DATA_START> "@param" { yybegin(PARAM_TAG_SPACE); return myTokenTypes.tagName(); }
71 <PARAM_TAG_SPACE> {WHITE_DOC_SPACE_CHAR}+ {yybegin(DOC_TAG_VALUE); return myTokenTypes.space();}
72 <DOC_TAG_VALUE> [\<] { if (myJdk15Enabled) {yybegin(DOC_TAG_VALUE_IN_LTGT); return myTokenTypes.tagValueLT();} else { yybegin(COMMENT_DATA); return myTokenTypes.commentData(); } }
73 <DOC_TAG_VALUE_IN_LTGT> {IDENTIFIER} { return myTokenTypes.tagValueToken(); }
74 <DOC_TAG_VALUE_IN_LTGT> {IDENTIFIER} { return myTokenTypes.tagValueToken(); }
75 <DOC_TAG_VALUE_IN_LTGT> [\>] { yybegin(COMMENT_DATA); return myTokenTypes.tagValueGT(); }
77 <COMMENT_DATA_START, COMMENT_DATA> "{" {
79 yybegin(INLINE_TAG_NAME);
80 return myTokenTypes.inlineTagStart();
83 yybegin(COMMENT_DATA);
84 return myTokenTypes.inlineTagStart();
87 <INLINE_TAG_NAME> "@"{IDENTIFIER} { yybegin(TAG_DOC_SPACE); return myTokenTypes.tagName(); }
88 <COMMENT_DATA_START, COMMENT_DATA, TAG_DOC_SPACE, DOC_TAG_VALUE> "}" { yybegin(COMMENT_DATA); return myTokenTypes.inlineTagEnd(); }
90 <COMMENT_DATA_START, COMMENT_DATA, DOC_TAG_VALUE> . { yybegin(COMMENT_DATA); return myTokenTypes.commentData(); }
91 <COMMENT_DATA_START> "@"{IDENTIFIER} { yybegin(TAG_DOC_SPACE); return myTokenTypes.tagName(); }
92 <TAG_DOC_SPACE> {WHITE_DOC_SPACE_CHAR}+ {
94 if (checkAhead('<') || checkAhead('\"')) yybegin(COMMENT_DATA);
95 else if (checkAhead('\u007b') ) yybegin(COMMENT_DATA); //lbrace - there's some error in JLex when typing lbrace directly
96 else yybegin(DOC_TAG_VALUE);
98 return myTokenTypes.space();
101 "*"+"/" { return myTokenTypes.commentEnd(); }
102 [^] { return myTokenTypes.badCharacter(); }