lark syntax in separate file

This commit is contained in:
Guilhem Fauré 2023-04-25 15:50:08 +02:00
parent bb4c8ccb23
commit c399439e32
2 changed files with 53 additions and 56 deletions

View File

@ -1,61 +1,8 @@
from os import path
from lark import Lark from lark import Lark
spipParser = Lark( spipParser = Lark(open(path.dirname(__file__) + "/spip.lark"), start="section")
r"""
section: /\n\r?/
( paragraph
| heading
| list
| table
| quote
| SEPARATOR
) /\n\r?/
paragraph: format_text
heading: "{{{" format_text "}}}"
list: unordered_list
| unordered_sublist
| ordered_list
| ordered_sublist
unordered_list: (/\n\r?-* / format_text)+
unordered_sublist: (/\n\r?-*{2,7} / format_text)+
ordered_list: (\/n/r?-# / format_text)+
ordered_sublist: (\/n/r?-#{2,7} / format_text)+
table: row+
row: /\n\r?\|/ cell+
cell: format_text "|"
quote: "<quote>" format_text "</quote>"
format_text: (
| link
| PURE_TEXT
)+
italic: "{" PURE_TEXT "}"
bold: "{{" PURE_TEXT "}}"
bold_italic: "{{ {" PURE_TEXT "} }}" | "{ {{" PURE_TEXT "}} }"
link: internal_link
| external_link
| footnote
| glossary
internal_link: "[" PURE_TEXT "->" PURE_TEXT "]"
external_link: "[" PURE_TEXT "->" /[a-z]{3,6}:\/\// PURE_TEXT "]"
footnote: "[[" PURE_TEXT "]]"
footnote: "[?" PURE_TEXT "]"
PURE_TEXT: /[^\s\{\-\|\<\[\}\>\]][^\n\r\{\<\[\}\]]*/
SEPARATOR: /-{4,}/
""",
start="section",
)
class content: class content:

50
spip2md/spip.lark Normal file
View File

@ -0,0 +1,50 @@
section: /\n\r?/
( paragraph
| heading
| list
| table
| quote
| SEPARATOR
) /\n\r?/
paragraph: format_text
heading: "{{{" format_text "}}}"
list: unordered_list
| unordered_sublist
| ordered_list
| ordered_sublist
unordered_list: (/\n\r?-* / format_text)+
unordered_sublist: (/\n\r?-*{2,7} / format_text)+
ordered_list: (\/n/r?-# / format_text)+
ordered_sublist: (\/n/r?-#{2,7} / format_text)+
table: row+
row: /\n\r?\|/ cell+
cell: format_text "|"
quote: "<quote>" format_text "</quote>"
format_text: ( link
| PURE_TEXT
)+
italic: "{" PURE_TEXT "}"
bold: "{{" PURE_TEXT "}}"
bold_italic: "{{ {" PURE_TEXT "} }}" | "{ {{" PURE_TEXT "}} }"
link: internal_link
| external_link
| footnote
| glossary
internal_link: "[" PURE_TEXT "->" PURE_TEXT "]"
external_link: "[" PURE_TEXT "->" /[a-z]{3,6}:\/\// PURE_TEXT "]"
footnote: "[[" PURE_TEXT "]]"
footnote: "[?" PURE_TEXT "]"
PURE_TEXT: /[^\s\{\-\|\<\[\}\>\]][^\n\r\{\<\[\}\]]*/
SEPARATOR: /-{4,}/