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

@ comment       =  /#.*(?:\n|$)/    # Kommentare beginnen mit '#' und reichen bis zum Zeilenende
di68kap's avatar
di68kap committed
4
@ whitespace    =  /[\t\r\ ]*/      # Auch Zeilensprünge zählen als Leerraum
5
6
7
8
@ literalws     =  both             # Leerraum vor und nach Literalen wird automatisch entfernt


Artikel         = [LEER]
9
                  §LemmaPosition  [ArtikelKopf]  §BedeutungsPosition  §Autorinfo
10
11
12
13
14
15
16
                  [LEER]  DATEI_ENDE


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

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

di68kap's avatar
di68kap committed
17
Lemma           = [_tll]  WORT_KLEIN [LEER]
18
19
_tll            = "*"

di68kap's avatar
di68kap committed
20
LemmaVarianten  = "VARIANTEN" [LEER] §LVariante  { TRENNER LVariante }
21
                  [TRENNER LVZusatz] [TRENNER]
di68kap's avatar
di68kap committed
22
23
LVariante       = ~/(?:[a-z]|-)+/~      # Buchstabenfolge mit Trennzeichen "-"
LVZusatz        = "ZUSATZ" "sim."
24
25
26
27
28



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

29
30
GrammatikPosition = "GRAMMATIK" [LEER] §_wortart §TRENNER §Flexionen [_genus]
                    {GrammatikVarianten} [TRENNER]
31
32
33
34
35
36
37

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


38
GrammatikVarianten = TRENNER GVariante
39
40
41
GVariante       = Flexionen  [_genus]  ":"  Beleg

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

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



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

ArtikelKopf     = SchreibweisenPosition
53
54
SchreibweisenPosition =  "SCHREIBWEISE" [LEER] §SWTyp ":" [LEER]
                         §SWVariante { TRENNER SWVariante} [LEER]
55
SWTyp           = "script." | "script. fat-"
56
SWVariante      = Schreibweise ":" Beleg
di68kap's avatar
di68kap committed
57
Schreibweise    = "vizreg-" | "festregel(a)" | "fezdregl(a)" | "fat-"
58

59
Beleg           = Verweis
60
Verweis         = ~/\w+/~
61
VerweisZiel     = ~/<\w+>/~
62
63
64
65


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

66
BedeutungsPosition = { "BEDEUTUNG" [LEER] §Bedeutung [LEER] }+
67

68
Bedeutung       = (Interpretamente | Bedeutungskategorie) [Belege]
69
70
Bedeutungskategorie = /(?:(?![A-ZÄÖÜ][A-ZÄÖÜ]).)+/~ [LEER]
Interpretamente = LateinischeBedeutung [LEER] §DeutscheBedeutung [LEER]
71
72
LateinischeBedeutung = "LAT" /(?:(?![A-ZÄÖÜ][A-ZÄÖÜ]).)+/~
DeutscheBedeutung = "DEU" /(?:(?![A-ZÄÖÜ][A-ZÄÖÜ]).)+/~
73
74
75
76
Belege          = "BELEGE" [LEER] { "*" EinBeleg }
EinBeleg        = { !(/\s*/ ("*" | "BEDEUTUNG" | "AUTOR" | "NAME" | "ZUSATZ")) /\s*.*\s*/ }+
                  [Zusatz] [LEER]
Zusatz          = "ZUSATZ" /\s*.*/
77
78


79
80
81
82
#### AUTOR/AUTORIN ###########################################################

Autorinfo       = ("AUTORIN" | "AUTOR") Name
Name            = WORT { WORT | /[A-ZÄÖÜÁÀ]\./ }
83
84
85
86


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

87
88
89
90
WORT            = /[A-ZÄÖÜ]?[a-zäöüß]+/~
WORT_GROSS      = /[A-ZÄÖÜ][a-zäöüß]+/~
WORT_KLEIN      = /[a-zäöüß]+/~
LAT_WORT        = /[a-z]+/~
91
92
GROSSSCHRIFT    = /[A-ZÄÖÜ]+/~

di68kap's avatar
di68kap committed
93
94
95
96
TRENNER         = /\s*;\s*/ | { ZSPRUNG }+
ZSPRUNG         = /\n/~

LEER            = /\s+/                     # horizontaler und(!) vertikaler Leerraum
97
DATEI_ENDE      = !/./
98
NIEMALS         = /(?!.)/
di68kap's avatar
di68kap committed
99