Currently job artifacts in CI/CD pipelines on LRZ GitLab never expire. Starting from Wed 26.1.2022 the default expiration time will be 30 days (GitLab default). Currently existing artifacts in already completed jobs will not be affected by the change. The latest artifacts for all jobs in the latest successful pipelines will be kept. More information: https://gitlab.lrz.de/help/user/admin_area/settings/continuous_integration.html#default-artifacts-expiration

MLW.ebnf 9.6 KB
Newer Older
1
2
# EBNF-Syntax für MLW-Artikel

di68kap's avatar
di68kap committed
3
4
# TODO: Vervollständigen!!!!

5

di68kap's avatar
di68kap committed
6
@ comment         =  /(?:\/\/.*)|(?:\/\*(?:.|\n)*?\*\/)/   # Kommentare im C++ Stil
di68kap's avatar
di68kap committed
7
                                      # ohne das Zeilenende zu beinhalten
8
9
@ whitespace      =  /[\t ]*/         # Zeilensprünge zählen nicht als Leerraum
@ literalws       =  right            # Leerraum vor und nach Literalen wird automatisch entfernt
10

11
12
13

##############################################################################

14
Artikel           = [LZ]
di68kap's avatar
di68kap committed
15
16
                    §{ LemmaPosition }+
                    [EtymologiePosition]
17
                    [ArtikelKopf]
di68kap's avatar
di68kap committed
18
                    BedeutungsPosition
di68kap's avatar
di68kap committed
19
                    [VerweisPosition]
20
                    { UnterArtikel }
di68kap's avatar
di68kap committed
21
                    ArtikelVerfasser
di68kap's avatar
di68kap committed
22
23
                    [Stellenverzeichnis]
                    [LZ] DATEI_ENDE
24

25

26
27
#### LEMMA-POSITION ##########################################################

di68kap's avatar
di68kap committed
28
29
LemmaPosition     = [ABS] "LEMMA" [LZ] §Lemma TR [LemmaVarianten]
                    GrammatikPosition [Zusatz]
30

di68kap's avatar
di68kap committed
31
Lemma             = [< klassisch | gesichert >] LemmaWort
32
  klassisch       = "*"
di68kap's avatar
di68kap committed
33
  gesichert       = "$"  # TODO: Noch fragen: Welches Zeichen?
34

di68kap's avatar
di68kap committed
35
36
LemmaWort         = LAT_WORT

di68kap's avatar
di68kap committed
37
LemmaVarianten    = LemmaVariante { [";" | ","] [ZW] LemmaVariante } [ ABS Zusatz ]
38

di68kap's avatar
di68kap committed
39
LemmaVariante     = LAT_WORT [Zusatz]
40

41

42
## GRAMMATIK-POSITION ##
43

di68kap's avatar
di68kap committed
44
GrammatikPosition = ZWW "GRAMMATIK" [LZ] §Grammatik { ABS GrammatikVariante }
di68kap's avatar
di68kap committed
45

46
Grammatik        = wortart §ABS flexion [genus]
47

di68kap's avatar
di68kap committed
48
49
50
51
52
wortart          = "nomen"  | "n."
                 | "verb"   | "v."
                 | "adverb" | "adv."
                 | "adjektiv" | "adj."
                 | "praeposition" | "praep."
53

54
flexion          = deklination | konjugation
di68kap's avatar
di68kap committed
55
deklination      = FLEX ["," FLEX]
56
konjugation      = FLEX
57
FLEX             = /-?[a-z]+/~
58

di68kap's avatar
di68kap committed
59
60
61
genus            = "maskulinum" | "m."
                 | "femininum" | "f."
                 | "neutrum" | "n."
62

63
GrammatikVariante  = [wortart ABS] flexion [genus] DPP Beleg { FORTSETZUNG Beleg }   # Beleg { SEM Beleg }
di68kap's avatar
di68kap committed
64

65

66

di68kap's avatar
di68kap committed
67
#### ETYMOLOGIE-POSITION #####################################################
68

di68kap's avatar
di68kap committed
69
EtymologiePosition = ZWW "ETYMOLOGIE" [LZ] { EtymologieVariante }+
di68kap's avatar
di68kap committed
70
EtymologieVariante = LAT | GRI [EtymologieBesonderheit] ["ETYM" Etymologie] DPP Beleg
di68kap's avatar
di68kap committed
71
72
EtymologieBesonderheit = EINZEILER
Etymologie         = EINZEILER
73
74


75
76
#### ARTIKEL-KOPF ############################################################

di68kap's avatar
di68kap committed
77
78
79
80
81
ArtikelKopf     = <   SchreibweisenPosition
                    | StrukturPosition
                    | GebrauchPosition
                    | MetrikPosition
                    | VerwechselungPosition >
di68kap's avatar
di68kap committed
82

