Issue #49. Added ANTLR4 grammar for parsing Javadoc comments.
This commit is contained in:
parent
266ec7fc97
commit
185e730e93
|
|
@ -160,6 +160,11 @@
|
|||
<artifactId>antlr</artifactId>
|
||||
<version>2.7.7</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.antlr</groupId>
|
||||
<artifactId>antlr4-runtime</artifactId>
|
||||
<version>4.3</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-beanutils</groupId>
|
||||
<artifactId>commons-beanutils-core</artifactId>
|
||||
|
|
@ -287,7 +292,7 @@
|
|||
</executions>
|
||||
</plugin>
|
||||
|
||||
<!-- Generate the grammar -->
|
||||
<!-- Generate the ANTLRv2 grammar -->
|
||||
<plugin>
|
||||
<groupId>org.codehaus.mojo</groupId>
|
||||
<artifactId>antlr-maven-plugin</artifactId>
|
||||
|
|
@ -304,6 +309,25 @@
|
|||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
<!-- Generate the ANTLRv4 grammar -->
|
||||
<plugin>
|
||||
<groupId>org.antlr</groupId>
|
||||
<artifactId>antlr4-maven-plugin</artifactId>
|
||||
<version>4.3</version>
|
||||
<configuration>
|
||||
<visitor>true</visitor>
|
||||
<sourceDirectory>${basedir}/src/main/resources/com/puppycrawl/tools/checkstyle/grammars/javadoc</sourceDirectory>
|
||||
<outputDirectory>${project.build.directory}/generated-sources/antlr/com/puppycrawl/tools/checkstyle/grammars/javadoc</outputDirectory>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
<goal>antlr4</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.codehaus.mojo</groupId>
|
||||
|
|
@ -319,14 +343,15 @@
|
|||
<configuration>
|
||||
<sources>
|
||||
<source>${project.build.directory}/generated-sources/antlr/</source>
|
||||
<source>${project.build.directory}/generated-sources/antlr/javadoc</source>
|
||||
</sources>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
|
||||
<!-- Generate checkstylecompilation.properties -->
|
||||
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-antrun-plugin</artifactId>
|
||||
|
|
@ -637,7 +662,7 @@
|
|||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-checkstyle-plugin</artifactId>
|
||||
<configuration>
|
||||
<configLocation>checkstyle_checks.xml</configLocation>
|
||||
<configLocation>${project.build.directory}/checkstyle_checks.xml</configLocation>
|
||||
<suppressionsFileExpression>checkstyle.suppressions.file</suppressionsFileExpression>
|
||||
<suppressionsLocation>suppressions.xml</suppressionsLocation>
|
||||
<headerLocation>java.header</headerLocation>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,264 @@
|
|||
////////////////////////////////////////////////////////////////////////////////
|
||||
// checkstyle: Checks Java source code for adherence to a set of rules.
|
||||
// Copyright (C) 2001-2014 Oliver Burn
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2.1 of the License, or (at your option) any later version.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
package com.puppycrawl.tools.checkstyle.api;
|
||||
|
||||
import com.puppycrawl.tools.checkstyle.grammars.javadoc.JavadocParser;
|
||||
|
||||
public final class JavadocTokenTypes
|
||||
{
|
||||
private static final int mRuleTypesOffset = 10000;
|
||||
|
||||
// root node
|
||||
public static final int JAVADOC = JavadocParser.RULE_javadoc + mRuleTypesOffset;
|
||||
|
||||
//--------------------------------------------------------------------------------------------//
|
||||
//------------------ JAVADOC TAGS --------------------------------------------//
|
||||
//--------------------------------------------------------------------------------------------//
|
||||
|
||||
public static final int JAVADOC_TAG = JavadocParser.RULE_javadocTag + mRuleTypesOffset;
|
||||
public static final int JAVADOC_INLINE_TAG = JavadocParser.RULE_javadocInlineTag + mRuleTypesOffset;
|
||||
|
||||
public static final int RETURN_LITERAL = JavadocParser.RETURN_LITERAL;
|
||||
public static final int DEPRECATED_LITERAL = JavadocParser.DEPRECATED_LITERAL;
|
||||
public static final int SINCE_LITERAL = JavadocParser.SINCE_LITERAL;
|
||||
public static final int SERIAL_DATA_LITERAL = JavadocParser.SERIAL_DATA_LITERAL;
|
||||
public static final int SERIAL_FIELD_LITERAL = JavadocParser.SERIAL_FIELD_LITERAL;
|
||||
public static final int PARAM_LITERAL = JavadocParser.PARAM_LITERAL;
|
||||
public static final int SEE_LITERAL = JavadocParser.SEE_LITERAL;
|
||||
public static final int SERIAL_LITERAL = JavadocParser.SERIAL_LITERAL;
|
||||
public static final int VERSION_LITERAL = JavadocParser.VERSION_LITERAL;
|
||||
public static final int CUSTOM_NAME = JavadocParser.CUSTOM_NAME;
|
||||
public static final int EXCEPTION_LITERAL = JavadocParser.EXCEPTION_LITERAL;
|
||||
public static final int THROWS_LITERAL = JavadocParser.THROWS_LITERAL;
|
||||
public static final int AUTHOR_LITERAL = JavadocParser.AUTHOR_LITERAL;
|
||||
|
||||
public static final int JAVADOC_INLINE_TAG_START = JavadocParser.JAVADOC_INLINE_TAG_START; // '{'
|
||||
public static final int JAVADOC_INLINE_TAG_END = JavadocParser.JAVADOC_INLINE_TAG_END; // '}'
|
||||
|
||||
public static final int CODE_LITERAL = JavadocParser.CODE_LITERAL;
|
||||
public static final int DOC_ROOT_LITERAL = JavadocParser.DOC_ROOT_LITERAL;
|
||||
public static final int LINK_LITERAL = JavadocParser.LINK_LITERAL;
|
||||
public static final int INHERIT_DOC_LITERAL = JavadocParser.INHERIT_DOC_LITERAL;
|
||||
public static final int LINKPLAIN_LITERAL = JavadocParser.LINKPLAIN_LITERAL;
|
||||
public static final int LITERAL_LITERAL = JavadocParser.LITERAL_LITERAL; // @literal
|
||||
public static final int VALUE_LITERAL = JavadocParser.VALUE_LITERAL;
|
||||
|
||||
// @see and {@link} argument
|
||||
public static final int REFERENCE = JavadocParser.RULE_reference + mRuleTypesOffset;
|
||||
|
||||
// @see and {@link} reference components
|
||||
public static final int PACKAGE = JavadocParser.PACKAGE;
|
||||
public static final int CLASS = JavadocParser.CLASS;
|
||||
public static final int DOT = JavadocParser.DOT;
|
||||
public static final int HASH = JavadocParser.HASH; // #
|
||||
public static final int MEMBER = JavadocParser.MEMBER;
|
||||
public static final int PARAMETERS = JavadocParser.RULE_parameters + mRuleTypesOffset; // parent node for LEFT_BRACE, RIGHT_BRACE, ARGUMENT, COMMA nodes
|
||||
public static final int LEFT_BRACE = JavadocParser.LEFT_BRACE;
|
||||
public static final int RIGHT_BRACE = JavadocParser.RIGHT_BRACE;
|
||||
public static final int ARGUMENT = JavadocParser.ARGUMENT;
|
||||
public static final int COMMA = JavadocParser.COMMA;
|
||||
|
||||
// @see and {@link} argument
|
||||
public static final int STRING = JavadocParser.STRING; // "text"
|
||||
|
||||
// description argument for many Javadoc tags
|
||||
public static final int DESCRIPTION = JavadocParser.RULE_description + mRuleTypesOffset;
|
||||
|
||||
// First argument of @exception: @exception class-name description
|
||||
public static final int CLASS_NAME = JavadocParser.CLASS_NAME;
|
||||
|
||||
// First argument of @param: @param parameter-name description
|
||||
public static final int PARAMETER_NAME = JavadocParser.PARAMETER_NAME;
|
||||
|
||||
// @serial and @serialField arguments
|
||||
public static final int LITERAL_EXCLUDE = JavadocParser.LITERAL_EXCLUDE;
|
||||
public static final int LITERAL_INCLUDE = JavadocParser.LITERAL_INCLUDE;
|
||||
public static final int FIELD_NAME = JavadocParser.FIELD_NAME;
|
||||
public static final int FIELD_TYPE = JavadocParser.FIELD_TYPE;
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------//
|
||||
//------------------ HTML TAGS -----------------------------------------------//
|
||||
//--------------------------------------------------------------------------------------------//
|
||||
|
||||
public static final int HTML_ELEMENT = JavadocParser.RULE_htmlElement + mRuleTypesOffset; // parent node for all html tags
|
||||
public static final int HTML_ELEMENT_OPEN = JavadocParser.RULE_htmlElementOpen + mRuleTypesOffset + mRuleTypesOffset; // <XXX>
|
||||
public static final int HTML_ELEMENT_CLOSE = JavadocParser.RULE_htmlElementClose + mRuleTypesOffset; // </XXX>
|
||||
|
||||
public static final int HTML_TAG = JavadocParser.RULE_htmlTag + mRuleTypesOffset; // non-special HTML tag
|
||||
public static final int HTML_TAG_NAME = JavadocParser.HTML_TAG_NAME; // identifier inside HTML tag: tag name or attribute name
|
||||
public static final int ATTRIBUTE = JavadocParser.RULE_attribute + mRuleTypesOffset + mRuleTypesOffset; // html tag attribute. Parent node for: HTML_TAG_IDENT, EQUALS, ATTR_VALUE
|
||||
|
||||
// HTML tag components
|
||||
public static final int OPEN = JavadocParser.OPEN; // '<'
|
||||
public static final int SLASH = JavadocParser.SLASH; // '/'
|
||||
public static final int CLOSE = JavadocParser.CLOSE; // '>'
|
||||
public static final int SLASH_CLOSE = JavadocParser.SLASH_CLOSE; // '/>'
|
||||
public static final int EQUALS = JavadocParser.EQUALS; // '='
|
||||
public static final int ATTR_VALUE = JavadocParser.ATTR_VALUE; // attribute value
|
||||
|
||||
/////////////////////// HTML TAGS WITH OPTIONAL CLOSE TAG /////////////////////////////////////
|
||||
public static final int PARAGRAPH = JavadocParser.RULE_paragraph + mRuleTypesOffset;
|
||||
public static final int P_TAG_OPEN = JavadocParser.RULE_pTagOpen + mRuleTypesOffset;
|
||||
public static final int P_TAG_CLOSE = JavadocParser.RULE_pTagClose + mRuleTypesOffset;
|
||||
public static final int P_HTML_TAG_NAME = JavadocParser.P_HTML_TAG_NAME;
|
||||
|
||||
public static final int LI = JavadocParser.RULE_li + mRuleTypesOffset;
|
||||
public static final int LI_TAG_OPEN = JavadocParser.RULE_liTagOpen + mRuleTypesOffset;
|
||||
public static final int LI_TAG_CLOSE = JavadocParser.RULE_liTagClose + mRuleTypesOffset;
|
||||
public static final int LI_HTML_TAG_NAME = JavadocParser.LI_HTML_TAG_NAME;
|
||||
|
||||
public static final int TR = JavadocParser.RULE_tr + mRuleTypesOffset;
|
||||
public static final int TR_TAG_OPEN = JavadocParser.RULE_trTagOpen + mRuleTypesOffset;
|
||||
public static final int TR_TAG_CLOSE = JavadocParser.RULE_trTagClose + mRuleTypesOffset;
|
||||
public static final int TR_HTML_TAG_NAME = JavadocParser.TR_HTML_TAG_NAME;
|
||||
|
||||
public static final int TD = JavadocParser.RULE_td + mRuleTypesOffset;
|
||||
public static final int TD_TAG_OPEN = JavadocParser.RULE_tdTagOpen + mRuleTypesOffset;
|
||||
public static final int TD_TAG_CLOSE = JavadocParser.RULE_tdTagClose + mRuleTypesOffset;
|
||||
public static final int TD_HTML_TAG_NAME = JavadocParser.TD_HTML_TAG_NAME;
|
||||
|
||||
public static final int TH = JavadocParser.RULE_th + mRuleTypesOffset;
|
||||
public static final int TH_TAG_OPEN = JavadocParser.RULE_thTagOpen + mRuleTypesOffset;
|
||||
public static final int TH_TAG_CLOSE = JavadocParser.RULE_thTagClose + mRuleTypesOffset;
|
||||
public static final int TH_HTML_TAG_NAME = JavadocParser.TH_HTML_TAG_NAME;
|
||||
|
||||
public static final int BODY = JavadocParser.RULE_body + mRuleTypesOffset;
|
||||
public static final int BODY_TAG_OPEN = JavadocParser.RULE_bodyTagOpen + mRuleTypesOffset;
|
||||
public static final int BODY_TAG_CLOSE = JavadocParser.RULE_bodyTagClose + mRuleTypesOffset;
|
||||
public static final int BODY_HTML_TAG_NAME = JavadocParser.BODY_HTML_TAG_NAME;
|
||||
|
||||
public static final int COLGROUP = JavadocParser.RULE_colgroup + mRuleTypesOffset;
|
||||
public static final int COLGROUP_TAG_OPEN = JavadocParser.RULE_colgroupTagOpen + mRuleTypesOffset;
|
||||
public static final int COLGROUP_TAG_CLOSE = JavadocParser.RULE_colgroupTagClose + mRuleTypesOffset;
|
||||
public static final int COLGROUP_HTML_TAG_NAME = JavadocParser.COLGROUP_HTML_TAG_NAME;
|
||||
|
||||
public static final int DD = JavadocParser.RULE_dd + mRuleTypesOffset;
|
||||
public static final int DD_TAG_OPEN = JavadocParser.RULE_ddTagOpen + mRuleTypesOffset;
|
||||
public static final int DD_TAG_CLOSE = JavadocParser.RULE_ddTagClose + mRuleTypesOffset;
|
||||
public static final int DD_HTML_TAG_NAME = JavadocParser.DD_HTML_TAG_NAME;
|
||||
|
||||
public static final int DT = JavadocParser.RULE_dt + mRuleTypesOffset;
|
||||
public static final int DT_TAG_OPEN = JavadocParser.RULE_dtTagOpen + mRuleTypesOffset;
|
||||
public static final int DT_TAG_CLOSE = JavadocParser.RULE_dtTagClose + mRuleTypesOffset;
|
||||
public static final int DT_HTML_TAG_NAME = JavadocParser.DT_HTML_TAG_NAME;
|
||||
|
||||
public static final int HEAD = JavadocParser.RULE_head + mRuleTypesOffset;
|
||||
public static final int HEAD_TAG_OPEN = JavadocParser.RULE_headTagOpen + mRuleTypesOffset;
|
||||
public static final int HEAD_TAG_CLOSE = JavadocParser.RULE_headTagClose + mRuleTypesOffset;
|
||||
public static final int HEAD_HTML_TAG_NAME = JavadocParser.HEAD_HTML_TAG_NAME;
|
||||
|
||||
public static final int HTML = JavadocParser.RULE_html + mRuleTypesOffset;
|
||||
public static final int HTML_TAG_OPEN = JavadocParser.RULE_htmlTagOpen + mRuleTypesOffset;
|
||||
public static final int HTML_TAG_CLOSE = JavadocParser.RULE_htmlTagClose + mRuleTypesOffset;
|
||||
public static final int HTML_HTML_TAG_NAME = JavadocParser.HTML_HTML_TAG_NAME;
|
||||
|
||||
public static final int OPTION = JavadocParser.RULE_option + mRuleTypesOffset;
|
||||
public static final int OPTION_TAG_OPEN = JavadocParser.RULE_optionTagOpen + mRuleTypesOffset;
|
||||
public static final int OPTION_TAG_CLOSE = JavadocParser.RULE_optionTagClose + mRuleTypesOffset;
|
||||
public static final int OPTION_HTML_TAG_NAME = JavadocParser.OPTION_HTML_TAG_NAME;
|
||||
|
||||
public static final int TBODY = JavadocParser.RULE_tbody + mRuleTypesOffset;
|
||||
public static final int TBODY_TAG_OPEN = JavadocParser.RULE_tbodyTagOpen + mRuleTypesOffset;
|
||||
public static final int TBODY_TAG_CLOSE = JavadocParser.RULE_tbodyTagClose + mRuleTypesOffset;
|
||||
public static final int TBODY_HTML_TAG_NAME = JavadocParser.TBODY_HTML_TAG_NAME;
|
||||
|
||||
public static final int TFOOT = JavadocParser.RULE_tfoot + mRuleTypesOffset;
|
||||
public static final int TFOOT_TAG_OPEN = JavadocParser.RULE_tfootTagOpen + mRuleTypesOffset;
|
||||
public static final int TFOOT_TAG_CLOSE = JavadocParser.RULE_tfootTagClose + mRuleTypesOffset;
|
||||
public static final int TFOOT_HTML_TAG_NAME = JavadocParser.TFOOT_HTML_TAG_NAME;
|
||||
|
||||
public static final int THEAD = JavadocParser.RULE_thead + mRuleTypesOffset;
|
||||
public static final int THEAD_TAG_OPEN = JavadocParser.RULE_theadTagOpen + mRuleTypesOffset;
|
||||
public static final int THEAD_TAG_CLOSE = JavadocParser.RULE_theadTagClose + mRuleTypesOffset;
|
||||
public static final int THEAD_HTML_TAG_NAME = JavadocParser.THEAD_HTML_TAG_NAME;
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/////////////////////// SINGLETON HTML TAGS //////////////////////////////////////////////////
|
||||
public static final int SINGLETON_ELEMENT = JavadocParser.RULE_singletonElement + mRuleTypesOffset; // parent node for all singleton tags
|
||||
|
||||
public static final int SINGLETON_TAG = JavadocParser.RULE_singletonTag + mRuleTypesOffset; // non-special singleton tag
|
||||
|
||||
public static final int AREA_TAG = JavadocParser.RULE_areaTag + mRuleTypesOffset;
|
||||
public static final int AREA_HTML_TAG_NAME = JavadocParser.AREA_HTML_TAG_NAME;
|
||||
|
||||
public static final int BASE_TAG = JavadocParser.RULE_baseTag + mRuleTypesOffset;
|
||||
public static final int BASE_HTML_TAG_NAME = JavadocParser.BASE_HTML_TAG_NAME;
|
||||
|
||||
public static final int BASEFRONT_TAG = JavadocParser.RULE_basefrontTag + mRuleTypesOffset;
|
||||
public static final int BASEFRONT_HTML_TAG_NAME = JavadocParser.BASEFRONT_HTML_TAG_NAME;
|
||||
|
||||
public static final int BR_TAG = JavadocParser.RULE_brTag + mRuleTypesOffset;
|
||||
public static final int BR_HTML_TAG_NAME = JavadocParser.BR_HTML_TAG_NAME;
|
||||
|
||||
public static final int COL_TAG = JavadocParser.RULE_colTag + mRuleTypesOffset;
|
||||
public static final int COL_HTML_TAG_NAME = JavadocParser.COL_HTML_TAG_NAME;
|
||||
|
||||
public static final int FRAME_TAG = JavadocParser.RULE_frameTag + mRuleTypesOffset;
|
||||
public static final int FRAME_HTML_TAG_NAME = JavadocParser.FRAME_HTML_TAG_NAME;
|
||||
|
||||
public static final int HR_TAG = JavadocParser.RULE_hrTag + mRuleTypesOffset;
|
||||
public static final int HR_HTML_TAG_NAME = JavadocParser.HR_HTML_TAG_NAME;
|
||||
|
||||
public static final int IMG_TAG = JavadocParser.RULE_imgTag + mRuleTypesOffset;
|
||||
public static final int IMG_HTML_TAG_NAME = JavadocParser.IMG_HTML_TAG_NAME;
|
||||
|
||||
public static final int INPUT_TAG = JavadocParser.RULE_inputTag + mRuleTypesOffset;
|
||||
public static final int INPUT_HTML_TAG_NAME = JavadocParser.INPUT_HTML_TAG_NAME;
|
||||
|
||||
public static final int ISINDEX_TAG = JavadocParser.RULE_isindexTag + mRuleTypesOffset;
|
||||
public static final int ISINDEX_HTML_TAG_NAME = JavadocParser.ISINDEX_HTML_TAG_NAME;
|
||||
|
||||
public static final int LINK_TAG = JavadocParser.RULE_linkTag + mRuleTypesOffset;
|
||||
public static final int LINK_HTML_TAG_NAME = JavadocParser.LINK_HTML_TAG_NAME;
|
||||
|
||||
public static final int META_TAG = JavadocParser.RULE_metaTag + mRuleTypesOffset;
|
||||
public static final int META_HTML_TAG_NAME = JavadocParser.META_HTML_TAG_NAME;
|
||||
|
||||
public static final int PARAM_TAG = JavadocParser.RULE_paramTag + mRuleTypesOffset;
|
||||
public static final int PARAM_HTML_TAG_NAME = JavadocParser.PARAM_HTML_TAG_NAME;
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// HTML comments
|
||||
public static final int HTML_COMMENT = JavadocParser.RULE_htmlComment + mRuleTypesOffset + mRuleTypesOffset;
|
||||
public static final int HTML_COMMENT_START = JavadocParser.HTML_COMMENT_START; // <!---
|
||||
public static final int HTML_COMMENT_END = JavadocParser.HTML_COMMENT_END; // -->
|
||||
|
||||
public static final int CDATA = JavadocParser.CDATA; // '<![CDATA[...]]>'
|
||||
|
||||
//--------------------------------------------------------------------------------------------//
|
||||
//------------------ OTHER ---------------------------------------------------//
|
||||
//--------------------------------------------------------------------------------------------//
|
||||
|
||||
public static final int LEADING_ASTERISK = JavadocParser.LEADING_ASTERISK;
|
||||
public static final int NEWLINE = JavadocParser.NEWLINE; // \n
|
||||
public static final int CHAR = JavadocParser.CHAR; // any symbol
|
||||
public static final int WS = JavadocParser.WS; // whitespace, \t
|
||||
public static final int TEXT = JavadocParser.RULE_text + mRuleTypesOffset; // CHAR and WS sequence
|
||||
|
||||
public static final int EOF = JavadocParser.EOF; // end of file
|
||||
|
||||
|
||||
|
||||
private JavadocTokenTypes()
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,404 @@
|
|||
lexer grammar JavadocLexer;
|
||||
|
||||
@lexer::header {
|
||||
package com.puppycrawl.tools.checkstyle.grammars.javadoc;
|
||||
|
||||
import java.util.*;
|
||||
}
|
||||
|
||||
@lexer::members {
|
||||
boolean recognizeXmlTags = true;
|
||||
boolean isJavadocTagAvailable = true;
|
||||
int insideJavadocInlineTag = 0;
|
||||
boolean insidePreTag = false;
|
||||
boolean referenceCatched = false;
|
||||
|
||||
boolean insideReferenceArguments = false;
|
||||
|
||||
boolean htmlTagNameCatched = false;
|
||||
boolean attributeCatched = false;
|
||||
|
||||
int previousTokenType = 0;
|
||||
int previousToPreviousTokenType = 0;
|
||||
|
||||
public void emit(Token token) {
|
||||
super.emit(token);
|
||||
previousToPreviousTokenType = previousTokenType;
|
||||
previousTokenType = token.getType();
|
||||
|
||||
if (previousTokenType == NEWLINE) {
|
||||
isJavadocTagAvailable = true;
|
||||
} else if (previousTokenType != WS && previousTokenType != LEADING_ASTERISK) {
|
||||
isJavadocTagAvailable = false;
|
||||
}
|
||||
}
|
||||
|
||||
public void skipCurrentTokenConsuming() {
|
||||
_input.seek(_input.index() - 1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
LEADING_ASTERISK : ( (' '|'\t') {_tokenStartCharPositionInLine == 0}? ) (' '|'\t')* '*'
|
||||
| '*' {_tokenStartCharPositionInLine == 0}?
|
||||
;
|
||||
|
||||
HTML_COMMENT_START : '<!--' {recognizeXmlTags}?
|
||||
-> pushMode(htmlComment)
|
||||
;
|
||||
CDATA : '<![CDATA[' .*? ']]>' {recognizeXmlTags}?;
|
||||
|
||||
WS : (' '|'\t')+ ;
|
||||
|
||||
OPEN: '<' {recognizeXmlTags && (Character.isLetter(_input.LA(1)) || _input.LA(1) == '/')}?
|
||||
-> pushMode(xmlTagDefinition)
|
||||
;
|
||||
|
||||
//PRE_TAG_OPEN: ('<pre>' | '<PRE>') {!insidePreTag}?
|
||||
// {insidePreTag=true; recognizeXmlTags=false;}
|
||||
// ;
|
||||
//PRE_TAG_CLOSE: ('</pre>' | '</PRE>') {insidePreTag}?
|
||||
// {insidePreTag=false; recognizeXmlTags=true;}
|
||||
// ;
|
||||
|
||||
NEWLINE: '\n';
|
||||
|
||||
AUTHOR_LITERAL : '@author' {isJavadocTagAvailable}?;
|
||||
DEPRECATED_LITERAL : '@deprecated' {isJavadocTagAvailable}?;
|
||||
EXCEPTION_LITERAL : '@exception' {isJavadocTagAvailable}? -> pushMode(exception);
|
||||
PARAM_LITERAL : '@param' {isJavadocTagAvailable}? -> pushMode(param);
|
||||
RETURN_LITERAL : '@return' {isJavadocTagAvailable}?;
|
||||
SEE_LITERAL : '@see' {isJavadocTagAvailable}? -> pushMode(seeLink);
|
||||
SERIAL_LITERAL : '@serial' {isJavadocTagAvailable}?;
|
||||
SERIAL_FIELD_LITERAL : '@serialField' {isJavadocTagAvailable}? -> pushMode(serialField);
|
||||
SERIAL_DATA_LITERAL : '@serialData' {isJavadocTagAvailable}?;
|
||||
SINCE_LITERAL : '@since' {isJavadocTagAvailable}?;
|
||||
THROWS_LITERAL : '@throws' {isJavadocTagAvailable}? -> pushMode(exception);
|
||||
VERSION_LITERAL : '@version' {isJavadocTagAvailable}?;
|
||||
|
||||
JAVADOC_INLINE_TAG_START: '{' {_input.LA(1) == '@'}? {insideJavadocInlineTag++;} -> pushMode(javadocInlineTag);
|
||||
|
||||
JAVADOC_INLINE_TAG_END: '}' {insideJavadocInlineTag>0}?
|
||||
{insideJavadocInlineTag--; recognizeXmlTags=true;}
|
||||
;
|
||||
|
||||
CUSTOM_NAME: '@' [a-zA-Z0-9]+ {isJavadocTagAvailable}?;
|
||||
|
||||
LITERAL_INCLUDE: 'include' {previousToPreviousTokenType==SERIAL_LITERAL}?;
|
||||
LITERAL_EXCLUDE: 'exclude' {previousToPreviousTokenType==SERIAL_LITERAL}?;
|
||||
|
||||
CHAR : . ;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////// JAVADOC TAG MODES ///////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////////////
|
||||
mode param;
|
||||
Space0: WS -> type(WS);
|
||||
PARAMETER_NAME: [a-zA-Z0-9<>_-]+ -> mode(DEFAULT_MODE);
|
||||
Char1: .
|
||||
{
|
||||
skipCurrentTokenConsuming();
|
||||
} -> skip, mode(DEFAULT_MODE);
|
||||
//////////////////////////////////////////////////////////////////////////////////////
|
||||
mode seeLink;
|
||||
Space1: WS
|
||||
{
|
||||
if (referenceCatched) {
|
||||
_mode = DEFAULT_MODE;
|
||||
referenceCatched = false;
|
||||
}
|
||||
}
|
||||
-> type(WS);
|
||||
Newline5: NEWLINE
|
||||
{
|
||||
if (referenceCatched) {
|
||||
_mode = DEFAULT_MODE;
|
||||
referenceCatched = false;
|
||||
}
|
||||
}
|
||||
-> type(NEWLINE);
|
||||
Leading_asterisk3: LEADING_ASTERISK -> type(LEADING_ASTERISK);
|
||||
XmlTagOpen1: '<' -> type(OPEN), pushMode(xmlTagDefinition);
|
||||
STRING: '"' .*? '"' {referenceCatched = false;} -> mode(DEFAULT_MODE);
|
||||
PACKAGE: [a-z] ([a-z_-] | '.')+ [a-z_-] {referenceCatched = true;};
|
||||
DOT: '.';
|
||||
HASH: '#' {referenceCatched = true;} -> mode(classMemeber);
|
||||
CLASS: [A-Z] [a-zA-Z0-9_-]* {referenceCatched = true;};
|
||||
End20: JAVADOC_INLINE_TAG_END
|
||||
{
|
||||
insideJavadocInlineTag--;
|
||||
recognizeXmlTags=true;
|
||||
referenceCatched = false;
|
||||
}
|
||||
-> type(JAVADOC_INLINE_TAG_END), mode(DEFAULT_MODE)
|
||||
;
|
||||
// exit from 'seeLink' mode without consuming current character
|
||||
Char2: .
|
||||
{
|
||||
skipCurrentTokenConsuming();
|
||||
referenceCatched = false;
|
||||
} -> skip, mode(DEFAULT_MODE);
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////
|
||||
mode classMemeber;
|
||||
MEMBER: [a-zA-Z0-9_-]+ {!insideReferenceArguments}?;
|
||||
LEFT_BRACE: '(' {insideReferenceArguments=true;};
|
||||
RIGHT_BRACE: ')' {insideReferenceArguments=false;};
|
||||
ARGUMENT: ([a-zA-Z0-9_-] | '.' | '[' | ']')+ {insideReferenceArguments}?;
|
||||
COMMA: ',' {insideReferenceArguments}?;
|
||||
Leading_asterisk6: LEADING_ASTERISK
|
||||
{
|
||||
if (!insideReferenceArguments) {
|
||||
_mode = DEFAULT_MODE;
|
||||
insideReferenceArguments = false;
|
||||
referenceCatched = false;
|
||||
}
|
||||
} -> type(LEADING_ASTERISK);
|
||||
Newline7: NEWLINE
|
||||
{
|
||||
if (!insideReferenceArguments) {
|
||||
_mode = DEFAULT_MODE;
|
||||
insideReferenceArguments = false;
|
||||
referenceCatched = false;
|
||||
}
|
||||
} -> type(NEWLINE);
|
||||
Space20: WS
|
||||
{
|
||||
if (!insideReferenceArguments) {
|
||||
_mode = DEFAULT_MODE;
|
||||
insideReferenceArguments = false;
|
||||
referenceCatched = false;
|
||||
}
|
||||
} -> type(WS);
|
||||
End2: JAVADOC_INLINE_TAG_END
|
||||
{
|
||||
insideJavadocInlineTag--;
|
||||
recognizeXmlTags=true;
|
||||
referenceCatched = false;
|
||||
insideReferenceArguments = false;
|
||||
}
|
||||
-> type(JAVADOC_INLINE_TAG_END), mode(DEFAULT_MODE)
|
||||
;
|
||||
Char20: .
|
||||
{
|
||||
skipCurrentTokenConsuming();
|
||||
referenceCatched = false;
|
||||
insideReferenceArguments = false;
|
||||
} -> skip, mode(DEFAULT_MODE);
|
||||
//////////////////////////////////////////////////////////////////////////////////////
|
||||
mode serialField;
|
||||
Space2: WS -> type(WS);
|
||||
FIELD_NAME: [a-zA-Z0-9_-]+ -> mode(serialFieldFieldType);
|
||||
Char3: .
|
||||
{
|
||||
skipCurrentTokenConsuming();
|
||||
referenceCatched = false;
|
||||
|
||||
} -> skip, mode(DEFAULT_MODE);
|
||||
//////////////////////////////////////////////////////////////////////////////////////
|
||||
mode serialFieldFieldType;
|
||||
Space3: WS -> type(WS);
|
||||
FIELD_TYPE: [a-zA-Z0-9_-]+ -> mode(DEFAULT_MODE);
|
||||
Char4: .
|
||||
{
|
||||
skipCurrentTokenConsuming();
|
||||
} -> skip, mode(DEFAULT_MODE);
|
||||
//////////////////////////////////////////////////////////////////////////////////////
|
||||
mode exception;
|
||||
Space4: WS -> type(WS);
|
||||
CLASS_NAME: ([a-zA-Z0-9_-] | '.')+ -> mode(DEFAULT_MODE);
|
||||
Char5: .
|
||||
{
|
||||
skipCurrentTokenConsuming();
|
||||
} -> skip, mode(DEFAULT_MODE);
|
||||
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////// JAVADOC INLINE TAG MODES ////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////////////
|
||||
mode javadocInlineTag;
|
||||
CODE_LITERAL : '@code' {recognizeXmlTags=false;} -> mode(code);
|
||||
DOC_ROOT_LITERAL : '@docRoot' -> mode(DEFAULT_MODE);
|
||||
INHERIT_DOC_LITERAL : '@inheritDoc' -> mode(DEFAULT_MODE);
|
||||
LINK_LITERAL : '@link' -> pushMode(seeLink);
|
||||
LINKPLAIN_LITERAL : '@linkplain' -> pushMode(seeLink);
|
||||
LITERAL_LITERAL : '@literal' {recognizeXmlTags=false;} -> mode(code);
|
||||
VALUE_LITERAL : '@value' -> pushMode(value);
|
||||
CustomName1: '@' [a-zA-Z0-9]+ -> type(CUSTOM_NAME), mode(DEFAULT_MODE);
|
||||
Char6: . -> type(CHAR), mode(DEFAULT_MODE);
|
||||
//////////////////////////////////////////////////////////////////////////////////////
|
||||
mode code;
|
||||
Space7: WS -> type(WS), mode(codeText);
|
||||
Newline2: NEWLINE -> type(NEWLINE), mode(codeText);
|
||||
Leading_asterisk4: LEADING_ASTERISK -> type(LEADING_ASTERISK);
|
||||
Char7: .
|
||||
{
|
||||
skipCurrentTokenConsuming();
|
||||
} -> skip, mode(DEFAULT_MODE);
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////
|
||||
mode codeText;
|
||||
Leading_asterisk5: LEADING_ASTERISK -> type(LEADING_ASTERISK);
|
||||
Skobki: '{' (~[}] | Skobki)* '}' -> type(CHAR);
|
||||
Text: ~[}] -> type(CHAR);
|
||||
Char8: .
|
||||
{
|
||||
skipCurrentTokenConsuming();
|
||||
} -> skip, mode(DEFAULT_MODE);
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////
|
||||
mode value;
|
||||
Space6: WS -> type(WS);
|
||||
Newline4: NEWLINE -> type(NEWLINE);
|
||||
Package2: PACKAGE -> type(PACKAGE);
|
||||
Dot2: DOT -> type(DOT);
|
||||
Class2: CLASS -> type(CLASS);
|
||||
Hash2: HASH -> type(HASH), mode(classMemeber);
|
||||
End1: JAVADOC_INLINE_TAG_END
|
||||
{insideJavadocInlineTag--; recognizeXmlTags=true;}
|
||||
-> type(JAVADOC_INLINE_TAG_END), mode(DEFAULT_MODE)
|
||||
;
|
||||
Char10: .
|
||||
{
|
||||
skipCurrentTokenConsuming();
|
||||
} -> skip, mode(DEFAULT_MODE);
|
||||
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////// HTML TAG MODES //////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////////////
|
||||
mode xmlTagDefinition;
|
||||
|
||||
CLOSE : '>' {htmlTagNameCatched = false;} -> mode(DEFAULT_MODE) ;
|
||||
SLASH_CLOSE : '/>' {htmlTagNameCatched = false;} -> mode(DEFAULT_MODE) ;
|
||||
SLASH : '/' ;
|
||||
EQUALS : '=' -> mode(htmlAttr);
|
||||
|
||||
// with optional end tag
|
||||
P_HTML_TAG_NAME: P {!htmlTagNameCatched}? {htmlTagNameCatched=true;};
|
||||
LI_HTML_TAG_NAME: L I {!htmlTagNameCatched}? {htmlTagNameCatched=true;};
|
||||
TR_HTML_TAG_NAME: T R {!htmlTagNameCatched}? {htmlTagNameCatched=true;};
|
||||
TD_HTML_TAG_NAME: T D {!htmlTagNameCatched}? {htmlTagNameCatched=true;};
|
||||
TH_HTML_TAG_NAME: T H {!htmlTagNameCatched}? {htmlTagNameCatched=true;};
|
||||
BODY_HTML_TAG_NAME: B O D Y {!htmlTagNameCatched}? {htmlTagNameCatched=true;};
|
||||
COLGROUP_HTML_TAG_NAME: C O L G R O U P {!htmlTagNameCatched}? {htmlTagNameCatched=true;};
|
||||
DD_HTML_TAG_NAME: D D {!htmlTagNameCatched}? {htmlTagNameCatched=true;};
|
||||
DT_HTML_TAG_NAME: D T {!htmlTagNameCatched}? {htmlTagNameCatched=true;};
|
||||
HEAD_HTML_TAG_NAME: H E A D {!htmlTagNameCatched}? {htmlTagNameCatched=true;};
|
||||
HTML_HTML_TAG_NAME: H T M L {!htmlTagNameCatched}? {htmlTagNameCatched=true;};
|
||||
OPTION_HTML_TAG_NAME: O P T I O N {!htmlTagNameCatched}? {htmlTagNameCatched=true;};
|
||||
TBODY_HTML_TAG_NAME: T B O D Y {!htmlTagNameCatched}? {htmlTagNameCatched=true;};
|
||||
TFOOT_HTML_TAG_NAME: T F O O T {!htmlTagNameCatched}? {htmlTagNameCatched=true;};
|
||||
THEAD_HTML_TAG_NAME: T H E A D {!htmlTagNameCatched}? {htmlTagNameCatched=true;};
|
||||
|
||||
// singleton tags
|
||||
AREA_HTML_TAG_NAME: A R E A {!htmlTagNameCatched}? {htmlTagNameCatched=true;};
|
||||
BASE_HTML_TAG_NAME: B A S E {!htmlTagNameCatched}? {htmlTagNameCatched=true;};
|
||||
BASEFRONT_HTML_TAG_NAME: B A S E F R O N T {!htmlTagNameCatched}? {htmlTagNameCatched=true;};
|
||||
BR_HTML_TAG_NAME: B R {!htmlTagNameCatched}? {htmlTagNameCatched=true;};
|
||||
COL_HTML_TAG_NAME: C O L {!htmlTagNameCatched}? {htmlTagNameCatched=true;};
|
||||
FRAME_HTML_TAG_NAME: F R A M E {!htmlTagNameCatched}? {htmlTagNameCatched=true;};
|
||||
HR_HTML_TAG_NAME: H R {!htmlTagNameCatched}? {htmlTagNameCatched=true;};
|
||||
IMG_HTML_TAG_NAME: I M G {!htmlTagNameCatched}? {htmlTagNameCatched=true;};
|
||||
INPUT_HTML_TAG_NAME: I N P U T {!htmlTagNameCatched}? {htmlTagNameCatched=true;};
|
||||
ISINDEX_HTML_TAG_NAME: I S I N D E X {!htmlTagNameCatched}? {htmlTagNameCatched=true;};
|
||||
LINK_HTML_TAG_NAME: L I N K {!htmlTagNameCatched}? {htmlTagNameCatched=true;};
|
||||
META_HTML_TAG_NAME: M E T A {!htmlTagNameCatched}? {htmlTagNameCatched=true;};
|
||||
PARAM_HTML_TAG_NAME: P A R A M {!htmlTagNameCatched}? {htmlTagNameCatched=true;};
|
||||
|
||||
// other tag names and attribute names
|
||||
HTML_TAG_NAME: NAME_START_CHAR NAME_CHAR* {htmlTagNameCatched=true;};
|
||||
|
||||
LeadingLEADING_ASTERISK1: LEADING_ASTERISK -> type(LEADING_ASTERISK);
|
||||
Newline1: NEWLINE -> type(NEWLINE);
|
||||
WhiteSpace3: WS -> type(WS);
|
||||
|
||||
Char11: .
|
||||
{
|
||||
skipCurrentTokenConsuming();
|
||||
htmlTagNameCatched = false;
|
||||
} -> skip, mode(DEFAULT_MODE);
|
||||
|
||||
|
||||
fragment
|
||||
HEXDIGIT : [a-fA-F0-9] ;
|
||||
|
||||
fragment
|
||||
DIGIT : [0-9] ;
|
||||
|
||||
fragment
|
||||
NAME_CHAR : NAME_START_CHAR
|
||||
| '-' | '_' | '.' | DIGIT
|
||||
| '\u00B7'
|
||||
| '\u0300'..'\u036F'
|
||||
| '\u203F'..'\u2040'
|
||||
;
|
||||
|
||||
fragment
|
||||
NAME_START_CHAR
|
||||
: [:a-zA-Z]
|
||||
| '\u2070'..'\u218F'
|
||||
| '\u2C00'..'\u2FEF'
|
||||
| '\u3001'..'\uD7FF'
|
||||
| '\uF900'..'\uFDCF'
|
||||
| '\uFDF0'..'\uFFFD'
|
||||
;
|
||||
|
||||
fragment
|
||||
FragmentReference: ([a-zA-Z0-9_-] | '.')+
|
||||
| ([a-zA-Z0-9_-] | '.')* '#' [a-zA-Z0-9_-]+ ( '(' (([a-zA-Z0-9_-] | '.')+ | ',' | ' ')* ')' )?
|
||||
;
|
||||
//case insensitive alphabet
|
||||
fragment A:('a'|'A');
|
||||
fragment B:('b'|'B');
|
||||
fragment C:('c'|'C');
|
||||
fragment D:('d'|'D');
|
||||
fragment E:('e'|'E');
|
||||
fragment F:('f'|'F');
|
||||
fragment G:('g'|'G');
|
||||
fragment H:('h'|'H');
|
||||
fragment I:('i'|'I');
|
||||
fragment J:('j'|'J');
|
||||
fragment K:('k'|'K');
|
||||
fragment L:('l'|'L');
|
||||
fragment M:('m'|'M');
|
||||
fragment N:('n'|'N');
|
||||
fragment O:('o'|'O');
|
||||
fragment P:('p'|'P');
|
||||
fragment Q:('q'|'Q');
|
||||
fragment R:('r'|'R');
|
||||
fragment S:('s'|'S');
|
||||
fragment T:('t'|'T');
|
||||
fragment U:('u'|'U');
|
||||
fragment V:('v'|'V');
|
||||
fragment W:('w'|'W');
|
||||
fragment X:('x'|'X');
|
||||
fragment Y:('y'|'Y');
|
||||
fragment Z:('z'|'Z');
|
||||
//////////////////////////////////////////////////////////////////////////////////////
|
||||
mode htmlAttr;
|
||||
Leading_asterisk7: LEADING_ASTERISK -> type(LEADING_ASTERISK);
|
||||
|
||||
ATTR_VALUE : '"' ~[<"]* '"' {attributeCatched=true;}
|
||||
| '\'' ~[<']* '\'' {attributeCatched=true;}
|
||||
| ( '-' | '+' | DIGIT)+ {attributeCatched=true;}
|
||||
| (~[> \t\n/] | SlashInAttr)+ {attributeCatched=true;}
|
||||
;
|
||||
|
||||
fragment SlashInAttr: '/' {_input.LA(1) != '>'}?;
|
||||
|
||||
Char12: . {attributeCatched}?
|
||||
{
|
||||
skipCurrentTokenConsuming();
|
||||
attributeCatched = false;
|
||||
} -> skip, mode(xmlTagDefinition);
|
||||
WhiteSpace2: WS -> type(WS);
|
||||
//////////////////////////////////////////////////////////////////////////////////////
|
||||
mode htmlComment;
|
||||
HTML_COMMENT_END: '-->' -> mode(DEFAULT_MODE);
|
||||
LeadingAst: LEADING_ASTERISK -> type(LEADING_ASTERISK);
|
||||
Newline6: NEWLINE -> type(NEWLINE);
|
||||
WhiteSpace: WS -> type(WS);
|
||||
CommentChar: . -> type(CHAR);
|
||||
|
|
@ -0,0 +1,908 @@
|
|||
parser grammar JavadocParser;
|
||||
|
||||
options { tokenVocab=JavadocLexer; }
|
||||
|
||||
@parser::header {
|
||||
package com.puppycrawl.tools.checkstyle.grammars.javadoc;
|
||||
}
|
||||
|
||||
@parser::members {
|
||||
boolean isNextJavadocTag() {
|
||||
int token1 = _input.LA(2);
|
||||
int token2 = _input.LA(3);
|
||||
return isJavadocTag(token1)
|
||||
|| (token1 == WS && isJavadocTag(token2));
|
||||
}
|
||||
|
||||
boolean isJavadocTag(int type) {
|
||||
switch(type) {
|
||||
case AUTHOR_LITERAL:
|
||||
case DEPRECATED_LITERAL:
|
||||
case EXCEPTION_LITERAL:
|
||||
case PARAM_LITERAL:
|
||||
case RETURN_LITERAL:
|
||||
case SEE_LITERAL:
|
||||
case SERIAL_LITERAL:
|
||||
case SERIAL_FIELD_LITERAL:
|
||||
case SERIAL_DATA_LITERAL:
|
||||
case SINCE_LITERAL:
|
||||
case THROWS_LITERAL:
|
||||
case VERSION_LITERAL:
|
||||
case CUSTOM_NAME:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
boolean isSameTagNames(ParserRuleContext htmlTagOpen, ParserRuleContext htmlTagClose) {
|
||||
String openTag = htmlTagOpen.getToken(HTML_TAG_NAME, 0).getText().toLowerCase();
|
||||
String closeTag = htmlTagClose.getToken(HTML_TAG_NAME, 0).getText().toLowerCase();
|
||||
System.out.println(openTag + " - " + closeTag);
|
||||
return openTag.equals(closeTag);
|
||||
}
|
||||
}
|
||||
|
||||
javadoc: (
|
||||
htmlElement
|
||||
| ({!isNextJavadocTag()}? LEADING_ASTERISK)
|
||||
| htmlComment
|
||||
| CDATA
|
||||
| NEWLINE
|
||||
| text
|
||||
| javadocInlineTag
|
||||
)*
|
||||
(LEADING_ASTERISK? WS* javadocTag)*
|
||||
EOF;
|
||||
|
||||
htmlElement: htmlTag
|
||||
| singletonElement
|
||||
| paragraph
|
||||
| li
|
||||
| tr
|
||||
| td
|
||||
| th
|
||||
| body
|
||||
| colgroup
|
||||
| dd
|
||||
| dt
|
||||
| head
|
||||
| html
|
||||
| option
|
||||
| tbody
|
||||
| thead
|
||||
| tfoot
|
||||
|
||||
| pTagOpen
|
||||
| liTagOpen
|
||||
| trTagOpen
|
||||
| tdTagOpen
|
||||
| thTagOpen
|
||||
| bodyTagOpen
|
||||
| colgroupTagOpen
|
||||
| ddTagOpen
|
||||
| dtTagOpen
|
||||
| headTagOpen
|
||||
| htmlTagOpen
|
||||
| optionTagOpen
|
||||
| tbodyTagOpen
|
||||
| theadTagOpen
|
||||
| tfootTagOpen
|
||||
|
||||
| pTagClose
|
||||
| liTagClose
|
||||
| trTagClose
|
||||
| tdTagClose
|
||||
| thTagClose
|
||||
| bodyTagClose
|
||||
| colgroupTagClose
|
||||
| ddTagClose
|
||||
| dtTagClose
|
||||
| headTagClose
|
||||
| htmlTagClose
|
||||
| optionTagClose
|
||||
| tbodyTagClose
|
||||
| theadTagClose
|
||||
| tfootTagClose
|
||||
;
|
||||
|
||||
htmlElementOpen: OPEN HTML_TAG_NAME (attribute | NEWLINE | LEADING_ASTERISK | WS)* CLOSE;
|
||||
htmlElementClose: OPEN SLASH HTML_TAG_NAME (NEWLINE | LEADING_ASTERISK | WS)* CLOSE;
|
||||
attribute: HTML_TAG_NAME (NEWLINE | LEADING_ASTERISK | WS)* EQUALS (NEWLINE | LEADING_ASTERISK | WS)* (ATTR_VALUE | text | HTML_TAG_NAME);
|
||||
|
||||
htmlTag: htmlElementOpen (htmlElement
|
||||
| ({!isNextJavadocTag()}? LEADING_ASTERISK)
|
||||
| htmlComment
|
||||
| CDATA
|
||||
| NEWLINE
|
||||
| text
|
||||
| javadocInlineTag)* htmlElementClose //{isSameTagNames($htmlElementOpen.ctx, $htmlElementClose.ctx)}?
|
||||
|
||||
| htmlElementOpen (htmlElement
|
||||
| ({!isNextJavadocTag()}? LEADING_ASTERISK)
|
||||
| htmlComment
|
||||
| CDATA
|
||||
| NEWLINE
|
||||
| text
|
||||
| javadocInlineTag)*
|
||||
{notifyErrorListeners($htmlElementOpen.ctx.getToken(HTML_TAG_NAME, 0).getSymbol(), "javadoc.missed.html.close", null);}
|
||||
;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////
|
||||
//////////////////// HTML TAGS WITH OPTIONAL END TAG ////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////////////
|
||||
pTagOpen: OPEN P_HTML_TAG_NAME (attribute | NEWLINE | LEADING_ASTERISK | WS)* CLOSE;
|
||||
pTagClose: OPEN SLASH P_HTML_TAG_NAME (NEWLINE | LEADING_ASTERISK | WS)* CLOSE;
|
||||
paragraph: pTagOpen
|
||||
(htmlTag
|
||||
| singletonTag
|
||||
| li
|
||||
| tr
|
||||
| td
|
||||
| th
|
||||
| body
|
||||
| colgroup
|
||||
| dd
|
||||
| dt
|
||||
| head
|
||||
| html
|
||||
| option
|
||||
| tbody
|
||||
| thead
|
||||
| tfoot
|
||||
| liTagOpen
|
||||
| trTagOpen
|
||||
| tdTagOpen
|
||||
| thTagOpen
|
||||
| bodyTagOpen
|
||||
| colgroupTagOpen
|
||||
| ddTagOpen
|
||||
| dtTagOpen
|
||||
| headTagOpen
|
||||
| htmlTagOpen
|
||||
| optionTagOpen
|
||||
| tbodyTagOpen
|
||||
| theadTagOpen
|
||||
| tfootTagOpen
|
||||
| ({!isNextJavadocTag()}? LEADING_ASTERISK)
|
||||
| htmlComment
|
||||
| CDATA
|
||||
| NEWLINE
|
||||
| text
|
||||
| javadocInlineTag)*
|
||||
pTagClose
|
||||
;
|
||||
|
||||
liTagOpen: OPEN LI_HTML_TAG_NAME (attribute | NEWLINE | LEADING_ASTERISK | WS)* CLOSE;
|
||||
liTagClose: OPEN SLASH LI_HTML_TAG_NAME (NEWLINE | LEADING_ASTERISK | WS)* CLOSE;
|
||||
li: liTagOpen
|
||||
(htmlTag
|
||||
| singletonTag
|
||||
| paragraph
|
||||
| tr
|
||||
| td
|
||||
| th
|
||||
| body
|
||||
| colgroup
|
||||
| dd
|
||||
| dt
|
||||
| head
|
||||
| html
|
||||
| option
|
||||
| tbody
|
||||
| thead
|
||||
| tfoot
|
||||
| pTagOpen
|
||||
| trTagOpen
|
||||
| tdTagOpen
|
||||
| thTagOpen
|
||||
| bodyTagOpen
|
||||
| colgroupTagOpen
|
||||
| ddTagOpen
|
||||
| dtTagOpen
|
||||
| headTagOpen
|
||||
| htmlTagOpen
|
||||
| optionTagOpen
|
||||
| tbodyTagOpen
|
||||
| theadTagOpen
|
||||
| tfootTagOpen
|
||||
| ({!isNextJavadocTag()}? LEADING_ASTERISK)
|
||||
| htmlComment
|
||||
| CDATA
|
||||
| NEWLINE
|
||||
| text
|
||||
| javadocInlineTag)*
|
||||
liTagClose
|
||||
;
|
||||
|
||||
trTagOpen: OPEN TR_HTML_TAG_NAME (attribute | NEWLINE | LEADING_ASTERISK | WS)* CLOSE;
|
||||
trTagClose: OPEN SLASH TR_HTML_TAG_NAME (NEWLINE | LEADING_ASTERISK | WS)* CLOSE;
|
||||
tr: trTagOpen
|
||||
(htmlTag
|
||||
| singletonTag
|
||||
| paragraph
|
||||
| li
|
||||
| td
|
||||
| th
|
||||
| body
|
||||
| colgroup
|
||||
| dd
|
||||
| dt
|
||||
| head
|
||||
| html
|
||||
| option
|
||||
| tbody
|
||||
| thead
|
||||
| tfoot
|
||||
| pTagOpen
|
||||
| liTagOpen
|
||||
| tdTagOpen
|
||||
| thTagOpen
|
||||
| bodyTagOpen
|
||||
| colgroupTagOpen
|
||||
| ddTagOpen
|
||||
| dtTagOpen
|
||||
| headTagOpen
|
||||
| htmlTagOpen
|
||||
| optionTagOpen
|
||||
| tbodyTagOpen
|
||||
| theadTagOpen
|
||||
| tfootTagOpen
|
||||
| ({!isNextJavadocTag()}? LEADING_ASTERISK)
|
||||
| htmlComment
|
||||
| CDATA
|
||||
| NEWLINE
|
||||
| text
|
||||
| javadocInlineTag)*
|
||||
trTagClose
|
||||
;
|
||||
|
||||
tdTagOpen: OPEN TD_HTML_TAG_NAME (attribute | NEWLINE | LEADING_ASTERISK | WS)* CLOSE;
|
||||
tdTagClose: OPEN SLASH TD_HTML_TAG_NAME (NEWLINE | LEADING_ASTERISK | WS)* CLOSE;
|
||||
td: tdTagOpen
|
||||
(htmlTag
|
||||
| singletonTag
|
||||
| paragraph
|
||||
| li
|
||||
| tr
|
||||
| th
|
||||
| body
|
||||
| colgroup
|
||||
| dd
|
||||
| dt
|
||||
| head
|
||||
| html
|
||||
| option
|
||||
| tbody
|
||||
| thead
|
||||
| tfoot
|
||||
| pTagOpen
|
||||
| liTagOpen
|
||||
| tdTagOpen
|
||||
| thTagOpen
|
||||
| bodyTagOpen
|
||||
| colgroupTagOpen
|
||||
| ddTagOpen
|
||||
| dtTagOpen
|
||||
| headTagOpen
|
||||
| htmlTagOpen
|
||||
| optionTagOpen
|
||||
| tbodyTagOpen
|
||||
| theadTagOpen
|
||||
| tfootTagOpen
|
||||
| ({!isNextJavadocTag()}? LEADING_ASTERISK)
|
||||
| htmlComment
|
||||
| CDATA
|
||||
| NEWLINE
|
||||
| text
|
||||
| javadocInlineTag)*
|
||||
tdTagClose
|
||||
;
|
||||
|
||||
thTagOpen: OPEN TH_HTML_TAG_NAME (attribute | NEWLINE | LEADING_ASTERISK | WS)* CLOSE;
|
||||
thTagClose: OPEN SLASH TH_HTML_TAG_NAME (NEWLINE | LEADING_ASTERISK | WS)* CLOSE;
|
||||
th: thTagOpen
|
||||
(htmlTag
|
||||
| singletonTag
|
||||
| paragraph
|
||||
| li
|
||||
| tr
|
||||
| td
|
||||
| body
|
||||
| colgroup
|
||||
| dd
|
||||
| dt
|
||||
| head
|
||||
| html
|
||||
| option
|
||||
| tbody
|
||||
| thead
|
||||
| tfoot
|
||||
| pTagOpen
|
||||
| liTagOpen
|
||||
| trTagOpen
|
||||
| tdTagOpen
|
||||
| bodyTagOpen
|
||||
| colgroupTagOpen
|
||||
| ddTagOpen
|
||||
| dtTagOpen
|
||||
| headTagOpen
|
||||
| htmlTagOpen
|
||||
| optionTagOpen
|
||||
| tbodyTagOpen
|
||||
| theadTagOpen
|
||||
| tfootTagOpen
|
||||
| ({!isNextJavadocTag()}? LEADING_ASTERISK)
|
||||
| htmlComment
|
||||
| CDATA
|
||||
| NEWLINE
|
||||
| text
|
||||
| javadocInlineTag)*
|
||||
thTagClose
|
||||
;
|
||||
|
||||
bodyTagOpen: OPEN BODY_HTML_TAG_NAME (attribute | NEWLINE | LEADING_ASTERISK | WS)* CLOSE;
|
||||
bodyTagClose: OPEN SLASH BODY_HTML_TAG_NAME (NEWLINE | LEADING_ASTERISK | WS)* CLOSE;
|
||||
body: bodyTagOpen
|
||||
(htmlTag
|
||||
| singletonTag
|
||||
| paragraph
|
||||
| li
|
||||
| tr
|
||||
| td
|
||||
| th
|
||||
| colgroup
|
||||
| dd
|
||||
| dt
|
||||
| head
|
||||
| html
|
||||
| option
|
||||
| tbody
|
||||
| thead
|
||||
| tfoot
|
||||
| pTagOpen
|
||||
| liTagOpen
|
||||
| trTagOpen
|
||||
| tdTagOpen
|
||||
| thTagOpen
|
||||
| colgroupTagOpen
|
||||
| ddTagOpen
|
||||
| dtTagOpen
|
||||
| headTagOpen
|
||||
| htmlTagOpen
|
||||
| optionTagOpen
|
||||
| tbodyTagOpen
|
||||
| theadTagOpen
|
||||
| tfootTagOpen
|
||||
| ({!isNextJavadocTag()}? LEADING_ASTERISK)
|
||||
| htmlComment
|
||||
| CDATA
|
||||
| NEWLINE
|
||||
| text
|
||||
| javadocInlineTag)*
|
||||
bodyTagClose
|
||||
;
|
||||
|
||||
colgroupTagOpen: OPEN COLGROUP_HTML_TAG_NAME (attribute | NEWLINE | LEADING_ASTERISK | WS)* CLOSE;
|
||||
colgroupTagClose: OPEN SLASH COLGROUP_HTML_TAG_NAME (NEWLINE | LEADING_ASTERISK | WS)* CLOSE;
|
||||
colgroup: colgroupTagOpen
|
||||
(htmlTag
|
||||
| singletonTag
|
||||
| paragraph
|
||||
| li
|
||||
| tr
|
||||
| td
|
||||
| th
|
||||
| body
|
||||
| dd
|
||||
| dt
|
||||
| head
|
||||
| html
|
||||
| option
|
||||
| tbody
|
||||
| thead
|
||||
| tfoot
|
||||
| pTagOpen
|
||||
| liTagOpen
|
||||
| trTagOpen
|
||||
| tdTagOpen
|
||||
| thTagOpen
|
||||
| bodyTagOpen
|
||||
| ddTagOpen
|
||||
| dtTagOpen
|
||||
| headTagOpen
|
||||
| htmlTagOpen
|
||||
| optionTagOpen
|
||||
| tbodyTagOpen
|
||||
| theadTagOpen
|
||||
| tfootTagOpen
|
||||
| ({!isNextJavadocTag()}? LEADING_ASTERISK)
|
||||
| htmlComment
|
||||
| CDATA
|
||||
| NEWLINE
|
||||
| text
|
||||
| javadocInlineTag)*
|
||||
colgroupTagClose
|
||||
;
|
||||
|
||||
ddTagOpen: OPEN DD_HTML_TAG_NAME (attribute | NEWLINE | LEADING_ASTERISK | WS)* CLOSE;
|
||||
ddTagClose: OPEN SLASH DD_HTML_TAG_NAME (NEWLINE | LEADING_ASTERISK | WS)* CLOSE;
|
||||
dd: ddTagOpen
|
||||
(htmlTag
|
||||
| singletonTag
|
||||
| paragraph
|
||||
| li
|
||||
| tr
|
||||
| td
|
||||
| th
|
||||
| body
|
||||
| colgroup
|
||||
| dt
|
||||
| head
|
||||
| html
|
||||
| option
|
||||
| tbody
|
||||
| thead
|
||||
| tfoot
|
||||
| pTagOpen
|
||||
| liTagOpen
|
||||
| trTagOpen
|
||||
| tdTagOpen
|
||||
| thTagOpen
|
||||
| bodyTagOpen
|
||||
| colgroupTagOpen
|
||||
| dtTagOpen
|
||||
| headTagOpen
|
||||
| htmlTagOpen
|
||||
| optionTagOpen
|
||||
| tbodyTagOpen
|
||||
| theadTagOpen
|
||||
| tfootTagOpen
|
||||
| ({!isNextJavadocTag()}? LEADING_ASTERISK)
|
||||
| htmlComment
|
||||
| CDATA
|
||||
| NEWLINE
|
||||
| text
|
||||
| javadocInlineTag)*
|
||||
ddTagClose
|
||||
;
|
||||
|
||||
dtTagOpen: OPEN DT_HTML_TAG_NAME (attribute | NEWLINE | LEADING_ASTERISK | WS)* CLOSE;
|
||||
dtTagClose: OPEN SLASH DT_HTML_TAG_NAME (NEWLINE | LEADING_ASTERISK | WS)* CLOSE;
|
||||
dt: dtTagOpen
|
||||
(htmlTag
|
||||
| singletonTag
|
||||
| paragraph
|
||||
| li
|
||||
| tr
|
||||
| td
|
||||
| th
|
||||
| body
|
||||
| colgroup
|
||||
| dd
|
||||
| head
|
||||
| html
|
||||
| option
|
||||
| tbody
|
||||
| thead
|
||||
| tfoot
|
||||
| pTagOpen
|
||||
| liTagOpen
|
||||
| trTagOpen
|
||||
| tdTagOpen
|
||||
| thTagOpen
|
||||
| bodyTagOpen
|
||||
| colgroupTagOpen
|
||||
| ddTagOpen
|
||||
| headTagOpen
|
||||
| htmlTagOpen
|
||||
| optionTagOpen
|
||||
| tbodyTagOpen
|
||||
| theadTagOpen
|
||||
| tfootTagOpen
|
||||
| ({!isNextJavadocTag()}? LEADING_ASTERISK)
|
||||
| htmlComment
|
||||
| CDATA
|
||||
| NEWLINE
|
||||
| text
|
||||
| javadocInlineTag)*
|
||||
dtTagClose
|
||||
;
|
||||
|
||||
headTagOpen: OPEN HEAD_HTML_TAG_NAME (attribute | NEWLINE | LEADING_ASTERISK | WS)* CLOSE;
|
||||
headTagClose: OPEN SLASH HEAD_HTML_TAG_NAME (NEWLINE | LEADING_ASTERISK | WS)* CLOSE;
|
||||
head: headTagOpen
|
||||
(htmlTag
|
||||
| singletonTag
|
||||
| paragraph
|
||||
| li
|
||||
| tr
|
||||
| td
|
||||
| th
|
||||
| body
|
||||
| colgroup
|
||||
| dd
|
||||
| dt
|
||||
| html
|
||||
| option
|
||||
| tbody
|
||||
| thead
|
||||
| tfoot
|
||||
| pTagOpen
|
||||
| liTagOpen
|
||||
| trTagOpen
|
||||
| tdTagOpen
|
||||
| thTagOpen
|
||||
| bodyTagOpen
|
||||
| colgroupTagOpen
|
||||
| ddTagOpen
|
||||
| dtTagOpen
|
||||
| htmlTagOpen
|
||||
| optionTagOpen
|
||||
| tbodyTagOpen
|
||||
| theadTagOpen
|
||||
| tfootTagOpen
|
||||
| ({!isNextJavadocTag()}? LEADING_ASTERISK)
|
||||
| htmlComment
|
||||
| CDATA
|
||||
| NEWLINE
|
||||
| text
|
||||
| javadocInlineTag)*
|
||||
headTagClose
|
||||
;
|
||||
|
||||
htmlTagOpen: OPEN HTML_HTML_TAG_NAME (attribute | NEWLINE | LEADING_ASTERISK | WS)* CLOSE;
|
||||
htmlTagClose: OPEN SLASH HTML_HTML_TAG_NAME (NEWLINE | LEADING_ASTERISK | WS)* CLOSE;
|
||||
html: htmlTagOpen
|
||||
(htmlTag
|
||||
| singletonTag
|
||||
| paragraph
|
||||
| li
|
||||
| tr
|
||||
| td
|
||||
| th
|
||||
| body
|
||||
| colgroup
|
||||
| dd
|
||||
| dt
|
||||
| head
|
||||
| option
|
||||
| tbody
|
||||
| thead
|
||||
| tfoot
|
||||
| pTagOpen
|
||||
| liTagOpen
|
||||
| trTagOpen
|
||||
| tdTagOpen
|
||||
| thTagOpen
|
||||
| bodyTagOpen
|
||||
| colgroupTagOpen
|
||||
| ddTagOpen
|
||||
| dtTagOpen
|
||||
| headTagOpen
|
||||
| optionTagOpen
|
||||
| tbodyTagOpen
|
||||
| theadTagOpen
|
||||
| tfootTagOpen
|
||||
| ({!isNextJavadocTag()}? LEADING_ASTERISK)
|
||||
| htmlComment
|
||||
| CDATA
|
||||
| NEWLINE
|
||||
| text
|
||||
| javadocInlineTag)*
|
||||
htmlTagClose
|
||||
;
|
||||
|
||||
optionTagOpen: OPEN OPTION_HTML_TAG_NAME (attribute | NEWLINE | LEADING_ASTERISK | WS)* CLOSE;
|
||||
optionTagClose: OPEN SLASH OPTION_HTML_TAG_NAME (NEWLINE | LEADING_ASTERISK | WS)* CLOSE;
|
||||
option: optionTagOpen
|
||||
(htmlTag
|
||||
| singletonTag
|
||||
| paragraph
|
||||
| li
|
||||
| tr
|
||||
| td
|
||||
| th
|
||||
| body
|
||||
| colgroup
|
||||
| dd
|
||||
| dt
|
||||
| head
|
||||
| html
|
||||
| tbody
|
||||
| thead
|
||||
| tfoot
|
||||
| pTagOpen
|
||||
| liTagOpen
|
||||
| trTagOpen
|
||||
| tdTagOpen
|
||||
| thTagOpen
|
||||
| bodyTagOpen
|
||||
| colgroupTagOpen
|
||||
| ddTagOpen
|
||||
| dtTagOpen
|
||||
| headTagOpen
|
||||
| htmlTagOpen
|
||||
| tbodyTagOpen
|
||||
| theadTagOpen
|
||||
| tfootTagOpen
|
||||
| ({!isNextJavadocTag()}? LEADING_ASTERISK)
|
||||
| htmlComment
|
||||
| CDATA
|
||||
| NEWLINE
|
||||
| text
|
||||
| javadocInlineTag)*
|
||||
optionTagClose
|
||||
;
|
||||
|
||||
tbodyTagOpen: OPEN TBODY_HTML_TAG_NAME (attribute | NEWLINE | LEADING_ASTERISK | WS)* CLOSE;
|
||||
tbodyTagClose: OPEN SLASH TBODY_HTML_TAG_NAME (NEWLINE | LEADING_ASTERISK | WS)* CLOSE;
|
||||
tbody: tbodyTagOpen
|
||||
(htmlTag
|
||||
| singletonTag
|
||||
| paragraph
|
||||
| li
|
||||
| tr
|
||||
| td
|
||||
| th
|
||||
| body
|
||||
| colgroup
|
||||
| dd
|
||||
| dt
|
||||
| head
|
||||
| html
|
||||
| option
|
||||
| thead
|
||||
| tfoot
|
||||
| pTagOpen
|
||||
| liTagOpen
|
||||
| trTagOpen
|
||||
| tdTagOpen
|
||||
| thTagOpen
|
||||
| bodyTagOpen
|
||||
| colgroupTagOpen
|
||||
| ddTagOpen
|
||||
| dtTagOpen
|
||||
| headTagOpen
|
||||
| htmlTagOpen
|
||||
| optionTagOpen
|
||||
| theadTagOpen
|
||||
| tfootTagOpen
|
||||
| ({!isNextJavadocTag()}? LEADING_ASTERISK)
|
||||
| htmlComment
|
||||
| CDATA
|
||||
| NEWLINE
|
||||
| text
|
||||
| javadocInlineTag)*
|
||||
tbodyTagClose
|
||||
;
|
||||
|
||||
tfootTagOpen: OPEN TFOOT_HTML_TAG_NAME (attribute | NEWLINE | LEADING_ASTERISK | WS)* CLOSE;
|
||||
tfootTagClose: OPEN SLASH TFOOT_HTML_TAG_NAME (NEWLINE | LEADING_ASTERISK | WS)* CLOSE;
|
||||
tfoot: tfootTagOpen
|
||||
(htmlTag
|
||||
| singletonTag
|
||||
| paragraph
|
||||
| li
|
||||
| tr
|
||||
| td
|
||||
| th
|
||||
| body
|
||||
| colgroup
|
||||
| dd
|
||||
| dt
|
||||
| head
|
||||
| html
|
||||
| option
|
||||
| tbody
|
||||
| thead
|
||||
| pTagOpen
|
||||
| liTagOpen
|
||||
| trTagOpen
|
||||
| tdTagOpen
|
||||
| thTagOpen
|
||||
| bodyTagOpen
|
||||
| colgroupTagOpen
|
||||
| ddTagOpen
|
||||
| dtTagOpen
|
||||
| headTagOpen
|
||||
| htmlTagOpen
|
||||
| optionTagOpen
|
||||
| tbodyTagOpen
|
||||
| theadTagOpen
|
||||
| ({!isNextJavadocTag()}? LEADING_ASTERISK)
|
||||
| htmlComment
|
||||
| CDATA
|
||||
| NEWLINE
|
||||
| text
|
||||
| javadocInlineTag)*
|
||||
tfootTagClose
|
||||
;
|
||||
|
||||
theadTagOpen: OPEN THEAD_HTML_TAG_NAME (attribute | NEWLINE | LEADING_ASTERISK | WS)* CLOSE;
|
||||
theadTagClose: OPEN SLASH THEAD_HTML_TAG_NAME (NEWLINE | LEADING_ASTERISK | WS)* CLOSE;
|
||||
thead: theadTagOpen
|
||||
(htmlTag
|
||||
| singletonTag
|
||||
| paragraph
|
||||
| li
|
||||
| tr
|
||||
| td
|
||||
| th
|
||||
| body
|
||||
| colgroup
|
||||
| dd
|
||||
| dt
|
||||
| head
|
||||
| html
|
||||
| option
|
||||
| tbody
|
||||
| tfoot
|
||||
| pTagOpen
|
||||
| liTagOpen
|
||||
| trTagOpen
|
||||
| tdTagOpen
|
||||
| thTagOpen
|
||||
| bodyTagOpen
|
||||
| colgroupTagOpen
|
||||
| ddTagOpen
|
||||
| dtTagOpen
|
||||
| headTagOpen
|
||||
| htmlTagOpen
|
||||
| optionTagOpen
|
||||
| tbodyTagOpen
|
||||
| tfootTagOpen
|
||||
| ({!isNextJavadocTag()}? LEADING_ASTERISK)
|
||||
| htmlComment
|
||||
| CDATA
|
||||
| NEWLINE
|
||||
| text
|
||||
| javadocInlineTag)*
|
||||
theadTagClose
|
||||
;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////// SINLETON HTML TAGS //////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////////////
|
||||
singletonElement: singletonTag
|
||||
| areaTag
|
||||
| baseTag
|
||||
| basefrontTag
|
||||
| brTag
|
||||
| colTag
|
||||
| frameTag
|
||||
| hrTag
|
||||
| imgTag
|
||||
| inputTag
|
||||
| isindexTag
|
||||
| linkTag
|
||||
| metaTag
|
||||
| paramTag
|
||||
|
||||
| wrongSinletonTag
|
||||
;
|
||||
|
||||
singletonTag: OPEN
|
||||
(
|
||||
HTML_TAG_NAME
|
||||
| P_HTML_TAG_NAME
|
||||
| LI_HTML_TAG_NAME
|
||||
| TR_HTML_TAG_NAME
|
||||
| TD_HTML_TAG_NAME
|
||||
| TH_HTML_TAG_NAME
|
||||
| BODY_HTML_TAG_NAME
|
||||
| COLGROUP_HTML_TAG_NAME
|
||||
| DD_HTML_TAG_NAME
|
||||
| DT_HTML_TAG_NAME
|
||||
| HEAD_HTML_TAG_NAME
|
||||
| HTML_HTML_TAG_NAME
|
||||
| OPTION_HTML_TAG_NAME
|
||||
| TBODY_HTML_TAG_NAME
|
||||
| TFOOT_HTML_TAG_NAME
|
||||
| THEAD_HTML_TAG_NAME
|
||||
)
|
||||
(attribute | NEWLINE | LEADING_ASTERISK | WS)* SLASH_CLOSE;
|
||||
|
||||
areaTag: OPEN AREA_HTML_TAG_NAME (attribute | NEWLINE | LEADING_ASTERISK | WS)* (SLASH_CLOSE | CLOSE);
|
||||
baseTag: OPEN BASE_HTML_TAG_NAME (attribute | NEWLINE | LEADING_ASTERISK | WS)* (SLASH_CLOSE | CLOSE);
|
||||
basefrontTag: OPEN BASEFRONT_HTML_TAG_NAME (attribute | NEWLINE | LEADING_ASTERISK | WS)* (SLASH_CLOSE | CLOSE);
|
||||
brTag: OPEN BR_HTML_TAG_NAME (attribute | NEWLINE | LEADING_ASTERISK | WS)* (SLASH_CLOSE | CLOSE);
|
||||
colTag: OPEN COL_HTML_TAG_NAME (attribute | NEWLINE | LEADING_ASTERISK | WS)* (SLASH_CLOSE | CLOSE);
|
||||
frameTag: OPEN FRAME_HTML_TAG_NAME (attribute | NEWLINE | LEADING_ASTERISK | WS)* (SLASH_CLOSE | CLOSE);
|
||||
hrTag: OPEN HR_HTML_TAG_NAME (attribute | NEWLINE | LEADING_ASTERISK | WS)* (SLASH_CLOSE | CLOSE);
|
||||
imgTag: OPEN IMG_HTML_TAG_NAME (attribute | NEWLINE | LEADING_ASTERISK | WS)* (SLASH_CLOSE | CLOSE);
|
||||
inputTag: OPEN INPUT_HTML_TAG_NAME (attribute | NEWLINE | LEADING_ASTERISK | WS)* (SLASH_CLOSE | CLOSE);
|
||||
isindexTag: OPEN ISINDEX_HTML_TAG_NAME (attribute | NEWLINE | LEADING_ASTERISK | WS)* (SLASH_CLOSE | CLOSE);
|
||||
linkTag: OPEN LINK_HTML_TAG_NAME (attribute | NEWLINE | LEADING_ASTERISK | WS)* (SLASH_CLOSE | CLOSE);
|
||||
metaTag: OPEN META_HTML_TAG_NAME (attribute | NEWLINE | LEADING_ASTERISK | WS)* (SLASH_CLOSE | CLOSE);
|
||||
paramTag: OPEN PARAM_HTML_TAG_NAME (attribute | NEWLINE | LEADING_ASTERISK | WS)* (SLASH_CLOSE | CLOSE);
|
||||
|
||||
wrongSinletonTag: OPEN SLASH singletonTagName CLOSE {notifyErrorListeners($singletonTagName.start, "javadoc.wrong.singleton.html.tag", null);}
|
||||
;
|
||||
singletonTagName: (AREA_HTML_TAG_NAME
|
||||
| BASE_HTML_TAG_NAME
|
||||
| BASEFRONT_HTML_TAG_NAME
|
||||
| BR_HTML_TAG_NAME
|
||||
| COL_HTML_TAG_NAME
|
||||
| FRAME_HTML_TAG_NAME
|
||||
| HR_HTML_TAG_NAME
|
||||
| IMG_HTML_TAG_NAME
|
||||
| INPUT_HTML_TAG_NAME
|
||||
| ISINDEX_HTML_TAG_NAME
|
||||
| LINK_HTML_TAG_NAME
|
||||
| META_HTML_TAG_NAME
|
||||
| PARAM_HTML_TAG_NAME
|
||||
)
|
||||
;
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////// JAVADOC TAGS ////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////////////
|
||||
description: (
|
||||
({!isNextJavadocTag()}? LEADING_ASTERISK)
|
||||
| htmlComment
|
||||
| CDATA
|
||||
| NEWLINE
|
||||
| text
|
||||
| javadocInlineTag
|
||||
| htmlElement
|
||||
)+;
|
||||
|
||||
reference:
|
||||
(
|
||||
PACKAGE (DOT | CLASS)* HASH? MEMBER? parameters?
|
||||
| (DOT | CLASS)+ HASH? MEMBER? parameters?
|
||||
| HASH? MEMBER parameters?
|
||||
)
|
||||
;
|
||||
parameters: LEFT_BRACE (ARGUMENT | COMMA | WS | NEWLINE | LEADING_ASTERISK)* RIGHT_BRACE;
|
||||
|
||||
javadocTag: AUTHOR_LITERAL (WS | NEWLINE)* description?
|
||||
|
||||
| DEPRECATED_LITERAL (WS | NEWLINE)* description?
|
||||
|
||||
| EXCEPTION_LITERAL (WS | NEWLINE)* CLASS_NAME? (WS | NEWLINE)* description?
|
||||
|
||||
| PARAM_LITERAL (WS | NEWLINE)* PARAMETER_NAME? (WS | NEWLINE)* description?
|
||||
|
||||
| RETURN_LITERAL (WS | NEWLINE)* description?
|
||||
|
||||
| SEE_LITERAL (WS | NEWLINE)* reference? (STRING | htmlElement)* (WS | NEWLINE)* description?
|
||||
|
||||
| SERIAL_LITERAL (WS | NEWLINE)* (LITERAL_INCLUDE | LITERAL_EXCLUDE)? description?
|
||||
|
||||
| SERIAL_DATA_LITERAL (WS | NEWLINE)* description?
|
||||
|
||||
| SERIAL_FIELD_LITERAL (WS | NEWLINE)* FIELD_NAME? (WS | NEWLINE)* FIELD_TYPE? (WS | NEWLINE)* description?
|
||||
|
||||
| SINCE_LITERAL (WS | NEWLINE)* description?
|
||||
|
||||
| THROWS_LITERAL (WS | NEWLINE)* CLASS_NAME? (WS | NEWLINE)* description?
|
||||
|
||||
| VERSION_LITERAL (WS | NEWLINE)* description?
|
||||
|
||||
| CUSTOM_NAME (WS | NEWLINE)* description?
|
||||
;
|
||||
//////////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////// JAVADOC INLINE TAGS /////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////////////
|
||||
javadocInlineTag:
|
||||
JAVADOC_INLINE_TAG_START
|
||||
(
|
||||
CODE_LITERAL (WS | NEWLINE | LEADING_ASTERISK | text)*
|
||||
| DOC_ROOT_LITERAL (WS | NEWLINE | LEADING_ASTERISK)*
|
||||
| INHERIT_DOC_LITERAL (WS | NEWLINE | LEADING_ASTERISK)*
|
||||
| LINK_LITERAL (WS | NEWLINE | LEADING_ASTERISK)* reference description?
|
||||
| LINKPLAIN_LITERAL (WS | NEWLINE | LEADING_ASTERISK)* reference description?
|
||||
| LITERAL_LITERAL (WS | NEWLINE | LEADING_ASTERISK | text)*
|
||||
| VALUE_LITERAL (WS | NEWLINE | LEADING_ASTERISK)* reference?
|
||||
| CUSTOM_NAME (WS | NEWLINE | LEADING_ASTERISK)+ description?
|
||||
)
|
||||
JAVADOC_INLINE_TAG_END
|
||||
;
|
||||
|
||||
|
||||
htmlComment: HTML_COMMENT_START (text | NEWLINE | LEADING_ASTERISK)* HTML_COMMENT_END;
|
||||
|
||||
text : (CHAR | WS)+ ;
|
||||
|
|
@ -53,4 +53,6 @@
|
|||
|
||||
<!-- Methods that build fake AST are very long-->
|
||||
<suppress checks="MethodLength" files="src[\\/]test[\\/]java[\\/]com[\\/]puppycrawl[\\/]tools[\\/]checkstyle[\\/]comments[\\/]CommentsTest\.java"/>
|
||||
|
||||
<suppress checks="." files=".*JavadocTokenTypes\.java"/>
|
||||
</suppressions>
|
||||
|
|
|
|||
Loading…
Reference in New Issue