BNF of Markdown, Doc ::= Element* Element ::= Paragraph | Header | List | Blockquote | Line | CodeBlock | BlockHtml | Reference Paragraph ::= Inline* Linefeed{2,} Inline ::= (Text | Emphasis | Link | Image | CoseSpan ) Header ::= Setext-Style | Atx-Style Setext-Style ::= Text Linefeed ('=' | '-')+ Atx-Style ::= '#'{1,6} Text '#'* List ::= (Number '.' SP+ Inline+) (Linefeed List)* | ('*' SP+ Inline+) (Linefeed List)* Blockquote ::= '>' SP* Paragraph | '>' SP* Linefeed (Blockquote)* Line ::= ( (SP* '-') | (SP* '*') ){3,} Linefeed CodeBlock ::= SP{4,} Inline+ Linefeed BlockHtml ::= '<' (div|p|table|pre) '>' (Text | BlockHtml)+ '<' '/' (div|p|table|pre) '>' Text ::= ANY Emphasis ::= '*' Text '*' | '**' Text '**' | '_' Text '_' | '__' Text '__' Link ::= '[' ID ']' '(' URL ('"' Text '"')? ')' ID ::= Text Image ::= '!' '[' ID ']' '(' URL ('"' Text '"')? ')' Reference ::= SP{0,3} '[' ID ']' ':' URL ('"' Text '"')?実装にある正規表現を追ったわけではないのでかなり微妙かつ、BNFの書き方をあんまり良く知らないので正しくはないかも。ルールに書いてないもので、SPとANYはそれぞれスペースと文字(二つ以上続く改行を除く)。Linefeedは改行で。
> Markdownに詳しい方
間違っている可能性が大いにあるので突っ込み大歓迎ですm(_ _)m
No comments:
Post a Comment