di68kap's avatar
di68kap committed
83
84
85
86
87
SchreibweisenPosition = ZWW "SCHREIBWEISE"  Position
StrukturPosition      = ZWW "STRUKTUR"      Position
GebrauchPosition      = ZWW "GEBRAUCH"      Position
MetrikPosition        = ZWW "METRIK"        Position
VerwechselungPosition = ZWW "VERWECHSELBAR" Position
di68kap's avatar
di68kap committed
88

di68kap's avatar
di68kap committed
89
## ARTIKELKOPF POSITIONEN ##
di68kap's avatar
di68kap committed
90

di68kap's avatar
di68kap committed
91
92
93
94
95
96
97
Position       = [LZ] §Kategorien
Kategorien     = Kategorie { ZWW Kategorie }
Kategorie      = Besonderheit §DPP [LZ] ( Varianten | Kategorien )
Besonderheit   = EINZEILER
Varianten      = Variante { ZWW Variante }
Variante       = !KATEGORIENZEILE Gegenstand DPP Belege
Gegenstand     = EINZEILER
di68kap's avatar
di68kap committed
98

di68kap's avatar
di68kap committed
99

100
101
#### BEDEUTUNGS-POSITION #####################################################

di68kap's avatar
di68kap committed
102
BedeutungsPosition   = { ZWW "BEDEUTUNG" [LZ] §Bedeutung [U1Bedeutung] }+
di68kap's avatar
di68kap committed
103
104
U1Bedeutung          = { ZWW ("U_BEDEUTUNG" | "UNTER_BEDEUTUNG") [LZ] §Bedeutung [U2Bedeutung] }+
U2Bedeutung          = { ZWW ("UU_BEDEUTUNG" | "UNTER_UNTER_BEDEUTUNG") [LZ] §Bedeutung [U3Bedeutung] }+
105
106
107
U3Bedeutung          = { ZWW "UUU_BEDEUTUNG" [LZ] §Bedeutung [U4Bedeutung] }+
U4Bedeutung          = { ZWW "UUUU_BEDEUTUNG" [LZ] §Bedeutung [U5Bedeutung] }+
U5Bedeutung          = { ZWW "UUUUU_BEDEUTUNG" [LZ] §UntersteBedeutung }+
108

di68kap's avatar
di68kap committed
109
Bedeutung            = (Interpretamente | Bedeutungskategorie) [BelegPosition]
di68kap's avatar
di68kap committed
110
UntersteBedeutung    = Interpretamente [BelegPosition]
di68kap's avatar
di68kap committed
111
112
113
114
Bedeutungskategorie  = EINZEILER [[LZ] BedeutungsQualifikation] §":"
Interpretamente      = LateinischeBedeutung ("--"| LZ) §DeutscheBedeutung [":"]
LateinischeBedeutung = LAT [LZ] LateinischerAusdruck { <","|ZW> LateinischerAusdruck }
DeutscheBedeutung    = DEU [LZ] DeutscherAusdruck { <","|ZW> DeutscherAusdruck }
di68kap's avatar
di68kap committed
115

