diff options
| author | Jonas Smedegaard <dr@jones.dk> | 2025-05-17 18:36:55 +0200 |
|---|---|---|
| committer | Jonas Smedegaard <dr@jones.dk> | 2025-05-17 18:36:55 +0200 |
| commit | a2b58501f5b72739c07a3766b0f3fd56e3a38c51 (patch) | |
| tree | d04fe4c6acf212284bf7f72802fb343eb5c75859 | |
| parent | f679b346089aa8a1f3c9956489b848bb10710ac9 (diff) | |
simplify Paragraph grammar
| -rw-r--r-- | def.peg | 4 | ||||
| -rwxr-xr-x | def_Paragraph.py | 25 |
2 files changed, 14 insertions, 15 deletions
@@ -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) |
