aboutsummaryrefslogtreecommitdiff
path: root/syntax
diff options
context:
space:
mode:
Diffstat (limited to 'syntax')
-rwxr-xr-xsyntax/def_AnnotatedWords.py18
-rwxr-xr-xsyntax/def_AnnotatedWordsX.py23
-rwxr-xr-xsyntax/def_Block.py18
-rwxr-xr-xsyntax/def_HardBreak.py15
-rwxr-xr-xsyntax/def_Header.py26
-rwxr-xr-xsyntax/def_LinkDefinition.py24
-rwxr-xr-xsyntax/def_LinkLabel.py17
-rwxr-xr-xsyntax/def_LinkTitle.py35
-rwxr-xr-xsyntax/def_LinkedWords.py38
-rwxr-xr-xsyntax/def_List.py30
-rwxr-xr-xsyntax/def_Markdown.py28
-rwxr-xr-xsyntax/def_NEWLINE.py17
-rwxr-xr-xsyntax/def_PRINTABLES.py13
-rwxr-xr-xsyntax/def_Paragraph.py23
-rwxr-xr-xsyntax/def_PlainWords.py20
-rwxr-xr-xsyntax/def_SEMPREFIX.py13
-rwxr-xr-xsyntax/def_SPACE.py13
-rwxr-xr-xsyntax/def_SemWords.py24
-rwxr-xr-xsyntax/def_StyledWords.py29
-rwxr-xr-xsyntax/def_Uri.py20
-rwxr-xr-xsyntax/def_Words.py18
-rwxr-xr-xsyntax/def__.py24
22 files changed, 486 insertions, 0 deletions
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 <dr@jones.dk>
+# 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 <dr@jones.dk>
+# 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 <dr@jones.dk>
+# 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 <dr@jones.dk>
+# 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 <dr@jones.dk>
+# 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 <dr@jones.dk>
+# 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 <dr@jones.dk>
+# 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 <dr@jones.dk>
+# 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 <dr@jones.dk>
+# 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 <dr@jones.dk>
+# 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 <dr@jones.dk>
+# 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 <dr@jones.dk>
+# 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 <dr@jones.dk>
+# 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 <dr@jones.dk>
+# 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 <dr@jones.dk>
+# 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 <dr@jones.dk>
+# 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 <dr@jones.dk>
+# 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 <dr@jones.dk>
+# 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 <dr@jones.dk>
+# 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 <dr@jones.dk>
+# 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 <dr@jones.dk>
+# 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 <dr@jones.dk>
+# 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)