aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonas Smedegaard <dr@jones.dk>2025-05-17 18:36:55 +0200
committerJonas Smedegaard <dr@jones.dk>2025-05-17 18:36:55 +0200
commita2b58501f5b72739c07a3766b0f3fd56e3a38c51 (patch)
treed04fe4c6acf212284bf7f72802fb343eb5c75859
parentf679b346089aa8a1f3c9956489b848bb10710ac9 (diff)
simplify Paragraph grammar
-rw-r--r--def.peg4
-rwxr-xr-xdef_Paragraph.py25
2 files changed, 14 insertions, 15 deletions
diff --git a/def.peg b/def.peg
index 163b5a4..b1cb09f 100644
--- a/def.peg
+++ b/def.peg
@@ -14,8 +14,8 @@ List <- ([-*]+ / [[:digit:]]+ [).]) (SPACE+ (List / Words))?
NEWLINE
LinkDefinition <- '[' !'[]' PlainWords ']:' SPACE Uri NEWLINE
SPACE SPACE '"' !'"' PlainWords '"' NEWLINE
-Paragraph <- Words (SPACE? NEWLINE Words / HardBreak Words)*
- NEWLINE NEWLINE
+Paragraph <- (Words (SPACE? NEWLINE / HardBreak))+
+ NEWLINE+
# Inline elements
Words <- StyledWords / LinkedWords / AnnotatedWords / PlainWords
diff --git a/def_Paragraph.py b/def_Paragraph.py
index 3513315..55ec343 100755
--- a/def_Paragraph.py
+++ b/def_Paragraph.py
@@ -8,22 +8,21 @@ from railroad import *
Diagram(
Start("complex"),
- NonTerminal("Words"),
- ZeroOrMore(
- Choice(0,
- Sequence(
- Optional(NonTerminal("SPACE")),
- NonTerminal("NEWLINE"),
- NonTerminal("Words")
- ),
- Sequence(
+ Stack(
+ OneOrMore(Sequence(
+ NonTerminal("Words"),
+ Choice(0,
+ Sequence(
+ Optional(NonTerminal("SPACE")),
+ NonTerminal("NEWLINE"),
+ ),
NonTerminal("HardBreak"),
- NonTerminal("Words")
- )
+ ))
+ ),
+ OneOrMore(
+ NonTerminal("NEWLINE")
)
),
- NonTerminal("NEWLINE"),
- OneOrMore(NonTerminal("NEWLINE")),
End("complex")
).writeStandalone(
open(splitext(basename(__file__))[0] + ".svg", "w").write)