Starting from 2021-07-01, all LRZ GitLab users will be required to explicitly accept the GitLab Terms of Service. Please see the detailed information at https://doku.lrz.de/display/PUBLIC/GitLab and make sure that your projects conform to the requirements.

Commit aa6c640c authored by di68kap's avatar di68kap
Browse files

- MLW: Tests und Beispiele lassen sich jetzt fehlerfrei parsen

parent c04f969e
......@@ -254,3 +254,6 @@ BEDEUTUNG
DEUTSCH Regierungsform
* Albert. M.: pol.; 3,4^{capit.} "de prima civitatum origine deque imperiorum discrimine."
AUTORIN unbekannt
......@@ -108,15 +108,19 @@ U5Bedeutung = { ZWW "UUUUU_BEDEUTUNG" [LZ] §UntersteBedeutung }+
Bedeutung = (Interpretamente | Bedeutungskategorie) [BelegPosition]
UntersteBedeutung = Interpretamente [BelegPosition]
Bedeutungskategorie = { EINZEILER [LZ] [BedeutungsQualifikation] [LZ] } §":"
Bedeutungskategorie = { EINZEILER [LZ] [Zusatz] [LZ] } §":"
Interpretamente = LateinischeBedeutung ("--"| LZ) §DeutscheBedeutung [":"]
LateinischeBedeutung = LAT [LZ] LateinischerAusdruck { <","|";"|ZW> LateinischerAusdruck }
DeutscheBedeutung = DEU [LZ] DeutscherAusdruck { <","|";"|ZW> DeutscherAusdruck }
LateinischerAusdruck = LAT_WORT_ERW { //~ LAT_WORT_ERW } [[LZ] BedeutungsQualifikation]
DeutscherAusdruck = DEU_WORT_ERW { //~ DEU_WORT_ERW } [[LZ] BedeutungsQualifikation]
BedeutungsQualifikation = Zusatz # "[" Gegenstand DPP (Verweis | EINZEILER) §"]"
LateinischeBedeutung = LAT [LZ] [Zusatz] LateinischerAusdruck
DeutscheBedeutung = DEU [LZ] [Zusatz] DeutscherAusdruck
LateinischerAusdruck = LAT_WORT { [ZW] ((/[,;]?/~ [ZW] (LAT_WORT | ("(" LateinischerAusdruck ")")))
| Zusatz) }
DeutscherAusdruck = DEU_WORT { [ZW] ((/[,;]?/~ [ZW] (DEU_WORT | ("(" DeutscherAusdruck")")))
| Zusatz) }
# LateinischerAusdruck = LAT_WORT_ERW { //~ LAT_WORT_ERW } [[LZ] BedeutungsQualifikation]
# DeutscherAusdruck = DEU_WORT_ERW { //~ DEU_WORT_ERW } [[LZ] BedeutungsQualifikation]
# LateinischerAusdruck = LAT_WORT [[LZ] BedeutungsQualifikation]
# DeutscherAusdruck = DEU_WORT [[LZ] BedeutungsQualifikation]
BelegPosition = ZWW ["BELEGE" [LZ]] Belege
......@@ -133,8 +137,8 @@ UnterArtikel = ZWW "UNTER-ARTIKEL"
#### AUTOR/AUTORIN ###########################################################
ArtikelVerfasser = ZWW ("AUTORIN" | "AUTOR") Name
Name = { NAME | NAMENS_ABKÜRZUNG }+
ArtikelVerfasser = ZWW ("AUTORIN" | "AUTOR") §Name
Name = { NAME | NAMENS_ABKÜRZUNG | "unbekannt" }+
#### STELLENVERZEICHNIS ######################################################
......@@ -202,14 +206,14 @@ NAMENS_ABKÜRZUNG = /[A-ZÄÖÜÁÀÂÓÒÔÚÙÛ]\./~
NAME = /[A-ZÄÖÜÁÀÓÒÚÙÂÔÛ][a-zäöüßáàâóòôúùû]+/~
DEU_WORT = DEU_GROSS | DEU_KLEIN | GROSSBUCHSTABE
DEU_WORT_ERW = DEU_WORT | (["("] DEU_WORT [")"])
# DEU_WORT_ERW = DEU_WORT | (["("] DEU_WORT [")"])
DEU_GROSS = /[A-ZÄÖÜ][a-zäöüßę_\-.]+/~
GROSSBUCHSTABE = /[A-ZÄÖÜ](?=[ \t\n])/~
KLEINBUCHSTABE = /[a-zäöü](?=[ \t\n])/~
GRI_BUCHSTABE = /[αβγδεζηθικλμνξοπρςστυφχψω]/
DEU_KLEIN = /(?!--)[a-zäöüßęõ_\-.]+/~
LAT_WORT = /(?!--)[a-z|\-_.]+/~
LAT_WORT_ERW = LAT_WORT | (["("] LAT_WORT [")"])
# LAT_WORT_ERW = LAT_WORT | (["("] LAT_WORT [")"])
GROSSSCHRIFT = /(?!--)[A-ZÄÖÜ_\-]+/~
ZAHL = /[\d]+/~
SEITENZAHL = /[\d]+(?:\^(?:(?:\{[\d\w.]+\})|\w))?/~ # Zahl mit optionale folgendem hochgestelltem Buchstaben oder Text
......
......@@ -160,15 +160,19 @@ class MLWGrammar(Grammar):
Bedeutung = (Interpretamente | Bedeutungskategorie) [BelegPosition]
UntersteBedeutung = Interpretamente [BelegPosition]
Bedeutungskategorie = { EINZEILER [LZ] [BedeutungsQualifikation] [LZ] } §":"
Bedeutungskategorie = { EINZEILER [LZ] [Zusatz] [LZ] } §":"
Interpretamente = LateinischeBedeutung ("--"| LZ) §DeutscheBedeutung [":"]
LateinischeBedeutung = LAT [LZ] LateinischerAusdruck { <","|";"|ZW> LateinischerAusdruck }
DeutscheBedeutung = DEU [LZ] DeutscherAusdruck { <","|";"|ZW> DeutscherAusdruck }
LateinischerAusdruck = LAT_WORT_ERW { //~ LAT_WORT_ERW } [[LZ] BedeutungsQualifikation]
DeutscherAusdruck = DEU_WORT_ERW { //~ DEU_WORT_ERW } [[LZ] BedeutungsQualifikation]
BedeutungsQualifikation = Zusatz # "[" Gegenstand DPP (Verweis | EINZEILER) §"]"
LateinischeBedeutung = LAT [LZ] [Zusatz] LateinischerAusdruck
DeutscheBedeutung = DEU [LZ] [Zusatz] DeutscherAusdruck
LateinischerAusdruck = LAT_WORT { [ZW] ((/[,;]?/~ [ZW] (LAT_WORT | ("(" LateinischerAusdruck ")")))
| Zusatz) }
DeutscherAusdruck = DEU_WORT { [ZW] ((/[,;]?/~ [ZW] (DEU_WORT | ("(" DeutscherAusdruck")")))
| Zusatz) }
# LateinischerAusdruck = LAT_WORT_ERW { //~ LAT_WORT_ERW } [[LZ] BedeutungsQualifikation]
# DeutscherAusdruck = DEU_WORT_ERW { //~ DEU_WORT_ERW } [[LZ] BedeutungsQualifikation]
# LateinischerAusdruck = LAT_WORT [[LZ] BedeutungsQualifikation]
# DeutscherAusdruck = DEU_WORT [[LZ] BedeutungsQualifikation]
BelegPosition = ZWW ["BELEGE" [LZ]] Belege
......@@ -185,8 +189,8 @@ class MLWGrammar(Grammar):
#### AUTOR/AUTORIN ###########################################################
ArtikelVerfasser = ZWW ("AUTORIN" | "AUTOR") Name
Name = { NAME | NAMENS_ABKÜRZUNG }+
ArtikelVerfasser = ZWW ("AUTORIN" | "AUTOR") §Name
Name = { NAME | NAMENS_ABKÜRZUNG | "unbekannt" }+
#### STELLENVERZEICHNIS ######################################################
......@@ -254,14 +258,14 @@ class MLWGrammar(Grammar):
NAME = /[A-ZÄÖÜÁÀÓÒÚÙÂÔÛ][a-zäöüßáàâóòôúùû]+/~
DEU_WORT = DEU_GROSS | DEU_KLEIN | GROSSBUCHSTABE
DEU_WORT_ERW = DEU_WORT | (["("] DEU_WORT [")"])
# DEU_WORT_ERW = DEU_WORT | (["("] DEU_WORT [")"])
DEU_GROSS = /[A-ZÄÖÜ][a-zäöüßę_\-.]+/~
GROSSBUCHSTABE = /[A-ZÄÖÜ](?=[ \t\n])/~
KLEINBUCHSTABE = /[a-zäöü](?=[ \t\n])/~
GRI_BUCHSTABE = /[αβγδεζηθικλμνξοπρςστυφχψω]/
DEU_KLEIN = /(?!--)[a-zäöüßęõ_\-.]+/~
LAT_WORT = /(?!--)[a-z|\-_.]+/~
LAT_WORT_ERW = LAT_WORT | (["("] LAT_WORT [")"])
# LAT_WORT_ERW = LAT_WORT | (["("] LAT_WORT [")"])
GROSSSCHRIFT = /(?!--)[A-ZÄÖÜ_\-]+/~
ZAHL = /[\d]+/~
SEITENZAHL = /[\d]+(?:\^(?:(?:\{[\d\w.]+\})|\w))?/~ # Zahl mit optionale folgendem hochgestelltem Buchstaben oder Text
......@@ -299,11 +303,12 @@ class MLWGrammar(Grammar):
NIEMALS = /(?!.)/
"""
DEU_WORT = Forward()
DeutscherAusdruck = Forward()
FREITEXT = Forward()
GROSSSCHRIFT = Forward()
Kategorien = Forward()
LAT_WORT = Forward()
LZ = Forward()
LateinischerAusdruck = Forward()
LemmaWort = Forward()
ROEMISCHE_ZAHL = Forward()
SATZZEICHEN = Forward()
......@@ -315,7 +320,7 @@ class MLWGrammar(Grammar):
flexion = Forward()
genus = Forward()
wortart = Forward()
source_hash__ = "281baae30880effd61f69fe6920192f8"
source_hash__ = "464ddc02bebdae51c3aef3bbee12f793"
parser_initialization__ = "upon instantiation"
COMMENT__ = r'(?:\/\/.*)|(?:\/\*(?:.|\n)*?\*\/)'
WHITESPACE__ = r'[\t ]*'
......@@ -350,14 +355,12 @@ class MLWGrammar(Grammar):
SEITENZAHL.set(RE('[\\d]+(?:\\^(?:(?:\\{[\\d\\w.]+\\})|\\w))?'))
ZAHL = RE('[\\d]+')
GROSSSCHRIFT.set(RE('(?!--)[A-ZÄÖÜ_\\-]+'))
LAT_WORT_ERW = Alternative(LAT_WORT, Series(Option(Token("(")), LAT_WORT, Option(Token(")"))))
LAT_WORT.set(RE('(?!--)[a-z|\\-_.]+'))
LAT_WORT = RE('(?!--)[a-z|\\-_.]+')
DEU_KLEIN = RE('(?!--)[a-zäöüßęõ_\\-.]+')
GRI_BUCHSTABE = RegExp('[αβγδεζηθικλμνξοπρςστυφχψω]')
KLEINBUCHSTABE = RE('[a-zäöü](?=[ \\t\\n])')
GROSSBUCHSTABE = RE('[A-ZÄÖÜ](?=[ \\t\\n])')
DEU_GROSS = RE('[A-ZÄÖÜ][a-zäöüßę_\\-.]+')
DEU_WORT_ERW = Alternative(DEU_WORT, Series(Option(Token("(")), DEU_WORT, Option(Token(")"))))
DEU_WORT.set(Alternative(DEU_GROSS, DEU_KLEIN, GROSSBUCHSTABE))
NAME = RE('[A-ZÄÖÜÁÀÓÒÚÙÂÔÛ][a-zäöüßáàâóòôúùû]+')
NAMENS_ABKÜRZUNG = RE('[A-ZÄÖÜÁÀÂÓÒÔÚÙÛ]\\.')
......@@ -394,18 +397,17 @@ class MLWGrammar(Grammar):
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)
Name = OneOrMore(Alternative(NAME, NAMENS_ABKÜRZUNG, Token("unbekannt")))
ArtikelVerfasser = Series(ZWW, Alternative(Token("AUTORIN"), Token("AUTOR")), Name, mandatory=2)
UnterArtikel = Series(ZWW, Token("UNTER-ARTIKEL"))
VerweisPosition = Series(ZWW, Token("VERWEISE"))
BelegPosition = Series(ZWW, Option(Series(Token("BELEGE"), Option(LZ))), Belege)
BedeutungsQualifikation = Synonym(Zusatz)
DeutscherAusdruck = Series(DEU_WORT_ERW, ZeroOrMore(Series(RE(''), DEU_WORT_ERW)), Option(Series(Option(LZ), BedeutungsQualifikation)))
LateinischerAusdruck = Series(LAT_WORT_ERW, ZeroOrMore(Series(RE(''), LAT_WORT_ERW)), Option(Series(Option(LZ), BedeutungsQualifikation)))
DeutscheBedeutung = Series(DEU, Option(LZ), DeutscherAusdruck, ZeroOrMore(Series(SomeOf(Token(","), Token(";"), ZW), DeutscherAusdruck)))
LateinischeBedeutung = Series(LAT, Option(LZ), LateinischerAusdruck, ZeroOrMore(Series(SomeOf(Token(","), Token(";"), ZW), LateinischerAusdruck)))
DeutscherAusdruck.set(Series(DEU_WORT, ZeroOrMore(Series(Option(ZW), Alternative(Series(RE('[,;]?'), Option(ZW), Alternative(DEU_WORT, Series(Token("("), DeutscherAusdruck, Token(")")))), Zusatz)))))
LateinischerAusdruck.set(Series(LAT_WORT, ZeroOrMore(Series(Option(ZW), Alternative(Series(RE('[,;]?'), Option(ZW), Alternative(LAT_WORT, Series(Token("("), LateinischerAusdruck, Token(")")))), Zusatz)))))
DeutscheBedeutung = Series(DEU, Option(LZ), Option(Zusatz), DeutscherAusdruck)
LateinischeBedeutung = Series(LAT, Option(LZ), Option(Zusatz), LateinischerAusdruck)
Interpretamente = Series(LateinischeBedeutung, Alternative(Token("--"), LZ), DeutscheBedeutung, Option(Token(":")), mandatory=2)
Bedeutungskategorie = Series(ZeroOrMore(Series(EINZEILER, Option(LZ), Option(BedeutungsQualifikation), Option(LZ))), Token(":"), mandatory=1)
Bedeutungskategorie = Series(ZeroOrMore(Series(EINZEILER, Option(LZ), Option(Zusatz), Option(LZ))), Token(":"), mandatory=1)
UntersteBedeutung = Series(Interpretamente, Option(BelegPosition))
Bedeutung = Series(Alternative(Interpretamente, Bedeutungskategorie), Option(BelegPosition))
U5Bedeutung = OneOrMore(Series(ZWW, Token("UUUUU_BEDEUTUNG"), Option(LZ), UntersteBedeutung, mandatory=3))
......
......@@ -17,8 +17,8 @@
SCHREIBWEISE
script.:
hym-: {=> v. ibi. 1}
em-: Chron.: Fred. 2,35sqq. capit. p. 43. 2,36 p. 60,10.
ym-: Chart.: Sangall. A 194.
em-: Chron.: Fred.; 2,35sqq. capit. p. 43. 2,36 p. 60,10.
ym-: Chart.: Sangall.; A 194.
impir-: {=> v. ibi. 2}"""
[match:Besonderheit]
......@@ -30,5 +30,5 @@
1: """vizreg-: {=> v. ibi 1}"""
2: """festregel(a): {=> v. ibi 2}"""
3: """fezdregl(a): {=> v. ibi 3}"""
4: """em-: Chron.: Fred. 2,35sqq. capit. p. 43. 2,36 p. 60,10."""
5: """ym-: Chart.: Sangall. A 194."""
\ No newline at end of file
4: """em-: Chron.: Fred.; 2,35sqq. capit. p. 43.; 2,36 p. 60,10."""
5: """ym-: Chart.: Sangall.; A 194."""
\ No newline at end of file
......@@ -12,10 +12,10 @@ M1: """LAT capital, rica -- DEU Kopftuch:
clerici et laici inprimis cum eorum -cula, dein vestibus solitis.""""
M2: """in univ.:
* Leg.: Burgund. Rom. 38,1 si quis ... nullo metu aut imperio ad pacta venire conpellitur, sed libera voluntate pactum inisse cognuscitur eqs.
* Ionas: Bob. Columb. 1,17 p. 185,9 quae (sc. ferae) ad imperium eius statim veniebant.
* Lex: Baiuv. 1,10 hoc (sc. lex) per inperium regis vel iudicis fiat.
* Arbeo: Emm. 16 p. 49,17 ex imperio principis ... in ospiti sui scuriam ... deductus est episcopus. persaepe. v. et p. 1407, 57."""
* Leg.: Burgund. Rom.; 38,1 si quis ... nullo metu aut imperio ad pacta venire conpellitur, sed libera voluntate pactum inisse cognuscitur eqs.
* Ionas: Bob. Columb.; 1,17 p. 185,9 quae (sc. ferae) ad imperium eius statim veniebant.
* Lex: Baiuv.; 1,10 hoc (sc. lex) per inperium regis vel iudicis fiat.
* Arbeo: Emm.; 16 p. 49,17 ex imperio principis ... in ospiti sui scuriam ... deductus est episcopus. persaepe. v. et p. 1407, 57."""
[fail:Bedeutung]
F1: """capital, rica -- Kopftuch:
......@@ -43,4 +43,5 @@ M2: """LATEINISCH capital, rica"""
[match:DeutscheBedeutung]
M1: """DEU Gesichts-, Schweißtuch {usu liturg.: de re v. p. 32, 63}"""
M2: """DEUTSCH Kopftuch"""
M3: """Gefolge (des Kaisers; spectat ad militiam)"""
M3: """DEU Gefolge (des Kaisers; spectat ad militiam)"""
M4: """DEUTSCH Wille, (willkürlicher) Beschluss"""
......@@ -142,17 +142,12 @@ Match-test "3"
(:Token
"{"
)
(FREITEXT
(DEU_WORT
(DEU_KLEIN
(:RegExp
"sim"
)
(DEU_WORT
(DEU_KLEIN
(:RegExp
"sim."
)
)
(SATZZEICHEN
"."
)
)
(:Token
"}"
......@@ -214,17 +209,12 @@ Match-test "4"
(:Token
"{"
)
(FREITEXT
(DEU_WORT
(DEU_KLEIN
(:RegExp
"sim"
)
(DEU_WORT
(DEU_KLEIN
(:RegExp
"sim."
)
)
(SATZZEICHEN
"."
)
)
(:Token
"}"
......@@ -354,17 +344,12 @@ Match-test "1"
(:Token
"{"
)
(FREITEXT
(DEU_WORT
(DEU_KLEIN
(:RegExp
"sim"
)
(DEU_WORT
(DEU_KLEIN
(:RegExp
"sim."
)
)
(SATZZEICHEN
"."
)
)
(:Token
"}"
......
......@@ -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=['08_test*'],
fn_patterns=['*_test*'],
verbose=True)
print(error_report)
print(error_report[:error_report.find('\n')])
......
......@@ -21,7 +21,7 @@ from MLWCompiler import get_preprocessor, get_grammar, get_transformer, get_comp
for root, dirs, files in os.walk('Beispiele'):
for fname in files:
entry = os.path.join(root, fname)
if fnmatch.fnmatch(entry, '*imperium.mlw'):
if fnmatch.fnmatch(entry, '*.mlw'):
print('\n Parse: ' + entry)
raw_name = os.path.splitext(entry)[0]
with logging(True):
......
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