diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/JavadocDetailNodeParser.java b/src/main/java/com/puppycrawl/tools/checkstyle/JavadocDetailNodeParser.java index 85adb62c7..70adc5f87 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/JavadocDetailNodeParser.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/JavadocDetailNodeParser.java @@ -34,6 +34,7 @@ import org.antlr.v4.runtime.tree.TerminalNode; import com.google.common.base.CaseFormat; import com.puppycrawl.tools.checkstyle.api.DetailAST; import com.puppycrawl.tools.checkstyle.api.DetailNode; +import com.puppycrawl.tools.checkstyle.api.JavadocTokenTypes; import com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocNodeImpl; import com.puppycrawl.tools.checkstyle.grammars.javadoc.JavadocLexer; import com.puppycrawl.tools.checkstyle.grammars.javadoc.JavadocParser; @@ -181,6 +182,12 @@ public class JavadocDetailNodeParser { ParseTree parseTreeParent = parseTreeNode; while (currentJavadocParent != null) { + // remove unnecessary children tokens + if (currentJavadocParent.getType() == JavadocTokenTypes.TEXT) { + currentJavadocParent + .setChildren((DetailNode[]) JavadocNodeImpl.EMPTY_DETAIL_NODE_ARRAY); + } + final JavadocNodeImpl[] children = (JavadocNodeImpl[]) currentJavadocParent.getChildren(); diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/api/TokenTypes.java b/src/main/java/com/puppycrawl/tools/checkstyle/api/TokenTypes.java index 5ddc321b9..950e1e2a4 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/api/TokenTypes.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/api/TokenTypes.java @@ -3399,7 +3399,7 @@ public final class TokenTypes { /** * Text of single-line or block comment. * - *
+ *
* +--SINGLE_LINE_COMMENT
* |
* +--COMMENT_CONTENT
diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocNodeImpl.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocNodeImpl.java
index 1634d9520..25616fe28 100644
--- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocNodeImpl.java
+++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocNodeImpl.java
@@ -35,7 +35,7 @@ public class JavadocNodeImpl implements DetailNode {
/**
* Empty array of {@link DetailNode} type.
*/
- private static final DetailNode[] EMPTY_DETAIL_NODE_ARRAY = new DetailNode[0];
+ public static final JavadocNodeImpl[] EMPTY_DETAIL_NODE_ARRAY = new JavadocNodeImpl[0];
/**
* Node index among parent's children.
diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocParagraphCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocParagraphCheck.java
index d77cef83f..99c9b31ce 100644
--- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocParagraphCheck.java
+++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocParagraphCheck.java
@@ -151,7 +151,8 @@ public class JavadocParagraphCheck extends AbstractJavadocCheck {
*/
private void checkEmptyLine(DetailNode newline) {
final DetailNode nearestToken = getNearestNode(newline);
- if (!isLastEmptyLine(newline) && nearestToken.getChildren().length > 1) {
+ if (!isLastEmptyLine(newline) && nearestToken.getType() == JavadocTokenTypes.TEXT
+ && !nearestToken.getText().trim().isEmpty()) {
log(newline.getLineNumber(), MSG_TAG_AFTER);
}
}
@@ -199,7 +200,7 @@ public class JavadocParagraphCheck extends AbstractJavadocCheck {
return false;
}
if (previousSibling.getType() == JavadocTokenTypes.TEXT
- && previousSibling.getChildren().length == 1) {
+ && previousSibling.getText().trim().isEmpty()) {
previousSibling = JavadocUtils.getPreviousSibling(previousSibling);
}
return previousSibling != null
@@ -215,7 +216,7 @@ public class JavadocParagraphCheck extends AbstractJavadocCheck {
DetailNode previousNode = JavadocUtils.getPreviousSibling(paragraphTag);
while (previousNode != null) {
if (previousNode.getType() == JavadocTokenTypes.TEXT
- && previousNode.getChildren().length > 1
+ && !previousNode.getText().trim().isEmpty()
|| previousNode.getType() != JavadocTokenTypes.LEADING_ASTERISK
&& previousNode.getType() != JavadocTokenTypes.NEWLINE
&& previousNode.getType() != JavadocTokenTypes.TEXT) {
@@ -252,7 +253,7 @@ public class JavadocParagraphCheck extends AbstractJavadocCheck {
DetailNode nextNode = JavadocUtils.getNextSibling(newLine);
while (nextNode != null && nextNode.getType() != JavadocTokenTypes.JAVADOC_TAG) {
if (nextNode.getType() == JavadocTokenTypes.TEXT
- && nextNode.getChildren().length > 1
+ && !nextNode.getText().trim().isEmpty()
|| nextNode.getType() == JavadocTokenTypes.HTML_ELEMENT) {
return false;
}
diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocTagContinuationIndentationCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocTagContinuationIndentationCheck.java
index 2e7b7998f..93201bcf2 100644
--- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocTagContinuationIndentationCheck.java
+++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocTagContinuationIndentationCheck.java
@@ -94,10 +94,11 @@ public class JavadocTagContinuationIndentationCheck extends AbstractJavadocCheck
for (DetailNode newlineNode : textNodes) {
final DetailNode textNode = JavadocUtils.getNextSibling(JavadocUtils
.getNextSibling(newlineNode));
- if (textNode != null && textNode.getType() == JavadocTokenTypes.TEXT
- && textNode.getChildren().length > 1) {
- final DetailNode whitespace = JavadocUtils.getFirstChild(textNode);
- if (whitespace.getText().length() - 1 < offset) {
+ if (textNode != null && textNode.getType() == JavadocTokenTypes.TEXT) {
+ final String text = textNode.getText();
+ if (!text.trim().isEmpty()
+ && (text.length() <= offset
+ || !text.substring(1, offset + 1).trim().isEmpty())) {
log(textNode.getLineNumber(), MSG_KEY, offset);
}
}
diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/SummaryJavadocCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/SummaryJavadocCheck.java
index d05777c52..50ed52a86 100644
--- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/SummaryJavadocCheck.java
+++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/SummaryJavadocCheck.java
@@ -26,7 +26,6 @@ import com.puppycrawl.tools.checkstyle.api.DetailNode;
import com.puppycrawl.tools.checkstyle.api.JavadocTokenTypes;
import com.puppycrawl.tools.checkstyle.api.TokenTypes;
import com.puppycrawl.tools.checkstyle.utils.CommonUtils;
-import com.puppycrawl.tools.checkstyle.utils.JavadocUtils;
/**
*
@@ -157,30 +156,15 @@ public class SummaryJavadocCheck extends AbstractJavadocCheck {
final StringBuilder result = new StringBuilder();
final String periodSuffix = PERIOD + ' ';
for (DetailNode child : ast.getChildren()) {
+ final String text = child.getText();
+
if (child.getType() != JavadocTokenTypes.JAVADOC_INLINE_TAG
- && child.getText().contains(periodSuffix)) {
- result.append(getCharsTillDot(child));
+ && text.contains(periodSuffix)) {
+ result.append(text.substring(0, text.indexOf(periodSuffix) + 1));
break;
}
else {
- result.append(child.getText());
- }
- }
- return result.toString();
- }
-
- /**
- * Finds and returns chars till first dot.
- * @param textNode node with javadoc text.
- * @return String with chars till first dot.
- */
- private static String getCharsTillDot(DetailNode textNode) {
- final StringBuilder result = new StringBuilder();
- for (DetailNode child : textNode.getChildren()) {
- result.append(child.getText());
- if (PERIOD.equals(child.getText())
- && JavadocUtils.getNextSibling(child).getType() == JavadocTokenTypes.WS) {
- break;
+ result.append(text);
}
}
return result.toString();
diff --git a/src/site/resources/images/gui_javadoc_screenshot.png b/src/site/resources/images/gui_javadoc_screenshot.png
index 9ae7f5c78..2a82123c9 100644
Binary files a/src/site/resources/images/gui_javadoc_screenshot.png and b/src/site/resources/images/gui_javadoc_screenshot.png differ
diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/checks/javadoc/AbstractJavadocCheckTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/checks/javadoc/AbstractJavadocCheckTest.java
index 5aa22d41e..1e4e71918 100644
--- a/src/test/java/com/puppycrawl/tools/checkstyle/checks/javadoc/AbstractJavadocCheckTest.java
+++ b/src/test/java/com/puppycrawl/tools/checkstyle/checks/javadoc/AbstractJavadocCheckTest.java
@@ -336,7 +336,7 @@ public class AbstractJavadocCheckTest extends BaseCheckTestSupport {
@Override
public int[] getRequiredJavadocTokens() {
- return new int[] {JavadocTokenTypes.CHAR};
+ return new int[] {JavadocTokenTypes.TEXT};
}
@Override
diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocTagContinuationIndentationCheckTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocTagContinuationIndentationCheckTest.java
index ce368fd08..a4d2ed49f 100644
--- a/src/test/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocTagContinuationIndentationCheckTest.java
+++ b/src/test/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocTagContinuationIndentationCheckTest.java
@@ -73,6 +73,7 @@ public class JavadocTagContinuationIndentationCheckTest
"290: " + getCheckMessage(MSG_KEY, 4),
"310: " + getCheckMessage(MSG_KEY, 4),
"322: " + getCheckMessage(MSG_KEY, 4),
+ "324: " + getCheckMessage(MSG_KEY, 4),
};
verify(checkConfig, getPath("InputJavaDocTagContinuationIndentation.java"),
expected);
diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/gui/CodeSelectorPModelTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/gui/CodeSelectorPModelTest.java
index db86f0d9e..ba02966db 100644
--- a/src/test/java/com/puppycrawl/tools/checkstyle/gui/CodeSelectorPModelTest.java
+++ b/src/test/java/com/puppycrawl/tools/checkstyle/gui/CodeSelectorPModelTest.java
@@ -108,13 +108,13 @@ public class CodeSelectorPModelTest {
@Test
public void testDetailNodeLeafSelection() {
- final DetailNode javadocLeaf = ((DetailNode) model.getParseTreeTableModel()
- .getChild(tree.getFirstChild().getNextSibling().getFirstChild(), 0))
- .getChildren()[2].getChildren()[0];
+ final DetailNode javadoc = (DetailNode) model.getParseTreeTableModel()
+ .getChild(tree.getFirstChild().getNextSibling().getFirstChild(), 0);
+ final DetailNode javadocLeaf = javadoc.getChildren()[2];
final CodeSelectorPModel selector = new CodeSelectorPModel(javadocLeaf, linesToPosition);
selector.findSelectionPositions();
Assert.assertEquals(5, selector.getSelectionStart());
- Assert.assertEquals(6, selector.getSelectionEnd());
+ Assert.assertEquals(19, selector.getSelectionEnd());
}
}
diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/astprinter/expectedInputAstTreeStringPrinterAttributesAndMethodsJavadoc.txt b/src/test/resources/com/puppycrawl/tools/checkstyle/astprinter/expectedInputAstTreeStringPrinterAttributesAndMethodsJavadoc.txt
index 8e3458308..0da4646f5 100644
--- a/src/test/resources/com/puppycrawl/tools/checkstyle/astprinter/expectedInputAstTreeStringPrinterAttributesAndMethodsJavadoc.txt
+++ b/src/test/resources/com/puppycrawl/tools/checkstyle/astprinter/expectedInputAstTreeStringPrinterAttributesAndMethodsJavadoc.txt
@@ -6,20 +6,6 @@ CLASS_DEF -> CLASS_DEF [4:0]
| | |--NEWLINE -> \n [1:0]
| | |--LEADING_ASTERISK -> * [2:0]
| | |--TEXT -> class javadoc [2:1]
-| | | |--WS -> [2:1]
-| | | |--CHAR -> c [2:2]
-| | | |--CHAR -> l [2:3]
-| | | |--CHAR -> a [2:4]
-| | | |--CHAR -> s [2:5]
-| | | |--CHAR -> s [2:6]
-| | | |--WS -> [2:7]
-| | | |--CHAR -> j [2:8]
-| | | |--CHAR -> a [2:9]
-| | | |--CHAR -> v [2:10]
-| | | |--CHAR -> a [2:11]
-| | | |--CHAR -> d [2:12]
-| | | |--CHAR -> o [2:13]
-| | | `--CHAR -> c [2:14]
| | |--NEWLINE -> \n [2:15]
| | `--EOF -> [3:0]
| `--BLOCK_COMMENT_END -> */ [3:0]
@@ -34,24 +20,6 @@ CLASS_DEF -> CLASS_DEF [4:0]
| | | |--COMMENT_CONTENT -> * attribute javadoc [6:6]
| | | | `--JAVADOC -> attribute javadoc [6:0]
| | | | |--TEXT -> attribute javadoc [6:0]
- | | | | | |--WS -> [6:0]
- | | | | | |--CHAR -> a [6:1]
- | | | | | |--CHAR -> t [6:2]
- | | | | | |--CHAR -> t [6:3]
- | | | | | |--CHAR -> r [6:4]
- | | | | | |--CHAR -> i [6:5]
- | | | | | |--CHAR -> b [6:6]
- | | | | | |--CHAR -> u [6:7]
- | | | | | |--CHAR -> t [6:8]
- | | | | | |--CHAR -> e [6:9]
- | | | | | |--WS -> [6:10]
- | | | | | |--CHAR -> j [6:11]
- | | | | | |--CHAR -> a [6:12]
- | | | | | |--CHAR -> v [6:13]
- | | | | | |--CHAR -> a [6:14]
- | | | | | |--CHAR -> d [6:15]
- | | | | | |--CHAR -> o [6:16]
- | | | | | `--CHAR -> c [6:17]
| | | | `--EOF -> [6:18]
| | | `--BLOCK_COMMENT_END -> */ [6:24]
| | `--LITERAL_INT -> int [7:4]
@@ -65,24 +33,8 @@ CLASS_DEF -> CLASS_DEF [4:0]
| | | | |--NEWLINE -> \n [9:0]
| | | | |--LEADING_ASTERISK -> * [10:0]
| | | | |--TEXT -> method javadoc [10:5]
- | | | | | |--WS -> [10:5]
- | | | | | |--CHAR -> m [10:6]
- | | | | | |--CHAR -> e [10:7]
- | | | | | |--CHAR -> t [10:8]
- | | | | | |--CHAR -> h [10:9]
- | | | | | |--CHAR -> o [10:10]
- | | | | | |--CHAR -> d [10:11]
- | | | | | |--WS -> [10:12]
- | | | | | |--CHAR -> j [10:13]
- | | | | | |--CHAR -> a [10:14]
- | | | | | |--CHAR -> v [10:15]
- | | | | | |--CHAR -> a [10:16]
- | | | | | |--CHAR -> d [10:17]
- | | | | | |--CHAR -> o [10:18]
- | | | | | `--CHAR -> c [10:19]
| | | | |--NEWLINE -> \n [10:20]
| | | | |--TEXT -> [11:0]
- | | | | | `--WS -> [11:0]
| | | | `--EOF -> [11:4]
| | | `--BLOCK_COMMENT_END -> */ [11:4]
| | `--LITERAL_PUBLIC -> public [12:4]
diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/astprinter/expectedInputAstTreeStringPrinterJavaAndJavadoc.txt b/src/test/resources/com/puppycrawl/tools/checkstyle/astprinter/expectedInputAstTreeStringPrinterJavaAndJavadoc.txt
index 5fd21db8a..269104565 100644
--- a/src/test/resources/com/puppycrawl/tools/checkstyle/astprinter/expectedInputAstTreeStringPrinterJavaAndJavadoc.txt
+++ b/src/test/resources/com/puppycrawl/tools/checkstyle/astprinter/expectedInputAstTreeStringPrinterJavaAndJavadoc.txt
@@ -6,16 +6,6 @@ CLASS_DEF -> CLASS_DEF [4:0]
| | | |--NEWLINE -> \n [1:0]
| | | |--LEADING_ASTERISK -> * [2:0]
| | | |--TEXT -> some text [2:1]
-| | | | |--WS -> [2:1]
-| | | | |--CHAR -> s [2:2]
-| | | | |--CHAR -> o [2:3]
-| | | | |--CHAR -> m [2:4]
-| | | | |--CHAR -> e [2:5]
-| | | | |--WS -> [2:6]
-| | | | |--CHAR -> t [2:7]
-| | | | |--CHAR -> e [2:8]
-| | | | |--CHAR -> x [2:9]
-| | | | `--CHAR -> t [2:10]
| | | |--NEWLINE -> \n [2:11]
| | | `--EOF -> [3:0]
| | `--BLOCK_COMMENT_END -> */ [3:0]
diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/astprinter/expectedInputAstTreeStringPrinterJavadoc.txt b/src/test/resources/com/puppycrawl/tools/checkstyle/astprinter/expectedInputAstTreeStringPrinterJavadoc.txt
index 066053ec9..22f7b9305 100644
--- a/src/test/resources/com/puppycrawl/tools/checkstyle/astprinter/expectedInputAstTreeStringPrinterJavadoc.txt
+++ b/src/test/resources/com/puppycrawl/tools/checkstyle/astprinter/expectedInputAstTreeStringPrinterJavadoc.txt
@@ -14,13 +14,6 @@ CLASS_DEF -> CLASS_DEF [4:0]
| |--COMMENT_CONTENT -> *javadoc [3:2]
| | `--JAVADOC -> javadoc [3:0]
| | |--TEXT -> javadoc [3:0]
-| | | |--CHAR -> j [3:0]
-| | | |--CHAR -> a [3:1]
-| | | |--CHAR -> v [3:2]
-| | | |--CHAR -> a [3:3]
-| | | |--CHAR -> d [3:4]
-| | | |--CHAR -> o [3:5]
-| | | `--CHAR -> c [3:6]
| | `--EOF -> [3:7]
| `--BLOCK_COMMENT_END -> */ [3:9]
|--LITERAL_CLASS -> class [4:0]
diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/astprinter/expectedInputJavadocComment.txt b/src/test/resources/com/puppycrawl/tools/checkstyle/astprinter/expectedInputJavadocComment.txt
index ee872ad1b..fcb36af07 100644
--- a/src/test/resources/com/puppycrawl/tools/checkstyle/astprinter/expectedInputJavadocComment.txt
+++ b/src/test/resources/com/puppycrawl/tools/checkstyle/astprinter/expectedInputJavadocComment.txt
@@ -7,19 +7,11 @@ JAVADOC -> \r\nMy {@code Class}\r\n
\r\n@see never [0:0]
| | `--CLOSE -> > [0:2]
| |--NEWLINE -> \r\n [0:3]
| |--TEXT -> My [1:0]
-| | |--CHAR -> M [1:0]
-| | |--CHAR -> y [1:1]
-| | `--WS -> [1:2]
| |--JAVADOC_INLINE_TAG -> {@code Class} [1:3]
| | |--JAVADOC_INLINE_TAG_START -> { [1:3]
| | |--CODE_LITERAL -> @code [1:4]
| | |--WS -> [1:9]
| | |--TEXT -> Class [1:10]
-| | | |--CHAR -> C [1:10]
-| | | |--CHAR -> l [1:11]
-| | | |--CHAR -> a [1:12]
-| | | |--CHAR -> s [1:13]
-| | | `--CHAR -> s [1:14]
| | `--JAVADOC_INLINE_TAG_END -> } [1:16]
| |--NEWLINE -> \r\n [1:17]
| `--P_TAG_CLOSE ->
[2:0]
diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/InputCorrectJavaDocParagraph.java b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/InputCorrectJavaDocParagraph.java
index bfdf6ab3c..a46600a46 100644
--- a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/InputCorrectJavaDocParagraph.java
+++ b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/InputCorrectJavaDocParagraph.java
@@ -34,6 +34,19 @@ class InputCorrectJavaDocParagraph {
*/
boolean emulated() {return false;}
+ /**
+ * Some Javadoc.
+ *
+ *
+ * Test
+ *
+ *
+ *
+ * Test
+ *
+ */
+ boolean test() {return false;}
+
/**
* Some Javadoc.
*
diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/InputJavaDocTagContinuationIndentation.java b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/InputJavaDocTagContinuationIndentation.java
index 0d15d2f73..2ebb6ff37 100644
--- a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/InputJavaDocTagContinuationIndentation.java
+++ b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/InputJavaDocTagContinuationIndentation.java
@@ -320,6 +320,8 @@ enum Foo1 {}
* Some javadoc.
* @serialData Some javadoc.
* Line below is empty on purpose. // warn
+ * @see Some Text.
+ * L.
*
* @author max
* @see {@link com.puppycrawl.tools.checkstyle.AllChecksPresentOnAvailableChecksPageTest
diff --git a/src/xdocs/writingjavadocchecks.xml.vm b/src/xdocs/writingjavadocchecks.xml.vm
index aa81ea5d0..00b6c1248 100644
--- a/src/xdocs/writingjavadocchecks.xml.vm
+++ b/src/xdocs/writingjavadocchecks.xml.vm
@@ -131,11 +131,6 @@ public class MyClass {
In Javadoc comment every whitespace matters, and Javadoc Checks need all those whitespaces and newline nodes to verify format and content of the Javadoc comment.
Because of that Javadoc grammar includes all whitespaces, newlines to the parse tree
(WS, NEWLINE).
- As you may notice there is also CHAR javadoc token that presents single character.
- It is quite useless and is used for building only TEXT node which consists of
- CHAR and
- WS nodes, but it is implementation nuance.
- (In future we will try to resolve this. See Github Issue #3170).
@@ -165,10 +160,6 @@ CLASS_DEF -> CLASS_DEF [5:0]
| | | |--NEWLINE -> \n [1:0]
| | | |--LEADING_ASTERISK -> * [2:0]
| | | |--TEXT -> My [2:2]
-| | | | |--WS -> [2:2]
-| | | | |--CHAR -> M [2:3]
-| | | | |--CHAR -> y [2:4]
-| | | | `--WS -> [2:5]
| | | |--HTML_ELEMENT -> class [2:6]
| | | | `--HTML_TAG -> class [2:6]
| | | | |--HTML_ELEMENT_OPEN -> [2:6]
@@ -176,18 +167,12 @@ CLASS_DEF -> CLASS_DEF [5:0]
| | | | | |--HTML_TAG_NAME -> b [2:7]
| | | | | `--CLOSE -> > [2:8]
| | | | |--TEXT -> class [2:9]
-| | | | | |--CHAR -> c [2:9]
-| | | | | |--CHAR -> l [2:10]
-| | | | | |--CHAR -> a [2:11]
-| | | | | |--CHAR -> s [2:12]
-| | | | | `--CHAR -> s [2:13]
| | | | `--HTML_ELEMENT_CLOSE -> [2:14]
| | | | |--OPEN -> < [2:14]
| | | | |--SLASH -> / [2:15]
| | | | |--HTML_TAG_NAME -> b [2:16]
| | | | `--CLOSE -> > [2:17]
| | | |--TEXT -> . [2:18]
-| | | | `--CHAR -> . [2:18]
| | | |--NEWLINE -> \n [2:19]
| | | |--LEADING_ASTERISK -> * [3:0]
| | | |--WS -> [3:2]
@@ -225,10 +210,6 @@ CLASS_DEF -> CLASS_DEF [5:0]
JAVADOC -> * My class.\r\n * @see AbstractClass [0:0]
|--LEADING_ASTERISK -> * [0:0]
|--TEXT -> My [0:2]
-| |--WS -> [0:2]
-| |--CHAR -> M [0:3]
-| |--CHAR -> y [0:4]
-| `--WS -> [0:5]
|--HTML_ELEMENT -> class [0:6]
| `--HTML_TAG -> class [0:6]
| |--HTML_ELEMENT_OPEN -> [0:6]
@@ -236,18 +217,12 @@ JAVADOC -> * My class.\r\n * @see AbstractClass [0:0]
| | |--HTML_TAG_NAME -> b [0:7]
| | `--CLOSE -> > [0:8]
| |--TEXT -> class [0:9]
-| | |--CHAR -> c [0:9]
-| | |--CHAR -> l [0:10]
-| | |--CHAR -> a [0:11]
-| | |--CHAR -> s [0:12]
-| | `--CHAR -> s [0:13]
| `--HTML_ELEMENT_CLOSE -> [0:14]
| |--OPEN -> < [0:14]
| |--SLASH -> / [0:15]
| |--HTML_TAG_NAME -> b [0:16]
| `--CLOSE -> > [0:17]
|--TEXT -> . [0:18]
-| `--CHAR -> . [0:18]
|--NEWLINE -> \r\n [0:19]
|--LEADING_ASTERISK -> * [1:0]
|--WS -> [1:2]
@@ -398,10 +373,6 @@ JAVADOC -> ASAP [0:0]
| | | `--ATTR_VALUE -> "as soon as possible" [0:15]
| | `--CLOSE -> > [0:37]
| |--TEXT -> ASAP [0:38]
-| | |--CHAR -> A [0:38]
-| | |--CHAR -> S [0:39]
-| | |--CHAR -> A [0:40]
-| | `--CHAR -> P [0:41]
| `--HTML_ELEMENT_CLOSE -> [0:42]
| |--OPEN -> < [0:42]
| |--SLASH -> / [0:43]
@@ -449,12 +420,6 @@ JAVADOC -> First\r\n
Second [0:0]
| |--P_HTML_TAG_NAME -> p [0:1]
| `--CLOSE -> > [0:2]
|--TEXT -> First [0:3]
-| |--WS -> [0:3]
-| |--CHAR -> F [0:4]
-| |--CHAR -> i [0:5]
-| |--CHAR -> r [0:6]
-| |--CHAR -> s [0:7]
-| `--CHAR -> t [0:8]
|--NEWLINE -> \r\n [0:9]
|--HTML_ELEMENT -> [1:0]
| `--P_TAG_OPEN ->
[1:0]
@@ -462,13 +427,6 @@ JAVADOC ->
First\r\n
Second [0:0]
| |--P_HTML_TAG_NAME -> p [1:1]
| `--CLOSE -> > [1:2]
|--TEXT -> Second [1:3]
-| |--WS -> [1:3]
-| |--CHAR -> S [1:4]
-| |--CHAR -> e [1:5]
-| |--CHAR -> c [1:6]
-| |--CHAR -> o [1:7]
-| |--CHAR -> n [1:8]
-| `--CHAR -> d [1:9]
`--EOF -> [1:10]
]]>
@@ -482,13 +440,6 @@ JAVADOC -> First
\r\n Second
[0:0]
| | |--P_HTML_TAG_NAME -> p [0:1]
| | `--CLOSE -> > [0:2]
| |--TEXT -> First [0:3]
-| | |--WS -> [0:3]
-| | |--CHAR -> F [0:4]
-| | |--CHAR -> i [0:5]
-| | |--CHAR -> r [0:6]
-| | |--CHAR -> s [0:7]
-| | |--CHAR -> t [0:8]
-| | `--WS -> [0:9]
| `--P_TAG_CLOSE ->
[0:10]
| |--OPEN -> < [0:10]
| |--SLASH -> / [0:11]
@@ -502,14 +453,6 @@ JAVADOC -> First
\r\n Second
[0:0]
| | |--P_HTML_TAG_NAME -> p [1:1]
| | `--CLOSE -> > [1:2]
| |--TEXT -> Second [1:3]
-| | |--WS -> [1:3]
-| | |--CHAR -> S [1:4]
-| | |--CHAR -> e [1:5]
-| | |--CHAR -> c [1:6]
-| | |--CHAR -> o [1:7]
-| | |--CHAR -> n [1:8]
-| | |--CHAR -> d [1:9]
-| | `--WS -> [1:10]
| `--P_TAG_CLOSE ->
[1:11]
| |--OPEN -> < [1:11]
| |--SLASH -> / [1:12]