aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.idea/runConfigurations/All_tests.xml6
-rw-r--r--gen/org/jetbrains/markdown/MarkdownElementTypes.java10
-rw-r--r--gen/org/jetbrains/markdown/MarkdownParser.java386
-rw-r--r--gen/org/jetbrains/markdown/lexer/_MarkdownLexer.flex (renamed from src/Markdown/_MarkdownLexer.flex)4
-rw-r--r--gen/org/jetbrains/markdown/lexer/_MarkdownLexer.java14
-rw-r--r--src/Analysis/CommentsAPI.kt2
-rw-r--r--src/Formats/MarkdownFormatService.kt4
-rw-r--r--src/Formats/StructuredFormatService.kt24
-rw-r--r--src/Formats/TextFormatService.kt3
-rw-r--r--src/Kotlin/ContentBuilder.kt79
-rw-r--r--src/Kotlin/Diagnostics.kt (renamed from src/Model/Diagnostics.kt)4
-rw-r--r--src/Kotlin/DocumentationBuildingVisitor.kt (renamed from src/Model/DocumentationBuildingVisitor.kt)1
-rw-r--r--src/Kotlin/DocumentationContext.kt47
-rw-r--r--src/Kotlin/DocumentationNodeBuilder.kt (renamed from src/Model/DocumentationNodeBuilder.kt)94
-rw-r--r--src/Markdown/MarkdownProcessor.kt62
-rw-r--r--src/Markdown/markdown.bnf42
-rw-r--r--src/Model/Content.kt88
-rw-r--r--src/Model/DocumentationContent.kt150
-rw-r--r--src/Model/DocumentationModule.kt23
-rw-r--r--src/Model/DocumentationNode.kt7
-rw-r--r--test/data/comments/explicitSummary.kt6
-rw-r--r--test/data/comments/multilineDoc.kt1
-rw-r--r--test/src/TestAPI.kt27
-rw-r--r--test/src/markdown/ParserTest.kt38
-rw-r--r--test/src/markdown/Specification.kt2
-rw-r--r--test/src/model/ClassTest.kt24
-rw-r--r--test/src/model/CommentTest.kt62
-rw-r--r--test/src/model/FunctionTest.kt25
-rw-r--r--test/src/model/PackageTest.kt12
-rw-r--r--test/src/model/PropertyTest.kt16
30 files changed, 749 insertions, 514 deletions
diff --git a/.idea/runConfigurations/All_tests.xml b/.idea/runConfigurations/All_tests.xml
index 4e7c9c09..deb51b1a 100644
--- a/.idea/runConfigurations/All_tests.xml
+++ b/.idea/runConfigurations/All_tests.xml
@@ -23,8 +23,14 @@
<option name="TRANSPORT" value="0" />
<option name="LOCAL" value="true" />
</RunnerSettings>
+ <RunnerSettings RunnerId="Debug">
+ <option name="DEBUG_PORT" value="" />
+ <option name="TRANSPORT" value="0" />
+ <option name="LOCAL" value="true" />
+ </RunnerSettings>
<RunnerSettings RunnerId="Run" />
<ConfigurationWrapper RunnerId="Debug" />
+ <ConfigurationWrapper RunnerId="Debug" />
<ConfigurationWrapper RunnerId="Run" />
<method />
</configuration>
diff --git a/gen/org/jetbrains/markdown/MarkdownElementTypes.java b/gen/org/jetbrains/markdown/MarkdownElementTypes.java
index 757cc62f..8c2d77ba 100644
--- a/gen/org/jetbrains/markdown/MarkdownElementTypes.java
+++ b/gen/org/jetbrains/markdown/MarkdownElementTypes.java
@@ -6,7 +6,9 @@ import org.jetbrains.dokka.Markdown.MarkdownTokenType;
public interface MarkdownElementTypes {
+ IElementType ANONYMOUS_SECTION = new IElementType("ANONYMOUS_SECTION", null);
IElementType BLANK_LINE = new IElementType("BLANK_LINE", null);
+ IElementType BLOCK = new IElementType("BLOCK", null);
IElementType BULLET = new IElementType("BULLET", null);
IElementType BULLET_LIST = new IElementType("BULLET_LIST", null);
IElementType EMPH = new IElementType("EMPH", null);
@@ -14,22 +16,22 @@ public interface MarkdownElementTypes {
IElementType ENUMERATOR = new IElementType("ENUMERATOR", null);
IElementType HORIZONTAL_RULE = new IElementType("HORIZONTAL_RULE", null);
IElementType HREF = new IElementType("HREF", null);
- IElementType INDENTED_LINE = new IElementType("INDENTED_LINE", null);
+ IElementType INLINE = new IElementType("INLINE", null);
IElementType LINK = new IElementType("LINK", null);
IElementType LIST_BLOCK = new IElementType("LIST_BLOCK", null);
IElementType LIST_BLOCK_LINE = new IElementType("LIST_BLOCK_LINE", null);
IElementType LIST_CONTINUATION_BLOCK = new IElementType("LIST_CONTINUATION_BLOCK", null);
IElementType LIST_ITEM = new IElementType("LIST_ITEM", null);
- IElementType NONBLANK_INDENTED_LINE = new IElementType("NONBLANK_INDENTED_LINE", null);
+ IElementType NAMED_SECTION = new IElementType("NAMED_SECTION", null);
IElementType ORDERED_LIST = new IElementType("ORDERED_LIST", null);
IElementType PARA = new IElementType("PARA", null);
IElementType PLAIN_TEXT = new IElementType("PLAIN_TEXT", null);
+ IElementType SECTION_BODY = new IElementType("SECTION_BODY", null);
+ IElementType SECTION_NAME = new IElementType("SECTION_NAME", null);
IElementType STRONG = new IElementType("STRONG", null);
IElementType STRONG_STAR = new IElementType("STRONG_STAR", null);
IElementType STRONG_UNDERSCORE = new IElementType("STRONG_UNDERSCORE", null);
IElementType TARGET = new IElementType("TARGET", null);
- IElementType VERBATIM = new IElementType("VERBATIM", null);
- IElementType VERBATIM_ITEM = new IElementType("VERBATIM_ITEM", null);
IElementType WHITESPACE = new IElementType("WHITESPACE", null);
IElementType ANYCHAR = new MarkdownTokenType("AnyChar");
diff --git a/gen/org/jetbrains/markdown/MarkdownParser.java b/gen/org/jetbrains/markdown/MarkdownParser.java
index 90c69985..09c4a0f9 100644
--- a/gen/org/jetbrains/markdown/MarkdownParser.java
+++ b/gen/org/jetbrains/markdown/MarkdownParser.java
@@ -22,9 +22,15 @@ public class MarkdownParser implements PsiParser {
boolean result_;
builder_ = adapt_builder_(root_, builder_, this, null);
Marker marker_ = enter_section_(builder_, 0, _COLLAPSE_, null);
- if (root_ == BLANK_LINE) {
+ if (root_ == ANONYMOUS_SECTION) {
+ result_ = AnonymousSection(builder_, 0);
+ }
+ else if (root_ == BLANK_LINE) {
result_ = BlankLine(builder_, 0);
}
+ else if (root_ == BLOCK) {
+ result_ = Block(builder_, 0);
+ }
else if (root_ == BULLET) {
result_ = Bullet(builder_, 0);
}
@@ -46,8 +52,8 @@ public class MarkdownParser implements PsiParser {
else if (root_ == HREF) {
result_ = Href(builder_, 0);
}
- else if (root_ == INDENTED_LINE) {
- result_ = IndentedLine(builder_, 0);
+ else if (root_ == INLINE) {
+ result_ = Inline(builder_, 0);
}
else if (root_ == LINK) {
result_ = Link(builder_, 0);
@@ -64,8 +70,8 @@ public class MarkdownParser implements PsiParser {
else if (root_ == LIST_ITEM) {
result_ = ListItem(builder_, 0);
}
- else if (root_ == NONBLANK_INDENTED_LINE) {
- result_ = NonblankIndentedLine(builder_, 0);
+ else if (root_ == NAMED_SECTION) {
+ result_ = NamedSection(builder_, 0);
}
else if (root_ == ORDERED_LIST) {
result_ = OrderedList(builder_, 0);
@@ -76,6 +82,12 @@ public class MarkdownParser implements PsiParser {
else if (root_ == PLAIN_TEXT) {
result_ = PlainText(builder_, 0);
}
+ else if (root_ == SECTION_BODY) {
+ result_ = SectionBody(builder_, 0);
+ }
+ else if (root_ == SECTION_NAME) {
+ result_ = SectionName(builder_, 0);
+ }
else if (root_ == STRONG) {
result_ = Strong(builder_, 0);
}
@@ -88,12 +100,6 @@ public class MarkdownParser implements PsiParser {
else if (root_ == TARGET) {
result_ = Target(builder_, 0);
}
- else if (root_ == VERBATIM) {
- result_ = Verbatim(builder_, 0);
- }
- else if (root_ == VERBATIM_ITEM) {
- result_ = VerbatimItem(builder_, 0);
- }
else if (root_ == WHITESPACE) {
result_ = Whitespace(builder_, 0);
}
@@ -108,6 +114,17 @@ public class MarkdownParser implements PsiParser {
}
/* ********************************************************** */
+ // SectionBody
+ public static boolean AnonymousSection(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "AnonymousSection")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, "<anonymous section>");
+ result_ = SectionBody(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, ANONYMOUS_SECTION, result_, false, null);
+ return result_;
+ }
+
+ /* ********************************************************** */
// OptionalSpace Newline
public static boolean BlankLine(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "BlankLine")) return false;
@@ -122,19 +139,18 @@ public class MarkdownParser implements PsiParser {
/* ********************************************************** */
// BlankLine* (
- // Para
- // | Verbatim
- // | OrderedList
- // | BulletList
- // | Inlines
- // )
- static boolean Block(PsiBuilder builder_, int level_) {
+ // OrderedList
+ // | BulletList
+ // | HorizontalRule
+ // | Para
+ // )
+ public static boolean Block(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "Block")) return false;
boolean result_;
- Marker marker_ = enter_section_(builder_);
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, "<block>");
result_ = Block_0(builder_, level_ + 1);
result_ = result_ && Block_1(builder_, level_ + 1);
- exit_section_(builder_, marker_, null, result_);
+ exit_section_(builder_, level_, marker_, BLOCK, result_, false, null);
return result_;
}
@@ -150,20 +166,18 @@ public class MarkdownParser implements PsiParser {
return true;
}
- // Para
- // | Verbatim
- // | OrderedList
- // | BulletList
- // | Inlines
+ // OrderedList
+ // | BulletList
+ // | HorizontalRule
+ // | Para
private static boolean Block_1(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "Block_1")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_);
- result_ = Para(builder_, level_ + 1);
- if (!result_) result_ = Verbatim(builder_, level_ + 1);
- if (!result_) result_ = OrderedList(builder_, level_ + 1);
+ result_ = OrderedList(builder_, level_ + 1);
if (!result_) result_ = BulletList(builder_, level_ + 1);
- if (!result_) result_ = Inlines(builder_, level_ + 1);
+ if (!result_) result_ = HorizontalRule(builder_, level_ + 1);
+ if (!result_) result_ = Para(builder_, level_ + 1);
exit_section_(builder_, marker_, null, result_);
return result_;
}
@@ -243,13 +257,15 @@ public class MarkdownParser implements PsiParser {
}
/* ********************************************************** */
- // BOM? ( Block )*
+ // BOM? Whitespace* AnonymousSection? (Whitespace* NamedSection)*
static boolean Document(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "Document")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_);
result_ = Document_0(builder_, level_ + 1);
result_ = result_ && Document_1(builder_, level_ + 1);
+ result_ = result_ && Document_2(builder_, level_ + 1);
+ result_ = result_ && Document_3(builder_, level_ + 1);
exit_section_(builder_, marker_, null, result_);
return result_;
}
@@ -261,28 +277,60 @@ public class MarkdownParser implements PsiParser {
return true;
}
- // ( Block )*
+ // Whitespace*
private static boolean Document_1(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "Document_1")) return false;
int pos_ = current_position_(builder_);
while (true) {
- if (!Document_1_0(builder_, level_ + 1)) break;
+ if (!Whitespace(builder_, level_ + 1)) break;
if (!empty_element_parsed_guard_(builder_, "Document_1", pos_)) break;
pos_ = current_position_(builder_);
}
return true;
}
- // ( Block )
- private static boolean Document_1_0(PsiBuilder builder_, int level_) {
- if (!recursion_guard_(builder_, level_, "Document_1_0")) return false;
+ // AnonymousSection?
+ private static boolean Document_2(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "Document_2")) return false;
+ AnonymousSection(builder_, level_ + 1);
+ return true;
+ }
+
+ // (Whitespace* NamedSection)*
+ private static boolean Document_3(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "Document_3")) return false;
+ int pos_ = current_position_(builder_);
+ while (true) {
+ if (!Document_3_0(builder_, level_ + 1)) break;
+ if (!empty_element_parsed_guard_(builder_, "Document_3", pos_)) break;
+ pos_ = current_position_(builder_);
+ }
+ return true;
+ }
+
+ // Whitespace* NamedSection
+ private static boolean Document_3_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "Document_3_0")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_);
- result_ = Block(builder_, level_ + 1);
+ result_ = Document_3_0_0(builder_, level_ + 1);
+ result_ = result_ && NamedSection(builder_, level_ + 1);
exit_section_(builder_, marker_, null, result_);
return result_;
}
+ // Whitespace*
+ private static boolean Document_3_0_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "Document_3_0_0")) return false;
+ int pos_ = current_position_(builder_);
+ while (true) {
+ if (!Whitespace(builder_, level_ + 1)) break;
+ if (!empty_element_parsed_guard_(builder_, "Document_3_0_0", pos_)) break;
+ pos_ = current_position_(builder_);
+ }
+ return true;
+ }
+
/* ********************************************************** */
// EmphStar | EmphUnderscore
public static boolean Emph(PsiBuilder builder_, int level_) {
@@ -663,28 +711,16 @@ public class MarkdownParser implements PsiParser {
}
/* ********************************************************** */
- // Indent PlainText
- public static boolean IndentedLine(PsiBuilder builder_, int level_) {
- if (!recursion_guard_(builder_, level_, "IndentedLine")) return false;
- boolean result_;
- Marker marker_ = enter_section_(builder_, level_, _NONE_, "<indented line>");
- result_ = Indent(builder_, level_ + 1);
- result_ = result_ && PlainText(builder_, level_ + 1);
- exit_section_(builder_, level_, marker_, INDENTED_LINE, result_, false, null);
- return result_;
- }
-
- /* ********************************************************** */
// Strong | Emph | Link | PlainText
- static boolean Inline(PsiBuilder builder_, int level_) {
+ public static boolean Inline(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "Inline")) return false;
boolean result_;
- Marker marker_ = enter_section_(builder_);
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, "<inline>");
result_ = Strong(builder_, level_ + 1);
if (!result_) result_ = Emph(builder_, level_ + 1);
if (!result_) result_ = Link(builder_, level_ + 1);
if (!result_) result_ = PlainText(builder_, level_ + 1);
- exit_section_(builder_, marker_, null, result_);
+ exit_section_(builder_, level_, marker_, INLINE, result_, false, null);
return result_;
}
@@ -1052,24 +1088,14 @@ public class MarkdownParser implements PsiParser {
}
/* ********************************************************** */
- // !BlankLine IndentedLine
- public static boolean NonblankIndentedLine(PsiBuilder builder_, int level_) {
- if (!recursion_guard_(builder_, level_, "NonblankIndentedLine")) return false;
+ // SectionHeader SectionBody
+ public static boolean NamedSection(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "NamedSection")) return false;
boolean result_;
- Marker marker_ = enter_section_(builder_, level_, _NONE_, "<nonblank indented line>");
- result_ = NonblankIndentedLine_0(builder_, level_ + 1);
- result_ = result_ && IndentedLine(builder_, level_ + 1);
- exit_section_(builder_, level_, marker_, NONBLANK_INDENTED_LINE, result_, false, null);
- return result_;
- }
-
- // !BlankLine
- private static boolean NonblankIndentedLine_0(PsiBuilder builder_, int level_) {
- if (!recursion_guard_(builder_, level_, "NonblankIndentedLine_0")) return false;
- boolean result_;
- Marker marker_ = enter_section_(builder_, level_, _NOT_, null);
- result_ = !BlankLine(builder_, level_ + 1);
- exit_section_(builder_, level_, marker_, null, result_, false, null);
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, "<named section>");
+ result_ = SectionHeader(builder_, level_ + 1);
+ result_ = result_ && SectionBody(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, NAMED_SECTION, result_, false, null);
return result_;
}
@@ -1094,22 +1120,21 @@ public class MarkdownParser implements PsiParser {
}
/* ********************************************************** */
- // OptionalSpace Newline !BlankLine
+ // Newline !BlankLine
static boolean NormalEndline(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "NormalEndline")) return false;
- if (!nextTokenIs(builder_, "", NEWLINE, SPACECHAR)) return false;
+ if (!nextTokenIs(builder_, NEWLINE)) return false;
boolean result_;
Marker marker_ = enter_section_(builder_);
- result_ = OptionalSpace(builder_, level_ + 1);
- result_ = result_ && consumeToken(builder_, NEWLINE);
- result_ = result_ && NormalEndline_2(builder_, level_ + 1);
+ result_ = consumeToken(builder_, NEWLINE);
+ result_ = result_ && NormalEndline_1(builder_, level_ + 1);
exit_section_(builder_, marker_, null, result_);
return result_;
}
// !BlankLine
- private static boolean NormalEndline_2(PsiBuilder builder_, int level_) {
- if (!recursion_guard_(builder_, level_, "NormalEndline_2")) return false;
+ private static boolean NormalEndline_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "NormalEndline_1")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_, level_, _NOT_, null);
result_ = !BlankLine(builder_, level_ + 1);
@@ -1153,21 +1178,27 @@ public class MarkdownParser implements PsiParser {
}
/* ********************************************************** */
- // NonindentSpace Inlines (BlankLine | TerminalEndline)
+ // Inlines (BlankLine | TerminalEndline)?
public static boolean Para(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "Para")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_, level_, _NONE_, "<para>");
- result_ = NonindentSpace(builder_, level_ + 1);
- result_ = result_ && Inlines(builder_, level_ + 1);
- result_ = result_ && Para_2(builder_, level_ + 1);
+ result_ = Inlines(builder_, level_ + 1);
+ result_ = result_ && Para_1(builder_, level_ + 1);
exit_section_(builder_, level_, marker_, PARA, result_, false, null);
return result_;
}
+ // (BlankLine | TerminalEndline)?
+ private static boolean Para_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "Para_1")) return false;
+ Para_1_0(builder_, level_ + 1);
+ return true;
+ }
+
// BlankLine | TerminalEndline
- private static boolean Para_2(PsiBuilder builder_, int level_) {
- if (!recursion_guard_(builder_, level_, "Para_2")) return false;
+ private static boolean Para_1_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "Para_1_0")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_);
result_ = BlankLine(builder_, level_ + 1);
@@ -1177,7 +1208,7 @@ public class MarkdownParser implements PsiParser {
}
/* ********************************************************** */
- // (String | Number | Spacechar)+
+ // (String | Number | Spacechar+)+
public static boolean PlainText(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "PlainText")) return false;
boolean result_;
@@ -1193,14 +1224,30 @@ public class MarkdownParser implements PsiParser {
return result_;
}
- // String | Number | Spacechar
+ // String | Number | Spacechar+
private static boolean PlainText_0(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "PlainText_0")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_);
result_ = consumeToken(builder_, STRING);
if (!result_) result_ = consumeToken(builder_, NUMBER);
- if (!result_) result_ = consumeToken(builder_, SPACECHAR);
+ if (!result_) result_ = PlainText_0_2(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // Spacechar+
+ private static boolean PlainText_0_2(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "PlainText_0_2")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, SPACECHAR);
+ int pos_ = current_position_(builder_);
+ while (result_) {
+ if (!consumeToken(builder_, SPACECHAR)) break;
+ if (!empty_element_parsed_guard_(builder_, "PlainText_0_2", pos_)) break;
+ pos_ = current_position_(builder_);
+ }
exit_section_(builder_, marker_, null, result_);
return result_;
}
@@ -1219,17 +1266,95 @@ public class MarkdownParser implements PsiParser {
}
/* ********************************************************** */
+ // Block*
+ public static boolean SectionBody(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SectionBody")) return false;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, "<section body>");
+ int pos_ = current_position_(builder_);
+ while (true) {
+ if (!Block(builder_, level_ + 1)) break;
+ if (!empty_element_parsed_guard_(builder_, "SectionBody", pos_)) break;
+ pos_ = current_position_(builder_);
+ }
+ exit_section_(builder_, level_, marker_, SECTION_BODY, true, false, null);
+ return true;
+ }
+
+ /* ********************************************************** */
+ // '$' SectionName OptionalSpace ':' OptionalSpace
+ static boolean SectionHeader(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SectionHeader")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, "$");
+ result_ = result_ && SectionName(builder_, level_ + 1);
+ result_ = result_ && OptionalSpace(builder_, level_ + 1);
+ result_ = result_ && consumeToken(builder_, ":");
+ result_ = result_ && OptionalSpace(builder_, level_ + 1);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ /* ********************************************************** */
+ // SectionNameStart | '{' OptionalSpace SectionNameStart (Spacechar+ String)* OptionalSpace '}'
+ public static boolean SectionName(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SectionName")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_, level_, _NONE_, "<section name>");
+ result_ = SectionNameStart(builder_, level_ + 1);
+ if (!result_) result_ = SectionName_1(builder_, level_ + 1);
+ exit_section_(builder_, level_, marker_, SECTION_NAME, result_, false, null);
+ return result_;
+ }
+
+ // '{' OptionalSpace SectionNameStart (Spacechar+ String)* OptionalSpace '}'
+ private static boolean SectionName_1(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SectionName_1")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = consumeToken(builder_, "{");
+ result_ = result_ && OptionalSpace(builder_, level_ + 1);
+ result_ = result_ && SectionNameStart(builder_, level_ + 1);
+ result_ = result_ && SectionName_1_3(builder_, level_ + 1);
+ result_ = result_ && OptionalSpace(builder_, level_ + 1);
+ result_ = result_ && consumeToken(builder_, "}");
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // (Spacechar+ String)*
+ private static boolean SectionName_1_3(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SectionName_1_3")) return false;
+ int pos_ = current_position_(builder_);
+ while (true) {
+ if (!SectionName_1_3_0(builder_, level_ + 1)) break;
+ if (!empty_element_parsed_guard_(builder_, "SectionName_1_3", pos_)) break;
+ pos_ = current_position_(builder_);
+ }
+ return true;
+ }
+
+ // Spacechar+ String
+ private static boolean SectionName_1_3_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SectionName_1_3_0")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = SectionName_1_3_0_0(builder_, level_ + 1);
+ result_ = result_ && consumeToken(builder_, STRING);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
// Spacechar+
- static boolean RequiredSpace(PsiBuilder builder_, int level_) {
- if (!recursion_guard_(builder_, level_, "RequiredSpace")) return false;
- if (!nextTokenIs(builder_, SPACECHAR)) return false;
+ private static boolean SectionName_1_3_0_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SectionName_1_3_0_0")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_);
result_ = consumeToken(builder_, SPACECHAR);
int pos_ = current_position_(builder_);
while (result_) {
if (!consumeToken(builder_, SPACECHAR)) break;
- if (!empty_element_parsed_guard_(builder_, "RequiredSpace", pos_)) break;
+ if (!empty_element_parsed_guard_(builder_, "SectionName_1_3_0_0", pos_)) break;
pos_ = current_position_(builder_);
}
exit_section_(builder_, marker_, null, result_);
@@ -1237,6 +1362,25 @@ public class MarkdownParser implements PsiParser {
}
/* ********************************************************** */
+ // '$'? String
+ static boolean SectionNameStart(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SectionNameStart")) return false;
+ boolean result_;
+ Marker marker_ = enter_section_(builder_);
+ result_ = SectionNameStart_0(builder_, level_ + 1);
+ result_ = result_ && consumeToken(builder_, STRING);
+ exit_section_(builder_, marker_, null, result_);
+ return result_;
+ }
+
+ // '$'?
+ private static boolean SectionNameStart_0(PsiBuilder builder_, int level_) {
+ if (!recursion_guard_(builder_, level_, "SectionNameStart_0")) return false;
+ consumeToken(builder_, "$");
+ return true;
+ }
+
+ /* ********************************************************** */
// StrongStar | StrongUnderscore
public static boolean Strong(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "Strong")) return false;
@@ -1383,34 +1527,11 @@ public class MarkdownParser implements PsiParser {
}
/* ********************************************************** */
- // (OptionalSpace Newline <<eof>>) | (OptionalSpace <<eof>>)
+ // OptionalSpace <<eof>>
static boolean TerminalEndline(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "TerminalEndline")) return false;
boolean result_;
Marker marker_ = enter_section_(builder_);
- result_ = TerminalEndline_0(builder_, level_ + 1);
- if (!result_) result_ = TerminalEndline_1(builder_, level_ + 1);
- exit_section_(builder_, marker_, null, result_);
- return result_;
- }
-
- // OptionalSpace Newline <<eof>>
- private static boolean TerminalEndline_0(PsiBuilder builder_, int level_) {
- if (!recursion_guard_(builder_, level_, "TerminalEndline_0")) return false;
- boolean result_;
- Marker marker_ = enter_section_(builder_);
- result_ = OptionalSpace(builder_, level_ + 1);
- result_ = result_ && consumeToken(builder_, NEWLINE);
- result_ = result_ && eof(builder_, level_ + 1);
- exit_section_(builder_, marker_, null, result_);
- return result_;
- }
-
- // OptionalSpace <<eof>>
- private static boolean TerminalEndline_1(PsiBuilder builder_, int level_) {
- if (!recursion_guard_(builder_, level_, "TerminalEndline_1")) return false;
- boolean result_;
- Marker marker_ = enter_section_(builder_);
result_ = OptionalSpace(builder_, level_ + 1);
result_ = result_ && eof(builder_, level_ + 1);
exit_section_(builder_, marker_, null, result_);
@@ -1418,47 +1539,6 @@ public class MarkdownParser implements PsiParser {
}
/* ********************************************************** */
- // VerbatimItem+
- public static boolean Verbatim(PsiBuilder builder_, int level_) {
- if (!recursion_guard_(builder_, level_, "Verbatim")) return false;
- boolean result_;
- Marker marker_ = enter_section_(builder_, level_, _NONE_, "<verbatim>");
- result_ = VerbatimItem(builder_, level_ + 1);
- int pos_ = current_position_(builder_);
- while (result_) {
- if (!VerbatimItem(builder_, level_ + 1)) break;
- if (!empty_element_parsed_guard_(builder_, "Verbatim", pos_)) break;
- pos_ = current_position_(builder_);
- }
- exit_section_(builder_, level_, marker_, VERBATIM, result_, false, null);
- return result_;
- }
-
- /* ********************************************************** */
- // BlankLine* NonblankIndentedLine
- public static boolean VerbatimItem(PsiBuilder builder_, int level_) {
- if (!recursion_guard_(builder_, level_, "VerbatimItem")) return false;
- boolean result_;
- Marker marker_ = enter_section_(builder_, level_, _NONE_, "<verbatim item>");
- result_ = VerbatimItem_0(builder_, level_ + 1);
- result_ = result_ && NonblankIndentedLine(builder_, level_ + 1);
- exit_section_(builder_, level_, marker_, VERBATIM_ITEM, result_, false, null);
- return result_;
- }
-
- // BlankLine*
- private static boolean VerbatimItem_0(PsiBuilder builder_, int level_) {
- if (!recursion_guard_(builder_, level_, "VerbatimItem_0")) return false;
- int pos_ = current_position_(builder_);
- while (true) {
- if (!BlankLine(builder_, level_ + 1)) break;
- if (!empty_element_parsed_guard_(builder_, "VerbatimItem_0", pos_)) break;
- pos_ = current_position_(builder_);
- }
- return true;
- }
-
- /* ********************************************************** */
// Spacechar | Newline
public static boolean Whitespace(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "Whitespace")) return false;
diff --git a/src/Markdown/_MarkdownLexer.flex b/gen/org/jetbrains/markdown/lexer/_MarkdownLexer.flex
index 0a15e41a..f5aab899 100644
--- a/src/Markdown/_MarkdownLexer.flex
+++ b/gen/org/jetbrains/markdown/lexer/_MarkdownLexer.flex
@@ -22,7 +22,7 @@ import static org.jetbrains.markdown.MarkdownElementTypes.*;
Newline="\r"|"\n"|"\r\n"
Spacechar=[\ \t\f]
Number=[0-9]+(\.[0-9]*)?
-String=[^~\*_`&\[\]()<!#\\ \t\n\r]+
+String=[^~:{}$\*_`&\[\]()<!#\\ \t\n\r]+
AnyChar=.
Line=!'\r' !'\n' .* {Newline}
@@ -32,8 +32,10 @@ Line=!'\r' !'\n' .* {Newline}
{Newline} { return NEWLINE; }
"\\357\\273\\277" { return BOM; }
+
{Number} { return NUMBER; }
{String} { return STRING; }
+
{AnyChar} { return ANYCHAR; }
[^] { return com.intellij.psi.TokenType.BAD_CHARACTER; }
diff --git a/gen/org/jetbrains/markdown/lexer/_MarkdownLexer.java b/gen/org/jetbrains/markdown/lexer/_MarkdownLexer.java
index 0052e3ea..c84a83d8 100644
--- a/gen/org/jetbrains/markdown/lexer/_MarkdownLexer.java
+++ b/gen/org/jetbrains/markdown/lexer/_MarkdownLexer.java
@@ -1,4 +1,4 @@
-/* The following code was generated by JFlex 1.4.3 on 9/25/14 10:26 PM */
+/* The following code was generated by JFlex 1.4.3 on 9/29/14 3:24 PM */
package org.jetbrains.markdown.lexer;
@@ -10,8 +10,8 @@ import static org.jetbrains.markdown.MarkdownElementTypes.*;
/**
* This class is a scanner generated by
* <a href="http://www.jflex.de/">JFlex</a> 1.4.3
- * on 9/25/14 10:26 PM from the specification file
- * <tt>/Users/orangy/Projects/dokka/src/Markdown/_MarkdownLexer.flex</tt>
+ * on 9/29/14 3:24 PM from the specification file
+ * <tt>/Users/orangy/Projects/dokka/gen/org/jetbrains/markdown/lexer/_MarkdownLexer.flex</tt>
*/
<