{ psiPackage = 'org.jetbrains.markdown' psiImplPackage = 'org.jetbrains.markdown.impl' parserClass="org.jetbrains.markdown.MarkdownParser" parserUtilClass="org.jetbrains.dokka.Markdown.GeneratedParserUtilBase" elementTypeHolderClass = 'org.jetbrains.markdown.MarkdownElementTypes' tokenTypeClass = 'org.jetbrains.dokka.Markdown.MarkdownTokenType' generatePsi = false tokens=[ BOM EOL EOP Number SPECIAL Word ] } Document ::= BOM? Whitespace* AnonymousSection? (Whitespace* NamedSection)* AnonymousSection ::= SectionBody NamedSection ::= SectionHeader SectionBody private SectionHeader ::= '$' SectionName OptionalSpace ':' OptionalSpace SectionName ::= SectionNameStart | '{' OptionalSpace SectionNameStart (Space+ Word)* OptionalSpace '}' private SectionNameStart ::= '$'? Word SectionBody::= Block* Unused ::= Special BlankLine ::= OptionalSpace EOL Whitespace ::= Space | EOL | EOP private OptionalSpace ::= Space* private NonindentSpace ::= (" " | " " | " ")? EndLine ::= TerminalEndline | NormalEndline private NormalEndline ::= EOL !BlankLine private TerminalEndline ::= OptionalSpace <> private Indent ::= "\t" | " " // ---- BLOCKS ---- Block ::= BlankLine* ( OrderedList | BulletList | HorizontalRule | Directive | Para ) Para ::= Inlines (EOP | Space* <>)? HorizontalRule ::= NonindentSpace ( '*' OptionalSpace '*' OptionalSpace '*' (OptionalSpace '*')* | '-' OptionalSpace '-' OptionalSpace '-' (OptionalSpace '-')* | '_' OptionalSpace '_' OptionalSpace '_' (OptionalSpace '_')*) OptionalSpace EOL BlankLine+ Directive ::= '{' DirectiveName Space+ DirectiveParams '}' DirectiveName ::= Word DirectiveParams ::= PlainText Bullet ::= !HorizontalRule NonindentSpace ('+' | '*' | '-') Space+ Enumerator ::= NonindentSpace Number '.' Space+ BulletList ::= &Bullet List OrderedList ::= &Enumerator List private List ::= (ListItem BlankLine*)+ ListItem ::= (Bullet | Enumerator) ListBlock ( ListContinuationBlock )* ListBlock ::= !BlankLine Inlines ( ListBlockLine )* ListBlockLine ::= !BlankLine !(Indent? (Bullet | Enumerator)) !HorizontalRule Indent? Inlines ListContinuationBlock ::= BlankLine* (Indent ListBlock)+ // ---- INLINES ---- private Inlines ::= (!EndLine Inline | EndLine &Inline )+ EndLine? Inline ::= Strong | Emph | Code | Link | PlainText PlainText ::= (Word | Number | Space | ':')+ Emph ::= EmphStar | EmphUnderscore private EmphStar ::= '*' !Whitespace (!'*' Inline)+ '*' private EmphUnderscore ::= '_' !Whitespace (!'_' Inline)+ '_' Code ::= '`' !Whitespace (!'`' Inline)+ '`' Strong ::= StrongStar | StrongUnderscore StrongStar ::= '**' !Whitespace (!'**' Inline)+ '**' StrongUnderscore ::= '__' !Whitespace (!'__' Inline)+ '__' Link ::= '[' Target ']' ('(' Href ')')? Target ::= Word+ Href ::= (Word | Number | ':' | '/')+