From aba01b80e7ea75438db7933f9430997bc853250f Mon Sep 17 00:00:00 2001 From: Jonas Smedegaard Date: Mon, 26 May 2025 10:05:06 +0200 Subject: add syntax SemWord --- syntax/def.peg | 3 ++- syntax/def_SemWord.py | 22 ++++++++++++++++++++++ syntax/def_SemWords.py | 14 +++++--------- 3 files changed, 29 insertions(+), 10 deletions(-) create mode 100755 syntax/def_SemWord.py (limited to 'syntax') diff --git a/syntax/def.peg b/syntax/def.peg index 30157d2..11ce1ab 100644 --- a/syntax/def.peg +++ b/syntax/def.peg @@ -51,7 +51,8 @@ NEWLINE <- '\r\n' # @see AnnotatedWordsX <- '[' Words ']' ('{' (SemWords / ![{}] PlainWords) '}') -SemWords <- SEMPREFIX '<' ![<>] PRINTABLES '>' +SemWords <- SemWord (_ SemWord)* +SemWord <- SEMPREFIX '<' ![<>] PRINTABLES '>' / SEMPREFIX Curie SEMPREFIX <- [.=] diff --git a/syntax/def_SemWord.py b/syntax/def_SemWord.py new file mode 100755 index 0000000..d0768ad --- /dev/null +++ b/syntax/def_SemWord.py @@ -0,0 +1,22 @@ +#!/usr/bin/python3 + +# Copyright 2025, Jonas Smedegaard +# SPDX-License-Identifier: GPL-3+ + +from railroad import * + +Diagram( + Choice(0, + Sequence( + NonTerminal("SEMPREFIX"), + "<", + NonTerminal("![<>] PRINTABLES"), + ">", + ), + Sequence( + NonTerminal("SEMPREFIX"), + NonTerminal("CURIE"), + ) + ), + type="complex" +).writeStandalone(sys.stdout.write) diff --git a/syntax/def_SemWords.py b/syntax/def_SemWords.py index d0768ad..2a2af8f 100755 --- a/syntax/def_SemWords.py +++ b/syntax/def_SemWords.py @@ -6,17 +6,13 @@ from railroad import * Diagram( + NonTerminal("SemWord"), Choice(0, - Sequence( - NonTerminal("SEMPREFIX"), - "<", - NonTerminal("![<>] PRINTABLES"), - ">", + OneOrMore( + NonTerminal("_"), + NonTerminal("SemWord") ), - Sequence( - NonTerminal("SEMPREFIX"), - NonTerminal("CURIE"), - ) + Skip() ), type="complex" ).writeStandalone(sys.stdout.write) -- cgit v1.2.3