di68kap's avatar
di68kap committed
116
117
LateinischerAusdruck = LAT_WORT_ERW { //~ LAT_WORT_ERW } [[LZ] BedeutungsQualifikation]
DeutscherAusdruck    = DEU_WORT_ERW { //~ DEU_WORT_ERW } [[LZ] BedeutungsQualifikation]
118

di68kap's avatar
di68kap committed
119
BedeutungsQualifikation = Zusatz # "[" Gegenstand DPP (Verweis | EINZEILER) §"]"
120

di68kap's avatar
di68kap committed
121
BelegPosition = ZWW ["BELEGE" [LZ]] Belege
122
123


di68kap's avatar
di68kap committed
124
#### VERWEIS-POSITION ########################################################
125

di68kap's avatar
di68kap committed
126
VerweisPosition = ZWW "VERWEISE"
127
128


di68kap's avatar
di68kap committed
129
#### UNTER-ARTIKEL ###########################################################
130

di68kap's avatar
di68kap committed
131
UnterArtikel = ZWW "UNTER-ARTIKEL"
132
133


134
135
#### AUTOR/AUTORIN ###########################################################

di68kap's avatar
di68kap committed
136
ArtikelVerfasser = ZWW ("AUTORIN" | "AUTOR") Name
137
Name             = { NAME | NAMENS_ABKÜRZUNG }+
138

139

di68kap's avatar
di68kap committed
140
#### STELLENVERZEICHNIS ######################################################
di68kap's avatar
di68kap committed
141

di68kap's avatar
di68kap committed
142
143
144
145
Stellenverzeichnis = ZWW "STELLENVERZEICHNIS" [LemmaWort] ZWW Verweisliste
Verweisliste       = { [LZ] "*" Stellenverweis }
Stellenverweis     = BelegQuelle { [ABS] Stelle (NullVerweis | Verweis) }
NullVerweis        = "{" "-" "}"
di68kap's avatar
di68kap committed
146

147

di68kap's avatar
di68kap committed
148
149
#### Schlüsselwörter #########################################################

di68kap's avatar
di68kap committed
150
151
152
LAT = "LATEINISCH" | "LAT"
DEU = "DEUTSCH" | "DEU"
GRI = "GRIECHISCH" | "GRIECH" | "GRIE" | "GRI"
di68kap's avatar
di68kap committed
153

di68kap's avatar
di68kap committed
154
155
SCHLUESSELWORT   = { //~ /\n/ }+ !ROEMISCHE_ZAHL /[A-ZÄÖÜ]{3,}\s+/

di68kap's avatar
di68kap committed
156

di68kap's avatar
di68kap committed
157
158
#### ZUSATZ an verschiedenen Stellen der Struktur ############################

di68kap's avatar
di68kap committed
159
160
Zusatz       = { "{" !("=>" | "#") §EinzelnerZusatz { ";;" EinzelnerZusatz } "}" }+
  EinzelnerZusatz  = FesterZusatz | GemischterZusatz | FreierZusatz
di68kap's avatar
di68kap committed
161
162
163
  FesterZusatz     = "adde" | "sape" | "persaepe"
  GemischterZusatz = ( "usu" | "plur. sensu sing." ) FreierZusatz
  FreierZusatz     = { FREITEXT | VerweisKern | Verweis }+
di68kap's avatar
di68kap committed
164

165

di68kap's avatar
di68kap committed
166
#### BELEGE ##################################################################
167

di68kap's avatar
di68kap committed
168
Belege           = ["*"] Beleg { [LZ] "*" Beleg }
di68kap's avatar
di68kap committed
169
Beleg            = [Zusatz] ((Verweis [Zitat]) | Zitat) [ABS Zusatz] ["."]
di68kap's avatar
di68kap committed
170
Zitat            = Quellenangabe
di68kap's avatar
di68kap committed
171
                   { SEM [ZW] [Anker] [Zusatz] <Stelle | Verweis>
di68kap's avatar
di68kap committed
172
                     [[ZW] BelegText] [[LZ] Zusatz] }
di68kap's avatar
di68kap committed
173

di68kap's avatar
di68kap committed
174
Quellenangabe    = [Anker] < BelegQuelle | Verweis >
di68kap's avatar
di68kap committed
175
BelegQuelle      = Autor DPP Werk
di68kap's avatar
di68kap committed
176
BelegText        = /"/ { MEHRZEILER | Zusatz } §/"/~ ["."]
177

di68kap's avatar
di68kap committed
178
179
180
181
182
Autor     = EINZEILER
Werk      = EINZEILER
Stelle    = EINZEILER
Datierung = EINZEILER
Edition   = EINZEILER
di68kap's avatar
di68kap committed
183

184

di68kap's avatar
di68kap committed
185
186
187
#### VERWEISE (LINKS) ########################################################

Verweis          = "{" VerweisKern "}"
di68kap's avatar
di68kap committed
188
VerweisKern      = "=>" §((alias "|" ("-" | URL)) | URL)
di68kap's avatar
di68kap committed
189
190
191
192
193
194
195
196
197
198
Anker            = "{" "#" §ziel "}"
URL              = [ ([protokoll] domäne /\//) | /\// ] { pfad /\// } ziel

alias            = FREITEXT
protokoll        = /\w+:\/\//
domäne           = /\w+\.\w+(?:\.\w+)*/
pfad             = /\w+/
ziel             = /[\w=?.%&\[\] ]+/


di68kap's avatar
di68kap committed
199
200
#### GENERISCHE UND ATOMARE AUSDRÜCKE ########################################

201
202
NAMENS_ABKÜRZUNG = /[A-ZÄÖÜÁÀÂÓÒÔÚÙÛ]\./~
NAME             = /[A-ZÄÖÜÁÀÓÒÚÙÂÔÛ][a-zäöüßáàâóòôúùû]+/~
203

di68kap's avatar
di68kap committed
204
DEU_WORT         = DEU_GROSS | DEU_KLEIN | GROSSBUCHSTABE
di68kap's avatar
di68kap committed
205
DEU_WORT_ERW     = DEU_WORT | ( "(" DEU_WORT ")" )
di68kap's avatar
di68kap committed
206
207
208
DEU_GROSS        = /[A-ZÄÖÜ][a-zäöüßę_\-]+/~
GROSSBUCHSTABE   = /[A-ZÄÖÜ](?=[ \t\n])/~
KLEINBUCHSTABE   = /[a-zäöü](?=[ \t\n])/~
di68kap's avatar
di68kap committed
209
GRI_BUCHSTABE    = /[αβγδεζηθικλμνξοπρςστυφχψω]/
di68kap's avatar
di68kap committed
210
211
DEU_KLEIN        = /(?!-)[a-zäöüßę_\-]+/~
LAT_WORT         = /(?!-)[a-z|\-_]+/~
di68kap's avatar
di68kap committed
212
LAT_WORT_ERW     = LAT_WORT | ( "(" LAT_WORT ")" )
di68kap's avatar
di68kap committed
213
GROSSSCHRIFT     = /(?!-)[A-ZÄÖÜ_\-]+/~
di68kap's avatar
di68kap committed
214
215
ZAHL             = /[\d]+/~
SEITENZAHL       = /[\d]+(?:\^(?:(?:\{[\d\w.]+\})|\w))?/~     # Zahl mit optionale folgendem hochgestelltem Buchstaben oder Text
di68kap's avatar
di68kap committed
216
ROEMISCHE_ZAHL   = /(?=[MDCLXVI])M*(C[MD]|D?C*)(X[CL]|L?X*)(I[XV]|V?I*)(?=[^\w])/~
di68kap's avatar
di68kap committed
217

di68kap's avatar
di68kap committed
218
219
SATZZEICHEN      = /(?!->)(?:(?:,(?!,))|(?:;(?!;))|(?::(?!:))|(?:-(?!-))|[.()\[\]]+)/~  # div. Satzzeichen, aber keine doppelten ,, ;; oder ::
TEIL_SATZZEICHEN = /(?!->)(?:(?:,(?!,))|(?:-(?!-))|[.()]+)/~ # Satzeichen bis auf Doppelpunkt ":", Semikolon ";" und eckige Klammern
di68kap's avatar
di68kap committed
220

221
222
BUCHSTABENFOLGE  = /\w+/~
ZEICHENFOLGE     = /[\w()-]+/~
di68kap's avatar
di68kap committed
223
# EINZEILER        = /[\w()-. \t]+/~
di68kap's avatar
di68kap committed
224
TEXTELEMENT      = DEU_WORT | SEITENZAHL | ROEMISCHE_ZAHL
di68kap's avatar
di68kap committed
225
EINZEILER        = { TEXTELEMENT | TEIL_SATZZEICHEN }+
di68kap's avatar
di68kap committed
226
227
FREITEXT         = { TEXTELEMENT | SATZZEICHEN | GROSSSCHRIFT }+
MEHRZEILER       = { FREITEXT | /\s+(?=[\w,;:.\(\)\-])/ }+
228

di68kap's avatar
di68kap committed
229
TR               = ABS | LZ                  # (beliebiger) Trenner
di68kap's avatar
di68kap committed
230
ABS              = /\s*;;?\s*/ | ZWW         # Abschluss (durch Semikolon oder Zeilenwechsel)
di68kap's avatar
di68kap committed
231
# ZW               = /\n/~                   # Zeilenwechsel
di68kap's avatar
di68kap committed
232
LZ               = { COMMENT__ | /\s+/ }+    # Leerzeichen oder -zeilen
di68kap's avatar
di68kap committed
233
234
DPP              = /::?/~                    # Doppelpunkt als Trenner
SEM              = /;;?/~                    # Semikolon als Trenner
di68kap's avatar
di68kap committed
235

di68kap's avatar
di68kap committed
236
ZW               = !LÜCKE ZEILENSPRUNG       # Zeilenwechsel, aber keine Leerzeile(n)
di68kap's avatar
di68kap committed
237
238
ZWW              = ZEILENSPRUNG [ LZ ]       # mindestens ein Zeilenwechsel
LÜCKE            = KOMMENTARZEILEN LEERZEILE [LZ] # Leerraum mit mindestens einer echten Leerzeile
di68kap's avatar
di68kap committed
239
240
241
242
243
LEERZEILE        = /[ \t]*(?:\n[ \t]*)+\n/ ~/\n?/ # eine oder mehrere echte LEERZEILEN
RZS              = /\s*?\n|$/               # Rückwärtiger Zeilensprung oder Textanfang

ZEILENSPRUNG     = /[ \t]*\n/~
KOMMENTARZEILEN  = { /[ \t]*\n?[ \t]*/ COMMENT__ }  # echte Kommentarzeilen
244
KATEGORIENZEILE  = /[^:\n]+[:][ \t]*\n/     # Kategorienzeilen enthalten genau einen Doppelpunkt am Ende der Zeile
245
FORTSETZUNG      = !(ZWW /[^:\n]+[:]/)
di68kap's avatar
di68kap committed
246

247
248
DATEI_ENDE       = !/./
NIEMALS          = /(?!.)/
di68kap's avatar
di68kap committed
249