From 7e56c94c03727894dec1b65da923bb4bd532df52 Mon Sep 17 00:00:00 2001 From: Jonas Smedegaard Date: Fri, 23 May 2025 07:07:04 +0200 Subject: move syntax diagrams to subdir --- Makefile | 2 +- _def_dia.qmd | 47 ------------------------------------ _markdown.qmd | 24 +++++++++---------- _syntax.qmd | 47 ++++++++++++++++++++++++++++++++++++ def.peg | 56 ------------------------------------------- def_AnnotatedWords.py | 18 -------------- def_AnnotatedWordsX.py | 23 ------------------ def_Block.py | 18 -------------- def_HardBreak.py | 15 ------------ def_Header.py | 26 -------------------- def_LinkDefinition.py | 24 ------------------- def_LinkLabel.py | 17 ------------- def_LinkTitle.py | 35 --------------------------- def_LinkedWords.py | 38 ----------------------------- def_List.py | 30 ----------------------- def_Markdown.py | 28 ---------------------- def_NEWLINE.py | 17 ------------- def_PRINTABLES.py | 13 ---------- def_Paragraph.py | 23 ------------------ def_PlainWords.py | 20 ---------------- def_SEMPREFIX.py | 13 ---------- def_SPACE.py | 13 ---------- def_SemWords.py | 24 ------------------- def_StyledWords.py | 29 ---------------------- def_Uri.py | 20 ---------------- def_Words.py | 18 -------------- def__.py | 24 ------------------- report.qmd | 4 ++-- syntax/def_AnnotatedWords.py | 18 ++++++++++++++ syntax/def_AnnotatedWordsX.py | 23 ++++++++++++++++++ syntax/def_Block.py | 18 ++++++++++++++ syntax/def_HardBreak.py | 15 ++++++++++++ syntax/def_Header.py | 26 ++++++++++++++++++++ syntax/def_LinkDefinition.py | 24 +++++++++++++++++++ syntax/def_LinkLabel.py | 17 +++++++++++++ syntax/def_LinkTitle.py | 35 +++++++++++++++++++++++++++ syntax/def_LinkedWords.py | 38 +++++++++++++++++++++++++++++ syntax/def_List.py | 30 +++++++++++++++++++++++ syntax/def_Markdown.py | 28 ++++++++++++++++++++++ syntax/def_NEWLINE.py | 17 +++++++++++++ syntax/def_PRINTABLES.py | 13 ++++++++++ syntax/def_Paragraph.py | 23 ++++++++++++++++++ syntax/def_PlainWords.py | 20 ++++++++++++++++ syntax/def_SEMPREFIX.py | 13 ++++++++++ syntax/def_SPACE.py | 13 ++++++++++ syntax/def_SemWords.py | 24 +++++++++++++++++++ syntax/def_StyledWords.py | 29 ++++++++++++++++++++++ syntax/def_Uri.py | 20 ++++++++++++++++ syntax/def_Words.py | 18 ++++++++++++++ syntax/def__.py | 24 +++++++++++++++++++ 50 files changed, 548 insertions(+), 604 deletions(-) delete mode 100644 _def_dia.qmd create mode 100644 _syntax.qmd delete mode 100644 def.peg delete mode 100755 def_AnnotatedWords.py delete mode 100755 def_AnnotatedWordsX.py delete mode 100755 def_Block.py delete mode 100755 def_HardBreak.py delete mode 100755 def_Header.py delete mode 100755 def_LinkDefinition.py delete mode 100755 def_LinkLabel.py delete mode 100755 def_LinkTitle.py delete mode 100755 def_LinkedWords.py delete mode 100755 def_List.py delete mode 100755 def_Markdown.py delete mode 100755 def_NEWLINE.py delete mode 100755 def_PRINTABLES.py delete mode 100755 def_Paragraph.py delete mode 100755 def_PlainWords.py delete mode 100755 def_SEMPREFIX.py delete mode 100755 def_SPACE.py delete mode 100755 def_SemWords.py delete mode 100755 def_StyledWords.py delete mode 100755 def_Uri.py delete mode 100755 def_Words.py delete mode 100755 def__.py create mode 100755 syntax/def_AnnotatedWords.py create mode 100755 syntax/def_AnnotatedWordsX.py create mode 100755 syntax/def_Block.py create mode 100755 syntax/def_HardBreak.py create mode 100755 syntax/def_Header.py create mode 100755 syntax/def_LinkDefinition.py create mode 100755 syntax/def_LinkLabel.py create mode 100755 syntax/def_LinkTitle.py create mode 100755 syntax/def_LinkedWords.py create mode 100755 syntax/def_List.py create mode 100755 syntax/def_Markdown.py create mode 100755 syntax/def_NEWLINE.py create mode 100755 syntax/def_PRINTABLES.py create mode 100755 syntax/def_Paragraph.py create mode 100755 syntax/def_PlainWords.py create mode 100755 syntax/def_SEMPREFIX.py create mode 100755 syntax/def_SPACE.py create mode 100755 syntax/def_SemWords.py create mode 100755 syntax/def_StyledWords.py create mode 100755 syntax/def_Uri.py create mode 100755 syntax/def_Words.py create mode 100755 syntax/def__.py diff --git a/Makefile b/Makefile index 83b764d..04528a3 100644 --- a/Makefile +++ b/Makefile @@ -17,7 +17,7 @@ DIFF = git --no-pager diff --no-index PANDOC = pandoc --from commonmark #PANDOC = quarto pandoc --from commonmark -SYNTAX_DIAGRAMS := $(patsubst %.py,%.svg,$(wildcard def_*.py)) +SYNTAX_DIAGRAMS := $(patsubst %.py,%.svg,$(wildcard syntax/def_*.py)) WORKFLOW_DIAGRAMS := $(patsubst %.cwl,%.svg,$(wildcard workflow/phase*.cwl)) diff --git a/_def_dia.qmd b/_def_dia.qmd deleted file mode 100644 index 8dc81ac..0000000 --- a/_def_dia.qmd +++ /dev/null @@ -1,47 +0,0 @@ -Subsets of Markdown syntax structure -expressed as syntax diagrams (a.k.a. railroad diagrams), -involving the negative predicate from PEG notation. - -![Markdown](def_Markdown.svg) - -![Block](def_Block.svg) - -![Header](def_Header.svg) - -![List](def_List.svg) - -![LinkDefinition](def_LinkDefinition.svg) - -![Paragraph](def_Paragraph.svg) - -![Words](def_Words.svg) - -![StyledWords](def_StyledWords.svg) - -![LinkedWords](def_LinkedWords.svg) - -![AnnotatedWords](def_AnnotatedWords.svg) - -![AnnotatedWords_sem](def_AnnotatedWordsX.svg) - -![LinkLabel](def_LinkLabel.svg) - -![LinkTitle](def_LinkTitle.svg) - -![SemWords](def_SemWords.svg) - -![PlainWords](def_PlainWords.svg) - -![Url](def_Uri.svg) - -![HardBreak](def_HardBreak.svg) - -![_](def__.svg) - -![PRINTABLES](def_PRINTABLES.svg) - -![SEMPREFIX](def_SEMPREFIX.svg) - -![SPACE](def_SPACE.svg) - -![NEWLINE](def_NEWLINE.svg) diff --git a/_markdown.qmd b/_markdown.qmd index 4ce8bb3..6943b19 100644 --- a/_markdown.qmd +++ b/_markdown.qmd @@ -46,7 +46,7 @@ where the possible order of elements are laid out like trains on rails, as seen in @fig-def-Markdown. -![Syntax of `Markdown`.](def_Markdown.svg){#fig-def-Markdown} +![Syntax of `Markdown`.](syntax/def_Markdown.svg){#fig-def-Markdown} Here is an example: @@ -69,11 +69,11 @@ See @fig-def-blocks for syntax diagrams for those block types. ::: {#fig-def-blocks} -![](def_Block.svg) +![](syntax/def_Block.svg) -![](def_Header.svg) +![](syntax/def_Header.svg) -![](def_Paragraph.svg) +![](syntax/def_Paragraph.svg) Syntax of `Block`, `Header` and `Paragraph`. @@ -107,13 +107,13 @@ Se @fig-def-words for their syntax diagrams. ::: {#fig-def-words} -![](def_StyledWords.svg) +![](syntax/def_StyledWords.svg) -![](def_LinkedWords.svg) +![](syntax/def_LinkedWords.svg) -![](def_AnnotatedWords.svg) +![](syntax/def_AnnotatedWords.svg) -![](def_PlainWords.svg) +![](syntax/def_PlainWords.svg) Syntax of `StyledWords`, `LinkedWords`, `AnnotatedWords` and `PlainWords`. @@ -126,7 +126,7 @@ consisting of list items, each containing a block (@fig-def-List). -![Syntax of `List`.](def_List.svg){#fig-def-List} +![Syntax of `List`.](syntax/def_List.svg){#fig-def-List} --> @@ -157,7 +157,7 @@ as in @fig-def-extensions. ::: {#fig-def-extensions} -![](def_AnnotatedWordsX.svg) +![](syntax/def_AnnotatedWordsX.svg) Syntax of `AnnotatedWords` and `LinkedWords`, extended with `SemWords`. @@ -175,9 +175,9 @@ See @fig-def-additions for their syntax diagrams. ::: {#fig-def-additions} -![](def_SemWords.svg) +![](syntax/def_SemWords.svg) -![](def_SEMPREFIX.svg) +![](syntax/def_SEMPREFIX.svg) Syntax of `SemWords`, `Curie`, `SEMPREFIX` and `NAME`. diff --git a/_syntax.qmd b/_syntax.qmd new file mode 100644 index 0000000..49b8734 --- /dev/null +++ b/_syntax.qmd @@ -0,0 +1,47 @@ +Subsets of Markdown syntax structure +expressed as syntax diagrams (a.k.a. railroad diagrams), +involving the negative predicate from PEG notation. + +![Markdown](syntax/def_Markdown.svg) + +![Block](syntax/def_Block.svg) + +![Header](syntax/def_Header.svg) + +![List](syntax/def_List.svg) + +![LinkDefinition](syntax/def_LinkDefinition.svg) + +![Paragraph](syntax/def_Paragraph.svg) + +![Words](syntax/def_Words.svg) + +![StyledWords](syntax/def_StyledWords.svg) + +![LinkedWords](syntax/def_LinkedWords.svg) + +![AnnotatedWords](syntax/def_AnnotatedWords.svg) + +![AnnotatedWords_sem](syntax/def_AnnotatedWordsX.svg) + +![LinkLabel](syntax/def_LinkLabel.svg) + +![LinkTitle](syntax/def_LinkTitle.svg) + +![SemWords](syntax/def_SemWords.svg) + +![PlainWords](syntax/def_PlainWords.svg) + +![Url](syntax/def_Uri.svg) + +![HardBreak](syntax/def_HardBreak.svg) + +![_](syntax/def__.svg) + +![PRINTABLES](syntax/def_PRINTABLES.svg) + +![SEMPREFIX](syntax/def_SEMPREFIX.svg) + +![SPACE](syntax/def_SPACE.svg) + +![NEWLINE](syntax/def_NEWLINE.svg) diff --git a/def.peg b/def.peg deleted file mode 100644 index e40610f..0000000 --- a/def.peg +++ /dev/null @@ -1,56 +0,0 @@ -# Subsets of Markdown syntax structure -# expressed in parsing expression grammar (PEG) notation. -# -# Copyright 2025, Jonas Smedegaard -# SPDX-License-Identifier: GPL-3+ - -# Document -Markdown <- ('---' NEWLINE MetaBlock* '---' NEWLINE)? Block* - -# Block elements -Block <- Header - / List - / LinkDefinition - / Paragraph -Header <- '#'+ SPACE* !NEWLINE Words? SPACE* NEWLINE -List <- ([-*]+ / [[:digit:]]+ [).]) (_ (List / Words))? NEWLINE -LinkDefinition <- LinkLabel ':' _? Uri (_ LinkTitle)? NEWLINE -Paragraph <- Words (HardBreak Words)* NEWLINE+ - -# Inline elements -Words <- StyledWords - / LinkedWords - / AnnotatedWords - / PlainWords -StyledWords <- '**' Words '**' - / '*' Words '*' - / '_' Words '_' -LinkedWords <- '[' Words ']' '(' ((Uri _)? LinkTitle / Uri) ')' - / '[' Words ']' LinkLabel - / LinkLabel -AnnotatedWords <- '[' Words ']' '{' ![{}] PlainWords '}' -LinkLabel <- '[' _? ![\[\]] PlainWords _? ']' -LinkTitle <- '"' _? !'"' _? PlainWords _? '"' - / "'" _? !"'" PlainWords _? "'" - / "(" _? ![()] PlainWords _? ")" -PlainWords <- PRINTABLES (_ PRINTABLES)* -Uri <- '<' ![<>] PRINTABLES? '>' - / ![<>] PRINTABLES -HardBreak <- SPACE SPACE+ NEWLINE -_ <- SPACE+ - / SPACE? NEWLINE SPACE? SPACE? SPACE? - -# Terminals -PRINTABLES <- [[:graph:]]+ -SPACE <- ' ' -NEWLINE <- '\r\n' - / '\n' - / '\r' - -# Semantic Markdown -AnnotatedWordsX <- '[' Words ']' - ('{' (SemWords / ![{}] PlainWords) '}') -SemWords <- SEMPREFIX '<' ![<>] PRINTABLES '>' - / SEMPREFIX Curie -Curie <- NAME? ':' NAME? -SEMPREFIX <- [.#] diff --git a/def_AnnotatedWords.py b/def_AnnotatedWords.py deleted file mode 100755 index 8449ace..0000000 --- a/def_AnnotatedWords.py +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/python3 - -# Copyright 2025, Jonas Smedegaard -# SPDX-License-Identifier: GPL-3+ - -from os.path import basename, splitext -from railroad import * - -Diagram( - "[", - NonTerminal("Words"), - "]", - "{", - NonTerminal('![{}] PlainWords'), - "}", - type="complex" -).writeStandalone( - open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/def_AnnotatedWordsX.py b/def_AnnotatedWordsX.py deleted file mode 100755 index a90aaf6..0000000 --- a/def_AnnotatedWordsX.py +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/python3 - -# Copyright 2025, Jonas Smedegaard -# SPDX-License-Identifier: GPL-3+ - -from os.path import basename, splitext -from railroad import * - -Diagram( - "[", - NonTerminal("Words"), - "]", - "{", - Choice(0, - Group( - NonTerminal('SemWords'), - ), - NonTerminal('![{}] PlainWords'), - ), - "}", - type="complex" -).writeStandalone( - open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/def_Block.py b/def_Block.py deleted file mode 100755 index b44c121..0000000 --- a/def_Block.py +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/python3 - -# Copyright 2025, Jonas Smedegaard -# SPDX-License-Identifier: GPL-3+ - -from os.path import basename, splitext -from railroad import * - -Diagram( - Choice(0, - NonTerminal("Header"), - NonTerminal("List"), - NonTerminal("LinkDefinition"), - NonTerminal("Paragraph") - ), - type="complex" -).writeStandalone( - open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/def_HardBreak.py b/def_HardBreak.py deleted file mode 100755 index b39251b..0000000 --- a/def_HardBreak.py +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/python3 - -# Copyright 2025, Jonas Smedegaard -# SPDX-License-Identifier: GPL-3+ - -from os.path import basename, splitext -from railroad import * - -Diagram( - NonTerminal("SPACE"), - OneOrMore(NonTerminal("SPACE")), - NonTerminal("NEWLINE"), - type="complex" -).writeStandalone( - open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/def_Header.py b/def_Header.py deleted file mode 100755 index f8c1935..0000000 --- a/def_Header.py +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/python3 - -# Copyright 2025, Jonas Smedegaard -# SPDX-License-Identifier: GPL-3+ - -from os.path import basename, splitext -from railroad import * - -Diagram( - OneOrMore('#'), - Choice(0, - Sequence( - OneOrMore(NonTerminal("SPACE")) - ), - Skip() - ), - Choice(0, - Sequence( - NonTerminal("!NEWLINE Words") - ), - Skip() - ), - NonTerminal("NEWLINE"), - type="complex" -).writeStandalone( - open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/def_LinkDefinition.py b/def_LinkDefinition.py deleted file mode 100755 index c340fe0..0000000 --- a/def_LinkDefinition.py +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/python3 - -# Copyright 2025, Jonas Smedegaard -# SPDX-License-Identifier: GPL-3+ - -from os.path import basename, splitext -from railroad import * - -Diagram( - NonTerminal("LinkLabel"), - ":", - Choice(0, NonTerminal("_"), Skip()), - NonTerminal("Uri"), - Choice(0, - Sequence( - NonTerminal("_"), - NonTerminal("LinkTitle") - ), - Skip() - ), - NonTerminal("NEWLINE"), - type="complex" -).writeStandalone( - open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/def_LinkLabel.py b/def_LinkLabel.py deleted file mode 100755 index 869e353..0000000 --- a/def_LinkLabel.py +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/python3 - -# Copyright 2025, Jonas Smedegaard -# SPDX-License-Identifier: GPL-3+ - -from os.path import basename, splitext -from railroad import * - -Diagram( - "[", - Optional(NonTerminal("_"), True), - NonTerminal("![\\[\\]] PlainWords"), - Optional(NonTerminal("_"), True), - "]", - type="complex" -).writeStandalone( - open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/def_LinkTitle.py b/def_LinkTitle.py deleted file mode 100755 index beed133..0000000 --- a/def_LinkTitle.py +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/python3 - -# Copyright 2025, Jonas Smedegaard -# SPDX-License-Identifier: GPL-3+ - -from os.path import basename, splitext -from railroad import * - -Diagram( - Choice(0, - Sequence( - '"', - Optional(NonTerminal("_"), True), - NonTerminal("!'\"' PlainWords"), - Optional(NonTerminal("_"), True), - '"', - ), - Sequence( - "'", - Optional(NonTerminal("_"), True), - NonTerminal("!\"'\" PlainWords"), - Optional(NonTerminal("_"), True), - "'", - ), - Sequence( - "(", - Optional(NonTerminal("_"), True), - NonTerminal("![()] PlainWords"), - Optional(NonTerminal("_"), True), - ")", - ) - ), - type="complex" -).writeStandalone( - open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/def_LinkedWords.py b/def_LinkedWords.py deleted file mode 100755 index d9d7301..0000000 --- a/def_LinkedWords.py +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/python3 - -# Copyright 2025, Jonas Smedegaard -# SPDX-License-Identifier: GPL-3+ - -from os.path import basename, splitext -from railroad import * - -Diagram( - Choice(0, - Sequence( - "[", - NonTerminal("Words"), - "]", - Choice(0, - Sequence( - "(", - Choice(0, - Sequence( - NonTerminal("Uri"), - NonTerminal("_"), - NonTerminal("LinkTitle") - ), - NonTerminal("Uri"), - NonTerminal("LinkTitle") - ), - ")" - ), - NonTerminal("LinkLabel") - ) - ), - Sequence( - NonTerminal("LinkLabel") - ) - ), - type="complex" -).writeStandalone( - open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/def_List.py b/def_List.py deleted file mode 100755 index 087727e..0000000 --- a/def_List.py +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/python3 - -# Copyright 2025, Jonas Smedegaard -# SPDX-License-Identifier: GPL-3+ - -from os.path import basename, splitext -from railroad import * - -Diagram( - Choice(0, - "[-*]", - Sequence( - "[[:digit:]]+", - "[).]", - ) - ), - Choice(0, - Sequence( - NonTerminal("_"), - Choice(0, - NonTerminal("List"), - NonTerminal("Words") - ) - ), - Skip() - ), - NonTerminal("NEWLINE"), - type="complex" -).writeStandalone( - open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/def_Markdown.py b/def_Markdown.py deleted file mode 100755 index 782e3c5..0000000 --- a/def_Markdown.py +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/python3 - -# Copyright 2025, Jonas Smedegaard -# SPDX-License-Identifier: GPL-3+ - -from os.path import basename, splitext -from railroad import * - -Diagram( - Choice(0, - Sequence( - "---", - NonTerminal("NEWLINE"), - Choice(0, - OneOrMore(NonTerminal("MetaBlock")), - Skip() - ), - "---", - NonTerminal("NEWLINE"), - ), - Skip() - ), - Choice(0, - OneOrMore(NonTerminal("Block")), - Skip() - ) -).writeStandalone( - open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/def_NEWLINE.py b/def_NEWLINE.py deleted file mode 100755 index 2720bee..0000000 --- a/def_NEWLINE.py +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/python3 - -# Copyright 2025, Jonas Smedegaard -# SPDX-License-Identifier: GPL-3+ - -from os.path import basename, splitext -from railroad import * - -Diagram( - Choice(0, - '\\r\\n', - '\\n', - '\\r', - ), - type="complex" -).writeStandalone( - open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/def_PRINTABLES.py b/def_PRINTABLES.py deleted file mode 100755 index 4fc41b4..0000000 --- a/def_PRINTABLES.py +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/python3 - -# Copyright 2025, Jonas Smedegaard -# SPDX-License-Identifier: GPL-3+ - -from os.path import basename, splitext -from railroad import * - -Diagram( - "[[:graph:]]+", - type="complex" -).writeStandalone( - open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/def_Paragraph.py b/def_Paragraph.py deleted file mode 100755 index 2f8e68d..0000000 --- a/def_Paragraph.py +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/python3 - -# Copyright 2025, Jonas Smedegaard -# SPDX-License-Identifier: GPL-3+ - -from os.path import basename, splitext -from railroad import * - -Diagram( - NonTerminal("Words"), - Choice(0, - OneOrMore( - NonTerminal("HardBreak"), - NonTerminal("Words") - ), - Skip() - ), - OneOrMore( - NonTerminal("NEWLINE") - ), - type="complex" -).writeStandalone( - open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/def_PlainWords.py b/def_PlainWords.py deleted file mode 100755 index eafe2fc..0000000 --- a/def_PlainWords.py +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/python3 - -# Copyright 2025, Jonas Smedegaard -# SPDX-License-Identifier: GPL-3+ - -from os.path import basename, splitext -from railroad import * - -Diagram( - NonTerminal("PRINTABLES"), - Choice(0, - OneOrMore( - NonTerminal("_"), - NonTerminal("PRINTABLES") - ), - Skip() - ), - type="complex" -).writeStandalone( - open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/def_SEMPREFIX.py b/def_SEMPREFIX.py deleted file mode 100755 index a7fc4a0..0000000 --- a/def_SEMPREFIX.py +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/python3 - -# Copyright 2025, Jonas Smedegaard -# SPDX-License-Identifier: GPL-3+ - -from os.path import basename, splitext -from railroad import * - -Diagram( - "[.#]", - type="complex" -).writeStandalone( - open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/def_SPACE.py b/def_SPACE.py deleted file mode 100755 index 102f6f4..0000000 --- a/def_SPACE.py +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/python3 - -# Copyright 2025, Jonas Smedegaard -# SPDX-License-Identifier: GPL-3+ - -from os.path import basename, splitext -from railroad import * - -Diagram( - "' '", - type="complex" -).writeStandalone( - open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/def_SemWords.py b/def_SemWords.py deleted file mode 100755 index 292e4b4..0000000 --- a/def_SemWords.py +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/python3 - -# Copyright 2025, Jonas Smedegaard -# SPDX-License-Identifier: GPL-3+ - -from os.path import basename, splitext -from railroad import * - -Diagram( - Choice(0, - Sequence( - NonTerminal("SEMPREFIX"), - "<", - NonTerminal("![<>] PRINTABLES"), - ">", - ), - Sequence( - NonTerminal("SEMPREFIX"), - NonTerminal("CURIE"), - ) - ), - type="complex" -).writeStandalone( - open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/def_StyledWords.py b/def_StyledWords.py deleted file mode 100755 index 05a7583..0000000 --- a/def_StyledWords.py +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/python3 - -# Copyright 2025, Jonas Smedegaard -# SPDX-License-Identifier: GPL-3+ - -from os.path import basename, splitext -from railroad import * - -Diagram( - Choice(0, - Sequence( - "**", - NonTerminal("Words"), - "**" - ), - Sequence( - "*", - NonTerminal("Words"), - "*" - ), - Sequence( - "_", - NonTerminal("Words"), - "_" - ) - ), - type="complex" -).writeStandalone( - open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/def_Uri.py b/def_Uri.py deleted file mode 100755 index 922a49d..0000000 --- a/def_Uri.py +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/python3 - -# Copyright 2025, Jonas Smedegaard -# SPDX-License-Identifier: GPL-3+ - -from os.path import basename, splitext -from railroad import * - -Diagram( - Choice(0, - Sequence( - "<", - NonTerminal("![<>] PRINTABLES"), - ">", - ), - NonTerminal("![<>] PRINTABLES"), - ), - type="complex" -).writeStandalone( - open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/def_Words.py b/def_Words.py deleted file mode 100755 index f4e5152..0000000 --- a/def_Words.py +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/python3 - -# Copyright 2025, Jonas Smedegaard -# SPDX-License-Identifier: GPL-3+ - -from os.path import basename, splitext -from railroad import * - -Diagram( - Choice(0, - NonTerminal("StyledWords"), - NonTerminal("LinkedWords"), - NonTerminal("AnnotatedWords"), - NonTerminal("PlainWords") - ), - type="complex" -).writeStandalone( - open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/def__.py b/def__.py deleted file mode 100755 index 0ae7368..0000000 --- a/def__.py +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/python3 - -# Copyright 2025, Jonas Smedegaard -# SPDX-License-Identifier: GPL-3+ - -from os.path import basename, splitext -from railroad import * - -Diagram( - Choice(0, - Sequence( - OneOrMore(NonTerminal("SPACE")), - ), - Sequence( - Optional(NonTerminal("SPACE"), True), - NonTerminal("NEWLINE"), - Optional(NonTerminal("SPACE"), True), - Optional(NonTerminal("SPACE"), True), - Optional(NonTerminal("SPACE"), True) - ) - ), - type="complex" -).writeStandalone( - open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/report.qmd b/report.qmd index ff16d53..19eb3b9 100644 --- a/report.qmd +++ b/report.qmd @@ -119,9 +119,9 @@ are editorial notes not intended for inclusion in the final delivery.* # Markdown syntax as PEG {.appendix #sec-def-peg} -```{.peg include="def.peg" code-line-numbers="true"} +```{.peg include="syntax/def.peg" code-line-numbers="true"} ``` # Markdown syntax as syntax diagrams {.appendix #sec-def-dia} -{{< include _def_dia.qmd >}} +{{< include _syntax.qmd >}} diff --git a/syntax/def_AnnotatedWords.py b/syntax/def_AnnotatedWords.py new file mode 100755 index 0000000..8449ace --- /dev/null +++ b/syntax/def_AnnotatedWords.py @@ -0,0 +1,18 @@ +#!/usr/bin/python3 + +# Copyright 2025, Jonas Smedegaard +# SPDX-License-Identifier: GPL-3+ + +from os.path import basename, splitext +from railroad import * + +Diagram( + "[", + NonTerminal("Words"), + "]", + "{", + NonTerminal('![{}] PlainWords'), + "}", + type="complex" +).writeStandalone( + open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/syntax/def_AnnotatedWordsX.py b/syntax/def_AnnotatedWordsX.py new file mode 100755 index 0000000..a90aaf6 --- /dev/null +++ b/syntax/def_AnnotatedWordsX.py @@ -0,0 +1,23 @@ +#!/usr/bin/python3 + +# Copyright 2025, Jonas Smedegaard +# SPDX-License-Identifier: GPL-3+ + +from os.path import basename, splitext +from railroad import * + +Diagram( + "[", + NonTerminal("Words"), + "]", + "{", + Choice(0, + Group( + NonTerminal('SemWords'), + ), + NonTerminal('![{}] PlainWords'), + ), + "}", + type="complex" +).writeStandalone( + open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/syntax/def_Block.py b/syntax/def_Block.py new file mode 100755 index 0000000..b44c121 --- /dev/null +++ b/syntax/def_Block.py @@ -0,0 +1,18 @@ +#!/usr/bin/python3 + +# Copyright 2025, Jonas Smedegaard +# SPDX-License-Identifier: GPL-3+ + +from os.path import basename, splitext +from railroad import * + +Diagram( + Choice(0, + NonTerminal("Header"), + NonTerminal("List"), + NonTerminal("LinkDefinition"), + NonTerminal("Paragraph") + ), + type="complex" +).writeStandalone( + open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/syntax/def_HardBreak.py b/syntax/def_HardBreak.py new file mode 100755 index 0000000..b39251b --- /dev/null +++ b/syntax/def_HardBreak.py @@ -0,0 +1,15 @@ +#!/usr/bin/python3 + +# Copyright 2025, Jonas Smedegaard +# SPDX-License-Identifier: GPL-3+ + +from os.path import basename, splitext +from railroad import * + +Diagram( + NonTerminal("SPACE"), + OneOrMore(NonTerminal("SPACE")), + NonTerminal("NEWLINE"), + type="complex" +).writeStandalone( + open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/syntax/def_Header.py b/syntax/def_Header.py new file mode 100755 index 0000000..f8c1935 --- /dev/null +++ b/syntax/def_Header.py @@ -0,0 +1,26 @@ +#!/usr/bin/python3 + +# Copyright 2025, Jonas Smedegaard +# SPDX-License-Identifier: GPL-3+ + +from os.path import basename, splitext +from railroad import * + +Diagram( + OneOrMore('#'), + Choice(0, + Sequence( + OneOrMore(NonTerminal("SPACE")) + ), + Skip() + ), + Choice(0, + Sequence( + NonTerminal("!NEWLINE Words") + ), + Skip() + ), + NonTerminal("NEWLINE"), + type="complex" +).writeStandalone( + open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/syntax/def_LinkDefinition.py b/syntax/def_LinkDefinition.py new file mode 100755 index 0000000..c340fe0 --- /dev/null +++ b/syntax/def_LinkDefinition.py @@ -0,0 +1,24 @@ +#!/usr/bin/python3 + +# Copyright 2025, Jonas Smedegaard +# SPDX-License-Identifier: GPL-3+ + +from os.path import basename, splitext +from railroad import * + +Diagram( + NonTerminal("LinkLabel"), + ":", + Choice(0, NonTerminal("_"), Skip()), + NonTerminal("Uri"), + Choice(0, + Sequence( + NonTerminal("_"), + NonTerminal("LinkTitle") + ), + Skip() + ), + NonTerminal("NEWLINE"), + type="complex" +).writeStandalone( + open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/syntax/def_LinkLabel.py b/syntax/def_LinkLabel.py new file mode 100755 index 0000000..869e353 --- /dev/null +++ b/syntax/def_LinkLabel.py @@ -0,0 +1,17 @@ +#!/usr/bin/python3 + +# Copyright 2025, Jonas Smedegaard +# SPDX-License-Identifier: GPL-3+ + +from os.path import basename, splitext +from railroad import * + +Diagram( + "[", + Optional(NonTerminal("_"), True), + NonTerminal("![\\[\\]] PlainWords"), + Optional(NonTerminal("_"), True), + "]", + type="complex" +).writeStandalone( + open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/syntax/def_LinkTitle.py b/syntax/def_LinkTitle.py new file mode 100755 index 0000000..beed133 --- /dev/null +++ b/syntax/def_LinkTitle.py @@ -0,0 +1,35 @@ +#!/usr/bin/python3 + +# Copyright 2025, Jonas Smedegaard +# SPDX-License-Identifier: GPL-3+ + +from os.path import basename, splitext +from railroad import * + +Diagram( + Choice(0, + Sequence( + '"', + Optional(NonTerminal("_"), True), + NonTerminal("!'\"' PlainWords"), + Optional(NonTerminal("_"), True), + '"', + ), + Sequence( + "'", + Optional(NonTerminal("_"), True), + NonTerminal("!\"'\" PlainWords"), + Optional(NonTerminal("_"), True), + "'", + ), + Sequence( + "(", + Optional(NonTerminal("_"), True), + NonTerminal("![()] PlainWords"), + Optional(NonTerminal("_"), True), + ")", + ) + ), + type="complex" +).writeStandalone( + open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/syntax/def_LinkedWords.py b/syntax/def_LinkedWords.py new file mode 100755 index 0000000..d9d7301 --- /dev/null +++ b/syntax/def_LinkedWords.py @@ -0,0 +1,38 @@ +#!/usr/bin/python3 + +# Copyright 2025, Jonas Smedegaard +# SPDX-License-Identifier: GPL-3+ + +from os.path import basename, splitext +from railroad import * + +Diagram( + Choice(0, + Sequence( + "[", + NonTerminal("Words"), + "]", + Choice(0, + Sequence( + "(", + Choice(0, + Sequence( + NonTerminal("Uri"), + NonTerminal("_"), + NonTerminal("LinkTitle") + ), + NonTerminal("Uri"), + NonTerminal("LinkTitle") + ), + ")" + ), + NonTerminal("LinkLabel") + ) + ), + Sequence( + NonTerminal("LinkLabel") + ) + ), + type="complex" +).writeStandalone( + open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/syntax/def_List.py b/syntax/def_List.py new file mode 100755 index 0000000..087727e --- /dev/null +++ b/syntax/def_List.py @@ -0,0 +1,30 @@ +#!/usr/bin/python3 + +# Copyright 2025, Jonas Smedegaard +# SPDX-License-Identifier: GPL-3+ + +from os.path import basename, splitext +from railroad import * + +Diagram( + Choice(0, + "[-*]", + Sequence( + "[[:digit:]]+", + "[).]", + ) + ), + Choice(0, + Sequence( + NonTerminal("_"), + Choice(0, + NonTerminal("List"), + NonTerminal("Words") + ) + ), + Skip() + ), + NonTerminal("NEWLINE"), + type="complex" +).writeStandalone( + open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/syntax/def_Markdown.py b/syntax/def_Markdown.py new file mode 100755 index 0000000..782e3c5 --- /dev/null +++ b/syntax/def_Markdown.py @@ -0,0 +1,28 @@ +#!/usr/bin/python3 + +# Copyright 2025, Jonas Smedegaard +# SPDX-License-Identifier: GPL-3+ + +from os.path import basename, splitext +from railroad import * + +Diagram( + Choice(0, + Sequence( + "---", + NonTerminal("NEWLINE"), + Choice(0, + OneOrMore(NonTerminal("MetaBlock")), + Skip() + ), + "---", + NonTerminal("NEWLINE"), + ), + Skip() + ), + Choice(0, + OneOrMore(NonTerminal("Block")), + Skip() + ) +).writeStandalone( + open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/syntax/def_NEWLINE.py b/syntax/def_NEWLINE.py new file mode 100755 index 0000000..2720bee --- /dev/null +++ b/syntax/def_NEWLINE.py @@ -0,0 +1,17 @@ +#!/usr/bin/python3 + +# Copyright 2025, Jonas Smedegaard +# SPDX-License-Identifier: GPL-3+ + +from os.path import basename, splitext +from railroad import * + +Diagram( + Choice(0, + '\\r\\n', + '\\n', + '\\r', + ), + type="complex" +).writeStandalone( + open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/syntax/def_PRINTABLES.py b/syntax/def_PRINTABLES.py new file mode 100755 index 0000000..4fc41b4 --- /dev/null +++ b/syntax/def_PRINTABLES.py @@ -0,0 +1,13 @@ +#!/usr/bin/python3 + +# Copyright 2025, Jonas Smedegaard +# SPDX-License-Identifier: GPL-3+ + +from os.path import basename, splitext +from railroad import * + +Diagram( + "[[:graph:]]+", + type="complex" +).writeStandalone( + open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/syntax/def_Paragraph.py b/syntax/def_Paragraph.py new file mode 100755 index 0000000..2f8e68d --- /dev/null +++ b/syntax/def_Paragraph.py @@ -0,0 +1,23 @@ +#!/usr/bin/python3 + +# Copyright 2025, Jonas Smedegaard +# SPDX-License-Identifier: GPL-3+ + +from os.path import basename, splitext +from railroad import * + +Diagram( + NonTerminal("Words"), + Choice(0, + OneOrMore( + NonTerminal("HardBreak"), + NonTerminal("Words") + ), + Skip() + ), + OneOrMore( + NonTerminal("NEWLINE") + ), + type="complex" +).writeStandalone( + open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/syntax/def_PlainWords.py b/syntax/def_PlainWords.py new file mode 100755 index 0000000..eafe2fc --- /dev/null +++ b/syntax/def_PlainWords.py @@ -0,0 +1,20 @@ +#!/usr/bin/python3 + +# Copyright 2025, Jonas Smedegaard +# SPDX-License-Identifier: GPL-3+ + +from os.path import basename, splitext +from railroad import * + +Diagram( + NonTerminal("PRINTABLES"), + Choice(0, + OneOrMore( + NonTerminal("_"), + NonTerminal("PRINTABLES") + ), + Skip() + ), + type="complex" +).writeStandalone( + open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/syntax/def_SEMPREFIX.py b/syntax/def_SEMPREFIX.py new file mode 100755 index 0000000..a7fc4a0 --- /dev/null +++ b/syntax/def_SEMPREFIX.py @@ -0,0 +1,13 @@ +#!/usr/bin/python3 + +# Copyright 2025, Jonas Smedegaard +# SPDX-License-Identifier: GPL-3+ + +from os.path import basename, splitext +from railroad import * + +Diagram( + "[.#]", + type="complex" +).writeStandalone( + open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/syntax/def_SPACE.py b/syntax/def_SPACE.py new file mode 100755 index 0000000..102f6f4 --- /dev/null +++ b/syntax/def_SPACE.py @@ -0,0 +1,13 @@ +#!/usr/bin/python3 + +# Copyright 2025, Jonas Smedegaard +# SPDX-License-Identifier: GPL-3+ + +from os.path import basename, splitext +from railroad import * + +Diagram( + "' '", + type="complex" +).writeStandalone( + open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/syntax/def_SemWords.py b/syntax/def_SemWords.py new file mode 100755 index 0000000..292e4b4 --- /dev/null +++ b/syntax/def_SemWords.py @@ -0,0 +1,24 @@ +#!/usr/bin/python3 + +# Copyright 2025, Jonas Smedegaard +# SPDX-License-Identifier: GPL-3+ + +from os.path import basename, splitext +from railroad import * + +Diagram( + Choice(0, + Sequence( + NonTerminal("SEMPREFIX"), + "<", + NonTerminal("![<>] PRINTABLES"), + ">", + ), + Sequence( + NonTerminal("SEMPREFIX"), + NonTerminal("CURIE"), + ) + ), + type="complex" +).writeStandalone( + open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/syntax/def_StyledWords.py b/syntax/def_StyledWords.py new file mode 100755 index 0000000..05a7583 --- /dev/null +++ b/syntax/def_StyledWords.py @@ -0,0 +1,29 @@ +#!/usr/bin/python3 + +# Copyright 2025, Jonas Smedegaard +# SPDX-License-Identifier: GPL-3+ + +from os.path import basename, splitext +from railroad import * + +Diagram( + Choice(0, + Sequence( + "**", + NonTerminal("Words"), + "**" + ), + Sequence( + "*", + NonTerminal("Words"), + "*" + ), + Sequence( + "_", + NonTerminal("Words"), + "_" + ) + ), + type="complex" +).writeStandalone( + open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/syntax/def_Uri.py b/syntax/def_Uri.py new file mode 100755 index 0000000..922a49d --- /dev/null +++ b/syntax/def_Uri.py @@ -0,0 +1,20 @@ +#!/usr/bin/python3 + +# Copyright 2025, Jonas Smedegaard +# SPDX-License-Identifier: GPL-3+ + +from os.path import basename, splitext +from railroad import * + +Diagram( + Choice(0, + Sequence( + "<", + NonTerminal("![<>] PRINTABLES"), + ">", + ), + NonTerminal("![<>] PRINTABLES"), + ), + type="complex" +).writeStandalone( + open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/syntax/def_Words.py b/syntax/def_Words.py new file mode 100755 index 0000000..f4e5152 --- /dev/null +++ b/syntax/def_Words.py @@ -0,0 +1,18 @@ +#!/usr/bin/python3 + +# Copyright 2025, Jonas Smedegaard +# SPDX-License-Identifier: GPL-3+ + +from os.path import basename, splitext +from railroad import * + +Diagram( + Choice(0, + NonTerminal("StyledWords"), + NonTerminal("LinkedWords"), + NonTerminal("AnnotatedWords"), + NonTerminal("PlainWords") + ), + type="complex" +).writeStandalone( + open(splitext(basename(__file__))[0] + ".svg", "w").write) diff --git a/syntax/def__.py b/syntax/def__.py new file mode 100755 index 0000000..0ae7368 --- /dev/null +++ b/syntax/def__.py @@ -0,0 +1,24 @@ +#!/usr/bin/python3 + +# Copyright 2025, Jonas Smedegaard +# SPDX-License-Identifier: GPL-3+ + +from os.path import basename, splitext +from railroad import * + +Diagram( + Choice(0, + Sequence( + OneOrMore(NonTerminal("SPACE")), + ), + Sequence( + Optional(NonTerminal("SPACE"), True), + NonTerminal("NEWLINE"), + Optional(NonTerminal("SPACE"), True), + Optional(NonTerminal("SPACE"), True), + Optional(NonTerminal("SPACE"), True) + ) + ), + type="complex" +).writeStandalone( + open(splitext(basename(__file__))[0] + ".svg", "w").write) -- cgit v1.2.3