MLW.ebnf 2.91 KB
Newer Older
1
2
3
4
5
6
7
8
# EBNF-Syntax für MLW-Artikel

@ comment       =  /#.*(?:\n|$)/    # Kommentare beginnen mit '#' und reichen bis zum Zeilenende
@ whitespace    =  /\s*/            # Auch Zeilenspränge zählen als Leerraum
@ literalws     =  both             # Leerraum vor und nach Literalen wird automatisch entfernt


Artikel         = [LEER]
9
                  §LemmaPosition  [ArtikelKopf]  §BedeutungsPosition  §Autorinfo
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
                  [LEER]  DATEI_ENDE


#### LEMMA-POSITION ##########################################################

LemmaPosition   = "LEMMA"  §Lemma  [LemmaVarianten]  §GrammatikPosition

Lemma           = [_tll]  WORT_KLEIN
_tll            = "*"

LemmaVarianten  = "VARIANTEN" §LVariante  { "," §LVariante }  [";" §LVZusatz]
LVariante       = ~/(?:[a-z]|-)+/~  # Buchstabenfolge mit Trennzeichen "-"
LVZusatz        = "sim."



#### GRAMMATIK-POSITION ######################################################

28
GrammatikPosition = "GRAMMATIK" §_wortart §";"  §Flexionen  [_genus]  {GrammatikVarianten} [";" | "."]
29
30
31
32
33
34
35

_wortart        = "nomen"  | "n." |
                  "verb"   | "v." |
                  "adverb" | "adv." |
                  "adjektiv" | "adj."


36
GrammatikVarianten = ";" §GVariante
37
38
39
GVariante       = Flexionen  [_genus]  ":"  Beleg

Flexionen       = Flexion { "," §Flexion }
40
Flexion         = /-?[a-z]+/~
41
42
43
44
45
46
47
48
49
50

_genus          = "maskulinum" | "m." |
                  "femininum" | "f." |
                  "neutrum" | "n."



#### ARTIKEL-KOPF ############################################################

ArtikelKopf     = SchreibweisenPosition
51
52
SchreibweisenPosition =  "SCHREIBWEISE" §SWTyp ":" §SWVariante { "," §SWVariante}
SWTyp           = "script." | "script. fat-"
53
SWVariante      = Schreibweise ":" Beleg
di68kap's avatar
di68kap committed
54
Schreibweise    = "vizreg-" | "festregel(a)" | "fezdregl(a)" | "fat-"
55

56
57
58
Beleg           = Verweis
Verweis         = ~/>>\w+/~
VerweisZiel     = ~/<\w+>/~
59
60
61
62


#### BEDEUTUNGS-POSITION #####################################################

63
BedeutungsPosition = { "BEDEUTUNG" Bedeutung }+
64
65

Bedeutung       = Interpretamente | Bedeutungskategorie
66
67
Bedeutungskategorie = /(?:(?![A-ZÄÖÜ][A-ZÄÖÜ]).)+/~
Interpretamente = LateinischeBedeutung  DeutscheBedeutung  [Belege]
68
69
70
LateinischeBedeutung = "LAT" /(?:(?![A-ZÄÖÜ][A-ZÄÖÜ]).)+/~
DeutscheBedeutung = "DEU" /(?:(?![A-ZÄÖÜ][A-ZÄÖÜ]).)+/~
Belege          = "BELEGE" { "* " EinBeleg }
di68kap's avatar
di68kap committed
71
EinBeleg        = /((?!((BEDEUTUNG)|\*))(.|\n))*/~
72
73


74
75
76
77
#### AUTOR/AUTORIN ###########################################################

Autorinfo       = ("AUTORIN" | "AUTOR") Name
Name            = WORT { WORT | /[A-ZÄÖÜÁÀ]\./ }
78
79
80
81


#### MISZELLANEEN ############################################################

82
83
84
85
WORT            = /[A-ZÄÖÜ]?[a-zäöüß]+/~
WORT_GROSS      = /[A-ZÄÖÜ][a-zäöüß]+/~
WORT_KLEIN      = /[a-zäöüß]+/~
LAT_WORT        = /[a-z]+/~
86
87
88
89
GROSSSCHRIFT    = /[A-ZÄÖÜ]+/~

LEER            = /\s*/
DATEI_ENDE      = !/./
90
NIEMALS         = /(?!.)/