2.12.2021, 9:00 - 11:00: Due to updates GitLab may be unavailable for some minutes between 09:00 and 11:00.

Commit e4813a41 authored by di68kap's avatar di68kap
Browse files

- MLW ergänzt...

parent 2b713018
LEMMA *facitergula
fascitergula, facietergula, facistergula, facitercula {sim.}
fascitergula
facietergula
facistergula
facitercula {sim.}
GRAMMATIK
......@@ -18,8 +21,8 @@ SCHREIBWEISE
BEDEUTUNG
LAT pannus, faciale, sudarium --
DEU Gesichts-, Schweißtuch {usu liturg.; de re v. {=> eintrag/ibi_X}}:
LAT pannus, faciale, sudarium
DEU Gesichts-, Schweißtuch {usu liturg.; de re v. {=> eintrag/ibi_X}}
* Catal.: thes. Germ.; 28,11 (post 851) "-um III".
* Form.: Sangall.; {#ibi_2} 39 p. 421,16
......@@ -34,7 +37,8 @@ DEU Gesichts-, Schweißtuch {usu liturg.; de re v. {=> eintrag/ibi_X}}:
BEDEUTUNG
LAT capital, rica -- DEU Kopftuch:
LAT capital, rica
DEU Kopftuch
* Transl.: Libor. I; 32
"raptis feminarum -is (fa[s]citergiis {var. l.})."
......@@ -42,3 +46,24 @@ LAT capital, rica -- DEU Kopftuch:
"nuditatem membrorum illius {puellae} tegere festinarunt fideles clerici et laici inprimis cum eorum -cula, dein vestibus solitis."
AUTORIN Weber
// Der folgende Teil wird bis auf die URLs automatisch generiert!
// Kann auch in eine eigene Datei ausgelagert werden.
STELLENVERZEICHNIS fascitergula
* Form.: Sangall.; 39 p. 421,16 {=> URL_1}
* Libri: confrat. I; app. A 6 p. 137,30 {-} // {-} bedeutet: keine URL vorhanden
* Catal.: thes. Germ.;
18,7 {=> URL_3}
28,11 (post 851) {=> URL_4}
76,15 {=> URL_5}
40,5 {=> URL_6}
129a,5 {=> URL_7}
24,8 {=> URL_8}
114,8 {=> URL_9}
6,24 {-}
92,6 {-}
21,20 IIII {=> URL_10}
......@@ -19,6 +19,7 @@ Artikel = [LZ]
[VerweisPosition]
{ UnterArtikel }
ArtikelVerfasser
[Stellenverzeichnis]
[LZ] DATEI_ENDE
......@@ -33,7 +34,7 @@ Lemma = [< klassisch | gesichert >] LemmaWort
LemmaWort = LAT_WORT
LemmaVarianten = LemmaVariante { [","] [ZW] LemmaVariante }
LemmaVarianten = LemmaVariante { [";" | ","] [ZW] LemmaVariante } [ ABS Zusatz ]
LemmaVariante = LAT_WORT [Zusatz]
......@@ -120,7 +121,7 @@ BedeutungsQualifikation = Zusatz # "[" Gegenstand DPP (Verweis | EINZEILER) §"]
BelegPosition = ZWW ["BELEGE" [LZ]] Belege
#### VERWEIS-POSITION #####################################################
#### VERWEIS-POSITION ########################################################
VerweisPosition = ZWW "VERWEISE"
......@@ -136,9 +137,12 @@ ArtikelVerfasser = ZWW ("AUTORIN" | "AUTOR") Name
Name = { NAME | NAMENS_ABKÜRZUNG }+
#### STELLENVERWEISE #########################################################
#### STELLENVERZEICHNIS ######################################################
# TODO: Syntax für Stellenverweise
Stellenverzeichnis = ZWW "STELLENVERZEICHNIS" [LemmaWort] ZWW Verweisliste
Verweisliste = { [LZ] "*" Stellenverweis }
Stellenverweis = BelegQuelle { [ABS] Stelle (NullVerweis | Verweis) }
NullVerweis = "{" "-" "}"
#### Schlüsselwörter #########################################################
......@@ -150,7 +154,6 @@ GRI = "GRIECHISCH" | "GRIECH" | "GRIE" | "GRI"
SCHLUESSELWORT = { //~ /\n/ }+ !ROEMISCHE_ZAHL /[A-ZÄÖÜ]{3,}\s+/
#### ZUSATZ an verschiedenen Stellen der Struktur ############################
Zusatz = { "{" !("=>" | "#") §EinzelnerZusatz { ";;" EinzelnerZusatz } "}" }+
......@@ -163,10 +166,10 @@ Zusatz = { "{" !("=>" | "#") §EinzelnerZusatz { ";;" EinzelnerZusatz } "}
#### BELEGE ##################################################################
Belege = ["*"] Beleg { [LZ] "*" Beleg }
Beleg = [Zusatz] (Verweis [Zitat]) | Zitat ["."]
Beleg = [Zusatz] ((Verweis [Zitat]) | Zitat) [ABS Zusatz] ["."]
Zitat = Quellenangabe
{ SEM [ZW] [Anker] [Zusatz] <Stelle | Verweis>
[[ZW] BelegText] [[TR] Zusatz] }
[[ZW] BelegText] [[LZ] Zusatz] }
Quellenangabe = [Anker] < BelegQuelle | Verweis >
BelegQuelle = Autor DPP Werk
......@@ -208,7 +211,8 @@ DEU_KLEIN = /(?!-)[a-zäöüßę_\-]+/~
LAT_WORT = /(?!-)[a-z|\-_]+/~
LAT_WORT_ERW = LAT_WORT | ( "(" LAT_WORT ")" )
GROSSSCHRIFT = /(?!-)[A-ZÄÖÜ_\-]+/~
ZAHL = /[\d_]+/~
ZAHL = /[\d]+/~
SEITENZAHL = /[\d]+(?:\^(?:(?:\{[\d\w.]+\})|\w))?/~ # Zahl mit optionale folgendem hochgestelltem Buchstaben oder Text
ROEMISCHE_ZAHL = /(?=[MDCLXVI])M*(C[MD]|D?C*)(X[CL]|L?X*)(I[XV]|V?I*)(?=[^\w])/~
SATZZEICHEN = /(?!->)(?:(?:,(?!,))|(?:;(?!;))|(?::(?!:))|(?:-(?!-))|[.()\[\]]+)/~ # div. Satzzeichen, aber keine doppelten ,, ;; oder ::
......@@ -217,7 +221,7 @@ TEIL_SATZZEICHEN = /(?!->)(?:(?:,(?!,))|(?:-(?!-))|[.()]+)/~ # Satzeichen bis au
BUCHSTABENFOLGE = /\w+/~
ZEICHENFOLGE = /[\w()-]+/~
# EINZEILER = /[\w()-. \t]+/~
TEXTELEMENT = DEU_WORT | ZAHL | ROEMISCHE_ZAHL
TEXTELEMENT = DEU_WORT | SEITENZAHL | ROEMISCHE_ZAHL
EINZEILER = { TEXTELEMENT | TEIL_SATZZEICHEN }+
FREITEXT = { TEXTELEMENT | SATZZEICHEN | GROSSSCHRIFT }+
MEHRZEILER = { FREITEXT | /\s+(?=[\w,;:.\(\)\-])/ }+
......@@ -243,4 +247,3 @@ FORTSETZUNG = !(ZWW /[^:\n]+[:]/)
DATEI_ENDE = !/./
NIEMALS = /(?!.)/
DUMMY = "EBNF-Grammatik an dieser Stelle noch nicht definiert!"
......@@ -71,6 +71,7 @@ class MLWGrammar(Grammar):
[VerweisPosition]
{ UnterArtikel }
ArtikelVerfasser
[Stellenverzeichnis]
[LZ] DATEI_ENDE
......@@ -85,7 +86,7 @@ class MLWGrammar(Grammar):
LemmaWort = LAT_WORT
LemmaVarianten = LemmaVariante { [","] [ZW] LemmaVariante }
LemmaVarianten = LemmaVariante { [";" | ","] [ZW] LemmaVariante } [ ABS Zusatz ]
LemmaVariante = LAT_WORT [Zusatz]
......@@ -172,7 +173,7 @@ class MLWGrammar(Grammar):
BelegPosition = ZWW ["BELEGE" [LZ]] Belege
#### VERWEIS-POSITION #####################################################
#### VERWEIS-POSITION ########################################################
VerweisPosition = ZWW "VERWEISE"
......@@ -188,9 +189,12 @@ class MLWGrammar(Grammar):
Name = { NAME | NAMENS_ABKÜRZUNG }+
#### STELLENVERWEISE #########################################################
#### STELLENVERZEICHNIS ######################################################
# TODO: Syntax für Stellenverweise
Stellenverzeichnis = ZWW "STELLENVERZEICHNIS" [LemmaWort] ZWW Verweisliste
Verweisliste = { [LZ] "*" Stellenverweis }
Stellenverweis = BelegQuelle { [ABS] Stelle (NullVerweis | Verweis) }
NullVerweis = "{" "-" "}"
#### Schlüsselwörter #########################################################
......@@ -202,7 +206,6 @@ class MLWGrammar(Grammar):
SCHLUESSELWORT = { //~ /\n/ }+ !ROEMISCHE_ZAHL /[A-ZÄÖÜ]{3,}\s+/
#### ZUSATZ an verschiedenen Stellen der Struktur ############################
Zusatz = { "{" !("=>" | "#") §EinzelnerZusatz { ";;" EinzelnerZusatz } "}" }+
......@@ -215,10 +218,10 @@ class MLWGrammar(Grammar):
#### BELEGE ##################################################################
Belege = ["*"] Beleg { [LZ] "*" Beleg }
Beleg = [Zusatz] (Verweis [Zitat]) | Zitat ["."]
Beleg = [Zusatz] ((Verweis [Zitat]) | Zitat) [ABS Zusatz] ["."]
Zitat = Quellenangabe
{ SEM [ZW] [Anker] [Zusatz] <Stelle | Verweis>
[[ZW] BelegText] [[TR] Zusatz] }
[[ZW] BelegText] [[LZ] Zusatz] }
Quellenangabe = [Anker] < BelegQuelle | Verweis >
BelegQuelle = Autor DPP Werk
......@@ -260,7 +263,8 @@ class MLWGrammar(Grammar):
LAT_WORT = /(?!-)[a-z|\-_]+/~
LAT_WORT_ERW = LAT_WORT | ( "(" LAT_WORT ")" )
GROSSSCHRIFT = /(?!-)[A-ZÄÖÜ_\-]+/~
ZAHL = /[\d_]+/~
ZAHL = /[\d]+/~
SEITENZAHL = /[\d]+(?:\^(?:(?:\{[\d\w.]+\})|\w))?/~ # Zahl mit optionale folgendem hochgestelltem Buchstaben oder Text
ROEMISCHE_ZAHL = /(?=[MDCLXVI])M*(C[MD]|D?C*)(X[CL]|L?X*)(I[XV]|V?I*)(?=[^\w])/~
SATZZEICHEN = /(?!->)(?:(?:,(?!,))|(?:;(?!;))|(?::(?!:))|(?:-(?!-))|[.()\[\]]+)/~ # div. Satzzeichen, aber keine doppelten ,, ;; oder ::
......@@ -269,7 +273,7 @@ class MLWGrammar(Grammar):
BUCHSTABENFOLGE = /\w+/~
ZEICHENFOLGE = /[\w()-]+/~
# EINZEILER = /[\w()-. \t]+/~
TEXTELEMENT = DEU_WORT | ZAHL | ROEMISCHE_ZAHL
TEXTELEMENT = DEU_WORT | SEITENZAHL | ROEMISCHE_ZAHL
EINZEILER = { TEXTELEMENT | TEIL_SATZZEICHEN }+
FREITEXT = { TEXTELEMENT | SATZZEICHEN | GROSSSCHRIFT }+
MEHRZEILER = { FREITEXT | /\s+(?=[\w,;:.\(\)\-])/ }+
......@@ -294,8 +298,6 @@ class MLWGrammar(Grammar):
DATEI_ENDE = !/./
NIEMALS = /(?!.)/
DUMMY = "EBNF-Grammatik an dieser Stelle noch nicht definiert!"
"""
DEU_WORT = Forward()
FREITEXT = Forward()
......@@ -303,24 +305,24 @@ class MLWGrammar(Grammar):
Kategorien = Forward()
LAT_WORT = Forward()
LZ = Forward()
LemmaWort = Forward()
ROEMISCHE_ZAHL = Forward()
SATZZEICHEN = Forward()
SEITENZAHL = Forward()
TEIL_SATZZEICHEN = Forward()
TEXTELEMENT = Forward()
ZAHL = Forward()
ZWW = Forward()
Zusatz = Forward()
flexion = Forward()
genus = Forward()
wortart = Forward()
source_hash__ = "cf6864469af6da5c73aae7ea82cdceef"
source_hash__ = "5acd793ecc09621740b44d8005c673d0"
parser_initialization__ = "upon instantiation"
COMMENT__ = r'(?:\/\/.*)|(?:\/\*(?:.|\n)*?\*\/)'
WHITESPACE__ = r'[\t ]*'
WSP__ = mixin_comment(whitespace=WHITESPACE__, comment=COMMENT__)
wspL__ = ''
wspR__ = WSP__
DUMMY = Token("EBNF-Grammatik an dieser Stelle noch nicht definiert!")
NIEMALS = RegExp('(?!.)')
DATEI_ENDE = NegativeLookahead(RegExp('.'))
FORTSETZUNG = NegativeLookahead(Series(ZWW, RegExp('[^:\\n]+[:]')))
......@@ -340,13 +342,14 @@ class MLWGrammar(Grammar):
MEHRZEILER = OneOrMore(Alternative(FREITEXT, RegExp('\\s+(?=[\\w,;:.\\(\\)\\-])')))
FREITEXT.set(OneOrMore(Alternative(TEXTELEMENT, SATZZEICHEN, GROSSSCHRIFT)))
EINZEILER = OneOrMore(Alternative(TEXTELEMENT, TEIL_SATZZEICHEN))
TEXTELEMENT.set(Alternative(DEU_WORT, ZAHL, ROEMISCHE_ZAHL))
TEXTELEMENT.set(Alternative(DEU_WORT, SEITENZAHL, ROEMISCHE_ZAHL))
ZEICHENFOLGE = RE('[\\w()-]+')
BUCHSTABENFOLGE = RE('\\w+')
TEIL_SATZZEICHEN.set(RE('(?!->)(?:(?:,(?!,))|(?:-(?!-))|[.()]+)'))
SATZZEICHEN.set(RE('(?!->)(?:(?:,(?!,))|(?:;(?!;))|(?::(?!:))|(?:-(?!-))|[.()\\[\\]]+)'))
ROEMISCHE_ZAHL.set(RE('(?=[MDCLXVI])M*(C[MD]|D?C*)(X[CL]|L?X*)(I[XV]|V?I*)(?=[^\\w])'))
ZAHL.set(RE('[\\d_]+'))
SEITENZAHL.set(RE('[\\d]+(?:\\^(?:(?:\\{[\\d\\w.]+\\})|\\w))?'))
ZAHL = RE('[\\d]+')
GROSSSCHRIFT.set(RE('(?!-)[A-ZÄÖÜ_\\-]+'))
LAT_WORT_ERW = Alternative(LAT_WORT, Series(Token("("), LAT_WORT, Token(")")))
LAT_WORT.set(RE('(?!-)[a-z|\\-_]+'))
......@@ -376,8 +379,8 @@ class MLWGrammar(Grammar):
BelegText = Series(RegExp('"'), ZeroOrMore(Alternative(MEHRZEILER, Zusatz)), RE('"'), Option(Token(".")), mandatory=2)
BelegQuelle = Series(Autor, DPP, Werk)
Quellenangabe = Series(Option(Anker), SomeOf(BelegQuelle, Verweis))
Zitat = Series(Quellenangabe, ZeroOrMore(Series(SEM, Option(ZW), Option(Anker), Option(Zusatz), SomeOf(Stelle, Verweis), Option(Series(Option(ZW), BelegText)), Option(Series(Option(TR), Zusatz)))))
Beleg = Alternative(Series(Option(Zusatz), Series(Verweis, Option(Zitat))), Series(Zitat, Option(Token("."))))
Zitat = Series(Quellenangabe, ZeroOrMore(Series(SEM, Option(ZW), Option(Anker), Option(Zusatz), SomeOf(Stelle, Verweis), Option(Series(Option(ZW), BelegText)), Option(Series(Option(LZ), Zusatz)))))
Beleg = Series(Option(Zusatz), Alternative(Series(Verweis, Option(Zitat)), Zitat), Option(Series(ABS, Zusatz)), Option(Token(".")))
Belege = Series(Option(Token("*")), Beleg, ZeroOrMore(Series(Option(LZ), Token("*"), Beleg)))
FreierZusatz = OneOrMore(Alternative(FREITEXT, VerweisKern, Verweis))
GemischterZusatz = Series(Alternative(Token("usu"), Token("plur. sensu sing.")), FreierZusatz)
......@@ -388,6 +391,10 @@ class MLWGrammar(Grammar):
GRI = Alternative(Token("GRIECHISCH"), Token("GRIECH"), Token("GRIE"), Token("GRI"))
DEU = Alternative(Token("DEUTSCH"), Token("DEU"))
LAT = Alternative(Token("LATEINISCH"), Token("LAT"))
NullVerweis = Series(Token("{"), Token("-"), Token("}"))
Stellenverweis = Series(BelegQuelle, ZeroOrMore(Series(Option(ABS), Stelle, Alternative(NullVerweis, Verweis))))
Verweisliste = ZeroOrMore(Series(Option(LZ), Token("*"), Stellenverweis))
Stellenverzeichnis = Series(ZWW, Token("STELLENVERZEICHNIS"), Option(LemmaWort), ZWW, Verweisliste)
Name = OneOrMore(Alternative(NAME, NAMENS_ABKÜRZUNG))
ArtikelVerfasser = Series(ZWW, Alternative(Token("AUTORIN"), Token("AUTOR")), Name)
UnterArtikel = Series(ZWW, Token("UNTER-ARTIKEL"))
......@@ -435,13 +442,13 @@ class MLWGrammar(Grammar):
Grammatik = Series(wortart, ABS, flexion, Option(genus), mandatory=1)
GrammatikPosition = Series(ZWW, Token("GRAMMATIK"), Option(LZ), Grammatik, ZeroOrMore(Series(ABS, GrammatikVariante)), mandatory=3)
LemmaVariante = Series(LAT_WORT, Option(Zusatz))
LemmaVarianten = Series(LemmaVariante, ZeroOrMore(Series(Option(Token(",")), Option(ZW), LemmaVariante)))
LemmaWort = Synonym(LAT_WORT)
LemmaVarianten = Series(LemmaVariante, ZeroOrMore(Series(Option(Alternative(Token(";"), Token(","))), Option(ZW), LemmaVariante)), Option(Series(ABS, Zusatz)))
LemmaWort.set(Synonym(LAT_WORT))
gesichert = Token("$")
klassisch = Token("*")
Lemma = Series(Option(SomeOf(klassisch, gesichert)), LemmaWort)
LemmaPosition = Series(Option(ABS), Token("LEMMA"), Option(LZ), Lemma, TR, Option(LemmaVarianten), GrammatikPosition, Option(Zusatz), mandatory=3)
Artikel = Series(Option(LZ), OneOrMore(LemmaPosition), Option(EtymologiePosition), Option(ArtikelKopf), BedeutungsPosition, Option(VerweisPosition), ZeroOrMore(UnterArtikel), ArtikelVerfasser, Option(LZ), DATEI_ENDE, mandatory=1)
Artikel = Series(Option(LZ), OneOrMore(LemmaPosition), Option(EtymologiePosition), Option(ArtikelKopf), BedeutungsPosition, Option(VerweisPosition), ZeroOrMore(UnterArtikel), ArtikelVerfasser, Option(Stellenverzeichnis), Option(LZ), DATEI_ENDE, mandatory=1)
root__ = Artikel
def get_grammar() -> MLWGrammar:
......@@ -498,6 +505,7 @@ MLW_AST_transformation_table = {
"Zusatz": [],
"ArtikelVerfasser": [],
"Name": [],
"Stelle": [reduce_single_child],
"SW_LAT": [replace_or_reduce],
"SW_DEU": [replace_or_reduce],
"SW_GRIECH": [replace_or_reduce],
......
......@@ -142,3 +142,11 @@ F1: """
[fail:FREITEXT]
F1: """Text -> Verweis"""
[match:SEITENZAHL]
M1: "123"
M2: "123^b"
M3: "4^{capit.}"
\ No newline at end of file
......@@ -32,6 +32,11 @@ M9: """Arbeo: Emm.; 16 p. 49,17 "ex imperio principis ... in ospiti sui scuriam
{episcopus} {persaepe} {v. et {=> p. 1407, 57|ziel}}"""
M10:"""Arbeo: Emm.; 16 p. 49,17 "ex imperio principis ... in ospiti sui scuriam ... deductus est"
{episcopus;; persaepe;; v. et {=> p. 1407, 57|ziel}}"""
M11:"""Otto Frising.: gest.;
1,24 p. 37,12
"Romanorum principem adeunt apocrisiarii imperatoris Constantinopolitani tam
confederationis vinculum ... inter duo imperia, Hesperiae videlicet et orientis,
renovare cupientes quam {eqs.}" {al}."""
[fail:Beleg]
F1: "* nächster Beleg"
......@@ -43,6 +48,7 @@ M1: """{saepe}"""
[match:Stelle]
M1: """app. A 6 p. 137,30 """
M2: """5 p. 976^A"""
[fail:Werk]
......
[match:Stellenverzeichnis]
M1: """
STELLENVERZEICHNIS fascitergula
* Form.: Sangall.; 39 p. 421,16 {=> URL_1}
* Libri: confrat. I; app. A 6 p. 137,30 {-} // {-} bedeutet: keine URL vorhanden
* Catal.: thes. Germ.;
18,7 {=> URL_3}
28,11 (post 851) {=> URL_4}
76,15 {=> URL_5}
40,5 {=> URL_6}
129a,5 {=> URL_7}
24,8 {=> URL_8}
114,8 {=> URL_9}
6,24 {-}
92,6 {-}
21,20 IIII {=> URL_10}"""
......@@ -646,3 +646,41 @@ Fail-test "f1"
### Test-code:
Text -> Verweis
Test of parser: "SEITENZAHL"
============================
Match-test "m1"
---------------
### Test-code:
123
### AST
(SEITENZAHL
"123"
)
Match-test "m2"
---------------
### Test-code:
123^b
### AST
(SEITENZAHL
"123^b"
)
Match-test "m3"
---------------
### Test-code:
4^{capit.}
### AST
(SEITENZAHL
"4^{capit.}"
)
\ No newline at end of file
......@@ -36,7 +36,7 @@ from MLWCompiler import get_grammar, get_transformer
with toolkit.logging(True):
error_report = testing.grammar_suite('grammar_tests', get_grammar, get_transformer,
fn_patterns=['*_test*'],
fn_patterns=['08_test*'],
verbose=True)
print(error_report)
print(error_report[:error_report.find('\n')])
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment