From 236e9e39d478e0b75b9b650ebb5aeddaadd917da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guilhem=20Faur=C3=A9?= Date: Wed, 26 Apr 2023 11:13:47 +0200 Subject: [PATCH] simplified grammar, it parses ! --- spip2md/spip.lark | 47 +++++++++++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/spip2md/spip.lark b/spip2md/spip.lark index 35be3f6..e804880 100644 --- a/spip2md/spip.lark +++ b/spip2md/spip.lark @@ -1,29 +1,38 @@ -section: /\n\r?/ TAG* ( paragraph | heading | list | table | SEPARATOR ) TAG* /\n\r?/ - -TAG: "<" [ "/" ] PURE_TEXT [ "|" PURE_TEXT ] ">" [ /\n\r?/ ] - -paragraph: format_text - -heading: "{{{" format_text "}}}" +section: list + | table + | SEPARATOR + | N+ + | heading | paragraph 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)+ +unordered_list: ( N "-*" list_element )+ +unordered_sublist: ( N "-**" list_element )+ +ordered_list: ( N "-#" list_element )+ +ordered_sublist: ( N "-##" list_element )+ +list_element: text -table: row+ -row: /\n\r?\|/ cell+ -cell: format_text "|" +table: ( N row )+ +row: ( "|" cell )+ "|" +cell: text -format_text: ( italic | bold | link | PURE_TEXT )+ +SEPARATOR: N /-{4,}/ -italic: "{" PURE_TEXT | ( " " bold " " ) "}" -bold: "{{" PURE_TEXT | ( " " italic " " ) "}}" +N: /\r/? /\n/ + +heading: "{{{" text "}}}" + +paragraph: text + +text: ( italic | bold | link | PURE_TEXT )+ + +italic: "{" ( PURE_TEXT | link | bold_in_italic )+ "}" +bold: "{{" ( PURE_TEXT | link | italic_in_bold )+ "}}" +bold_in_italic: "{{" ( PURE_TEXT | link ) "}}" +italic_in_bold: "{" ( PURE_TEXT | link ) "}" link: internal_link | external_link @@ -35,6 +44,4 @@ external_link: "[" PURE_TEXT "->" /[a-z]{3,6}:\/\// PURE_TEXT "]" footnote: "[[" PURE_TEXT "]]" glossary: "[?" PURE_TEXT "]" -PURE_TEXT: /[^\{\<\[\}\>\]]+/ - -SEPARATOR: /-{4,}/ +PURE_TEXT: /[^\{\}]+/