2023-04-28 15:44:50 +02:00
|
|
|
// Flexible SPIP Markup grammar for Lark parser
|
|
|
|
start: _N* block ( _N+ block )* _N*
|
2023-04-27 11:39:59 +02:00
|
|
|
|
2023-04-27 14:45:36 +02:00
|
|
|
?block: paragraph
|
2023-04-27 11:39:59 +02:00
|
|
|
| heading
|
2023-04-27 14:45:36 +02:00
|
|
|
| list
|
|
|
|
| table
|
2023-04-28 15:44:50 +02:00
|
|
|
| tag
|
|
|
|
| HORIZONTAL_RULE -> horizontal_rule
|
|
|
|
|
|
|
|
HORIZONTAL_RULE: /----+/
|
2023-04-26 11:13:47 +02:00
|
|
|
|
2023-04-27 17:33:39 +02:00
|
|
|
?list: unordered_list
|
|
|
|
| ordered_list
|
2023-04-27 14:45:36 +02:00
|
|
|
|
2023-04-28 15:44:50 +02:00
|
|
|
unordered_list: ( _UL list_item _N )+
|
|
|
|
ordered_list: ( _OL list_item _N )+
|
|
|
|
list_item: _inline{TEXT}+
|
|
|
|
_UL: /-\*|-[^#-]/
|
|
|
|
_OL: /-#/
|
|
|
|
|
2023-04-28 16:06:28 +02:00
|
|
|
table.1: ( _TBL_META table_metadata "||" _N )? ( table_row _N )+
|
2023-04-28 15:44:50 +02:00
|
|
|
table_metadata: table_title "|" table_description
|
|
|
|
table_title: _inline{TABLE_TEXT}
|
|
|
|
table_description: _inline{TABLE_TEXT}
|
|
|
|
table_row: ( _TBL table_cell )+ "|"
|
|
|
|
table_cell: _inline{TABLE_TEXT}
|
2023-04-28 16:06:28 +02:00
|
|
|
_TBL_META.1: "||"
|
|
|
|
_TBL.1: "|"
|
2023-04-28 15:44:50 +02:00
|
|
|
|
|
|
|
heading: _H _inline{MARKED_TEXT}+ "}}}"
|
|
|
|
_H: "{{{"
|
|
|
|
|
2023-04-28 15:46:48 +02:00
|
|
|
paragraph.-1: ( _inline{TEXT} _N? )+
|
2023-04-28 15:44:50 +02:00
|
|
|
|
|
|
|
_inline{text}: text
|
|
|
|
| emphasis
|
|
|
|
| strong
|
|
|
|
| anchor
|
|
|
|
| tag
|
|
|
|
|
2023-04-28 16:02:00 +02:00
|
|
|
TEXT.-1: /(?:[^\r\n\{](?![^\[\n\r]*->))+/
|
|
|
|
TABLE_TEXT.-1: /[^\|\r\n\{]+/
|
|
|
|
MARKED_TEXT.-1: /[^\}\r\n\{]+/
|
2023-04-28 15:44:50 +02:00
|
|
|
|
|
|
|
strong: _B ( _inline{MARKED_TEXT} )+ ( "}}" | _N )
|
|
|
|
emphasis: _I ( _inline{MARKED_TEXT} )+ ( "}" | _N )
|
|
|
|
_B: /{{(?=[^\{])/
|
|
|
|
_I: /{(?=[^\{])/
|
|
|
|
|
|
|
|
?anchor: anchor_footnote
|
|
|
|
| anchor_wikipedia
|
|
|
|
| anchor_normal -> anchor
|
|
|
|
|
|
|
|
anchor_footnote: _FOOT HREF "]]"
|
|
|
|
anchor_wikipedia: _WIKI HREF "]"
|
|
|
|
anchor_normal: _A A_TEXT "->" HREF "]"
|
|
|
|
_FOOT: /\[\[/
|
|
|
|
_WIKI: /\[\?/
|
|
|
|
_A: /\[(?=[^\[\n\r]+->)/
|
|
|
|
HREF: _PURE_TEXT
|
|
|
|
A_TEXT: /[^\r\n\{]+?(?=->)/
|
|
|
|
|
2023-04-28 16:02:00 +02:00
|
|
|
tag.1: start_tag block? end_tag?
|
2023-04-28 15:44:50 +02:00
|
|
|
|
2023-04-28 16:06:28 +02:00
|
|
|
start_tag: _STAG TAG_NAME ( "|" TAG_OPTION )* ">"
|
|
|
|
end_tag: _ETAG TAG_NAME ( "|" TAG_OPTION )* ">"
|
2023-04-28 16:02:00 +02:00
|
|
|
_ETAG.1: /<\/(?=[0-9A-Za-z_:\|\/\-\.]+>)/
|
|
|
|
_STAG.1: /<(?=[0-9A-Za-z_:\|\/\-\.]+>)/
|
2023-04-28 15:44:50 +02:00
|
|
|
TAG_NAME: _PURE_TEXT
|
|
|
|
TAG_OPTION: _PURE_TEXT
|
2023-04-26 15:02:33 +02:00
|
|
|
|
2023-04-27 14:45:36 +02:00
|
|
|
_N: /\r?\n/
|
2023-04-28 15:44:50 +02:00
|
|
|
_PURE_TEXT: /[0-9A-Za-z_:\/\-\.]+/
|