Commit cfc3f67a authored by di68kap's avatar di68kap

- Anpassung der Grammatik-Tests and geänderte Reglen für wortarten-Angabe

parent cfa3a7e1
......@@ -14,13 +14,16 @@
<LemmaPosition>
<LemmaBlock>
<Lemma id="HAHAE"><LemmaWort>hahae</LemmaWort></Lemma>
<LemmaVarianten>(<LemmaVariante>ha ha he</LemmaVariante>),</LemmaVarianten>
<LemmaVarianten>(<LemmaVariante>ha ha he</LemmaVariante>) </LemmaVarianten>
<GrammatikPosition>
<Grammatik>
<wortart verdichtung="interi." wortart="interjektion (ir)ridendi (cf. ThLL. VI/3. p. 2513,-56sqq.)">interjektion <wa_ergänzung>(ir)ridendi <Zusatz>(cf. <Verweise><a href="VERWEISZIEL_FEHLT">ThLL. VI/3. p. 2513,-56sqq.</a></Verweise>)</Zusatz></wa_ergänzung>. </wortart>
<WA_UNBEKANNT davor=" ☠ " class="error" title="Error: Unbekannte Wortart(en) in &#34;interjectio&#34;! Bitte verwende eine der möglichen lateinischen Angaben oder Verdichtungen." err="6:5: Error (5520): Unbekannte Wortart(en) in 'interjectio'! Bitte verwende eine der möglichen lateinischen Angaben oder Verdichtungen.">interjectio.</WA_UNBEKANNT>
</Grammatik>
</GrammatikPosition>
</LemmaBlock>
<ZOMBIE__ davor="☠ " class="error" title="Error: Artikelkopf, Etymologie- oder Bedeutungsposition erwaretet, aber nicht &#34; (ir)riden...&#34; !" danach=" ☠" err="6:16: Error (1010): Artikelkopf, Etymologie- oder Bedeutungsposition erwaretet, aber nicht ' (ir)riden...' !">(ir)ridendi {(cf. {=&gt; ThLL. VI/3. p. 2513,-56sqq.|-})}.</ZOMBIE__>
</LemmaPosition>
<BedeutungsPosition>
<Bedeutung class="kein_linker_rand">
......@@ -28,9 +31,11 @@
<Quellenangabe autor="Liutpr." werk="leg.">
<Quelle>
<Autor>Liutpr.</Autor>
<Werk>leg.</Werk>
</Quelle>
<BelegStelle><Stellenangabe><Stelle>21</Stelle></Stellenangabe> <BelegText>cum Nicenam Chalcedonensem <Zusatz>(sc. synodum)</Zusatz> ... edicerem : ‘<BelegLemma verdichtung="ha! ha! he!" id="ha__ha__he_" lemma="ha! ha! he!" title="ha! ha! he!">ha! ha! he!</BelegLemma>’, ait patriarcha, ‘Saxonicam dicere es oblitus.’</BelegText></BelegStelle>
<BelegStelle><Stellenangabe><Stelle>21</Stelle></Stellenangabe> <BelegText>cum Nicenam Chalcedonensem <Zusatz>(sc. synodum)</Zusatz> ... edicerem : ‘<BelegLemma verdichtung="ha! ha! he!" id="ha__ha__he_" globaleId="hahahe.ha--ha--he-" lemma="ha! ha! he!" title="ha! ha! he!">ha! ha! he!</BelegLemma>’, ait patriarcha, ‘Saxonicam dicere es oblitus.’</BelegText></BelegStelle>
</Quellenangabe>
</Beleg>
<Beleg>
......@@ -38,7 +43,8 @@
<Quelle>
<Autor>Vita Norb. I</Autor>
</Quelle>
<BelegStelle><Stellenangabe><Stelle>10 p. 680,51</Stelle></Stellenangabe> <BelegText>demon insultando clamabat: ‘<BelegLemma verdichtung="ha! ha! he!" lemma="ha! ha! he!" title="ha! ha! he!">ha! ha! he!</BelegLemma></BelegText></BelegStelle>
<BelegStelle><Stellenangabe><Stelle>10 p. 680,51</Stelle></Stellenangabe> <BelegText>demon insultando clamabat: ‘<BelegLemma verdichtung="ha! ha! he!" lemma="ha! ha! he!" title="ha! ha! he!">ha! ha! he!</BelegLemma></BelegText> </BelegStelle>
</Quellenangabe>
</Beleg>
</Bedeutung>
......
......@@ -3,7 +3,7 @@ LEMMA hahae
(ha ha he)
GRAMMATIK
interjektion (ir)ridendi {(cf. {=> ThLL. VI/3. p. 2513,-56sqq.|-})}
interjectio (ir)ridendi {(cf. {=> ThLL. VI/3. p. 2513,-56sqq.|-})}
BEDEUTUNG OHNE
......
......@@ -5,32 +5,27 @@
<Lemma id="HAHAE">
<LemmaWort>hahae</LemmaWort>
</Lemma>
<L> </L>
<LemmaVarianten>
<LemmaVariante>
<TEXT>ha ha he</TEXT>
<TEXT>ha</TEXT>
<L> </L>
<TEXT>ha</TEXT>
<L> </L>
<TEXT>he</TEXT>
</LemmaVariante>
</LemmaVarianten>
<L> </L>
<GrammatikPosition>
<Grammatik>
<wortart verdichtung="interi.">
<TEXT>interjektion</TEXT>
<L> </L>
<wa_ergänzung>
<TEXT>(ir)ridendi </TEXT>
<Zusatz>
<TEXT>(cf. </TEXT>
<Verweise>
<a href="VERWEISZIEL_FEHLT">ThLL. VI/3. p. 2513,-56sqq.</a>
</Verweise>
<TEXT>)</TEXT>
</Zusatz>
</wa_ergänzung>
</wortart>
<WA_UNBEKANNT err="6:5: Error (5520): Unbekannte Wortart(en) in 'interjectio'! Bitte verwende eine der möglichen lateinischen Angaben oder Verdichtungen.">interjectio</WA_UNBEKANNT>
</Grammatik>
</GrammatikPosition>
<L> </L>
</LemmaBlock>
<ZOMBIE__ err="6:16: Error (1010): Artikelkopf, Etymologie- oder Bedeutungsposition erwaretet, aber nicht ' (ir)riden...' !">
(ir)ridendi {(cf. {=&gt; ThLL. VI/3. p. 2513,-56sqq.|-})}
</ZOMBIE__>
</LemmaPosition>
<BedeutungsPosition>
<Bedeutung>
......@@ -50,20 +45,17 @@
<BelegText>
<TEXT>cum Nicenam Chalcedonensem </TEXT>
<Zusatz>(sc. synodum)</Zusatz>
<L> </L>
<TEXT>... edicerem : ‘</TEXT>
<BelegLemma verdichtung="ha! ha! he!" id="ha__ha__he_">ha! ha! he!</BelegLemma>
<TEXT> ... edicerem : ‘</TEXT>
<BelegLemma verdichtung="ha! ha! he!" id="ha__ha__he_" globaleId="hahahe.ha--ha--he-">ha! ha! he!</BelegLemma>
<TEXT>’, ait patriarcha, ‘Saxonicam dicere es oblitus.’</TEXT>
</BelegText>
</BelegStelle>
</Quellenangabe>
</Beleg>
<Beleg>
<Quellenangabe autor="Vita Norb." werk="I">
<Quellenangabe autor="Vita Norb. I" werk="">
<Quelle>
<Autor>Vita Norb.</Autor>
<L> </L>
<Werk>I</Werk>
<Autor>Vita Norb. I</Autor>
</Quelle>
<L> </L>
<BelegStelle>
......
DHParser-submodule @ cfb4b043
Subproject commit d622d9c713a3221fa7d42bd7baf749370bfc536e
Subproject commit cfb4b043ac76d299ffdee0da6604c6a9079b9f62
......@@ -67,7 +67,7 @@ GrammatikPosition = ZWW "GRAMMATIK" [LZ] Grammatik [GrammatikVarianten] [Zusatz]
Grammatik = §(wortarten &ABS | WA_UNBEKANNT ) [ABS flexion] [[ABS] genera ]
wortarten = wortart { "vel" ["raro" | "semel" | Zusatz] wortart }
wortarten = wortart { ("vel"|ET_VERBOTEN) ["raro" | "semel" | Zusatz] wortart }
@ wortart_resume = /(?=(?:[-:;\n{]|vel|raro|semel))/
wortart = "adverbium" | "adv."
| "adiectivum" §nom_klasse | "adi." §nom_klasse
......@@ -83,6 +83,7 @@ wortart = "adverbium" | "adv."
| "verbum" §verb_klasse
WA_UNBEKANNT = /\w+\.?/ { ~ /\w+\.?/ }
ET_VERBOTEN = "et"
wa_ergänzung = { EINZEILER | Zusatz }+
......@@ -425,8 +426,9 @@ MEHRZEILER = { FREITEXT | /\s+(?=[\w,;:.\-])/ }+
L = ~ # signifikantes Leerzeichen
LL = LZ # Synonym für Leerzeilen oder -zeichen. Wird anders als LZ nicht gelöscht, sondern durch L ersetzt
# TR = ABS | LZ # (beliebiger) Trenner
ABS = /\s*;;?/ LZ | ZWW # Abschluss (durch Semikolon oder Zeilenwechsel)
# TR = ABS | LZ # (beliebiger) Trenner
# ABS = /\s*;;?/ LZ | ZWW | /$/ # Abschluss (durch Semikolon oder Zeilenwechsel)
ABS = /\s*/ (/;;?/ LZ | /$/) | ZWW # Abschluss (durch Semikolon oder Zeilenwechsel)
LZ = { COMMENT__ | /\s+/ }+ # Leerzeichen oder -zeilen
DPP = /::?/~ # Doppelpunkt als Trenner
# SEM = /;;?/~ # Semikolon als Trenner
......
......@@ -57,7 +57,7 @@ from DHParser import is_filename, Grammar, Compiler, Lookahead, Alternative, Tok
set_config_value, replace_by_children, RootNode, access_presets, finalize_presets, \
access_thread_locals, TreeProcessor, process_tree, ZOMBIE_TAG, merge_adjacent, remove_if, \
update_attr, get_config_value, Lookbehind, has_descendant, neg, chain, resume_notices_on, \
set_tracer, trace_history, is_warning
set_tracer, trace_history, is_warning, add_error
from DHParser.log import start_logging
......@@ -130,7 +130,7 @@ class MLWGrammar(Grammar):
opus = Forward()
wortart = Forward()
wortarten = Forward()
source_hash__ = "fb0b646ff5eba67af326e2d7c1cb8489"
source_hash__ = "2d19a28c6a590ce605022d07576ebe84"
anonymous__ = re.compile('_\\w+$')
static_analysis_pending__ = [True]
parser_initialization__ = ["upon instantiation"]
......@@ -177,7 +177,7 @@ class MLWGrammar(Grammar):
ZW = Series(NegativeLookahead(LÜCKE), ZEILENSPRUNG)
DPP = Series(RegExp('::?'), wsp__)
LZ.set(OneOrMore(Alternative(comment__, RegExp('\\s+'))))
ABS = Alternative(Series(RegExp('\\s*;;?'), LZ), ZWW)
ABS = Alternative(Series(RegExp('\\s*'), Alternative(Series(RegExp(';;?'), LZ), RegExp('$'))), ZWW)
LL = Synonym(LZ)
L = Synonym(wsp__)
MEHRZEILER = OneOrMore(Alternative(FREITEXT, RegExp('\\s+(?=[\\w,;:.\\-])')))
......@@ -337,9 +337,10 @@ class MLWGrammar(Grammar):
verb_klasse = Alternative(Series(Token("IV"), wsp__), Series(Token("III"), wsp__), Series(Token("II"), wsp__), Series(Token("I"), wsp__), Series(Token("anormal"), wsp__), Series(Token("unbestimmt"), wsp__))
nom_klasse = Alternative(Series(Token("IV"), wsp__), Series(Token("V"), wsp__), Series(Token("III"), wsp__), Series(Token("I-II"), wsp__), Series(Token("II"), wsp__), Series(Token("I"), wsp__), Series(Token("anormal"), wsp__), Series(Token("unbestimmt"), wsp__))
wa_ergänzung = OneOrMore(Alternative(EINZEILER, Zusatz))
ET_VERBOTEN = Series(Token("et"), wsp__)
WA_UNBEKANNT = Series(RegExp('\\w+\\.?'), ZeroOrMore(Series(wsp__, RegExp('\\w+\\.?'))))
wortart.set(Alternative(Series(Token("adverbium"), wsp__), Series(Token("adv."), wsp__), Series(Series(Token("adiectivum"), wsp__), nom_klasse, mandatory=1), Series(Series(Token("adi."), wsp__), nom_klasse, mandatory=1), Series(Series(Token("comparativum"), wsp__), nom_klasse, mandatory=1), Series(Series(Token("compar."), wsp__), nom_klasse, mandatory=1), Series(Series(Token("interiectio"), wsp__), Option(wa_ergänzung)), Series(Series(Token("interi."), wsp__), Option(wa_ergänzung)), Series(Series(Token("littera"), wsp__), Option(wa_ergänzung)), Series(Series(Token("numerale"), wsp__), nom_klasse, mandatory=1), Series(Series(Token("numer."), wsp__), nom_klasse, mandatory=1), Series(Token("particula"), wsp__), Series(Token("praepositio"), wsp__), Series(Token("praep."), wsp__), Series(Series(Token("pronomen"), wsp__), nom_klasse, mandatory=1), Series(Series(Token("pron."), wsp__), nom_klasse, mandatory=1), Series(Series(Token("substantivum"), wsp__), nom_klasse, mandatory=1), Series(Series(Token("subst."), wsp__), nom_klasse, mandatory=1), Series(Series(Token("superlativum"), wsp__), nom_klasse, mandatory=1), Series(Series(Token("superl."), wsp__), nom_klasse, mandatory=1), Series(Series(Token("verbum"), wsp__), verb_klasse, mandatory=1)))
wortarten.set(Series(wortart, ZeroOrMore(Series(Series(Token("vel"), wsp__), Option(Alternative(Series(Token("raro"), wsp__), Series(Token("semel"), wsp__), Zusatz)), wortart))))
wortarten.set(Series(wortart, ZeroOrMore(Series(Alternative(Series(Token("vel"), wsp__), ET_VERBOTEN), Option(Alternative(Series(Token("raro"), wsp__), Series(Token("semel"), wsp__), Zusatz)), wortart))))
Grammatik = Series(Alternative(Series(wortarten, Lookahead(ABS)), WA_UNBEKANNT), Option(Series(ABS, flexion)), Option(Series(Option(ABS), genera)), mandatory=0, err_msgs=Grammatik_err_msg__, skip=Grammatik_skip__)
GrammatikPosition = Series(ZWW, Series(Token("GRAMMATIK"), wsp__), Option(LZ), Grammatik, Option(GrammatikVarianten), Option(Zusatz))
_lemma_text = Series(LAT_WORT, ZeroOrMore(Series(Option(ZEILENSPRUNG), LAT_WORT)))
......@@ -653,10 +654,11 @@ MLW_AST_transformation_table = {
replace_by_single_child],
"Belege": [flatten, lstrip, replace_by_single_child, merge_adjacent(is_one_of(WSP)),
normalize_wsp_children, move_whitespace],
"Beleg": [flatten, remove_empty, move_whitespace, error_on(
lambda ctx: len(ctx[-1].children) == 1 and (ctx[-1].children[0].tag_name.endswith('Zusatz')),
'Belege dürfen nicht nur aus einem Zusatz bestehen. Stelle ggf. den Zusatz '
'einem nachfolgenden Beleg voran. Beispiel: {{adde}} ANTIDOT. Berolin.; app. p. 77,30')],
"Beleg": [flatten, remove_empty, move_whitespace],
# error_on(
# lambda ctx: len(ctx[-1].children) == 1 and (ctx[-1].children[0].tag_name.endswith('Zusatz')),
# 'Belege dürfen nicht nur aus einem Zusatz bestehen. Stelle ggf. den Zusatz einem '
# 'nachfolgenden Beleg voran. Beispiele: "{{adde}} ANTIDOT. Berlin.; app. p. 77,30", "* {{adde}} imperator"')],
"BelegText": [flatten, remove_content('"'), move_whitespace, reduce_single_child, move_whitespace,
normalize_wsp_children, collapse_children_if(is_one_of({TEXT, WSP}), TEXT), normalize_wsp_children,
remove_empty],
......@@ -753,10 +755,10 @@ MLW_AST_transformation_table = {
":Whitespace, L": [normalize_whitespace],
":RegExp": [normalize_whitespace],
# ":RE": [move_whitespace, reduce_single_child],
"WA_UNBEKANNT": [collapse, error_on(
lambda ctx: True, 'Unbekannte Wortart(en) in "{content}"! '
'Bitte verwende eine der möglichen lateinischen '
'Angaben oder Verdichtungen.', FEHLER_UNBEKANNTE_WORTART)],
"WA_UNBEKANNT": [collapse, add_error(
'Unbekannte Wortart(en) in "{content}"! Bitte verwende eine der möglichen lateinischen '
'Angaben oder Verdichtungen.', FEHLER_UNBEKANNTE_WORTART)],
"ET_VERBOTEN": [add_error('Unerlaubtes Schlüsselwort "et"! Verwende bitte "vel"')],
"*": replace_by_single_child,
">": name_whitespace
}
......
......@@ -765,7 +765,7 @@ unterscheidet der Computer anhand des Hinweises `ibid.`, ob sich der
angehängte Zusatz nur auf den letzten Beleg oder auf alle Belege unterhalb
der entsprechenden (Unter-)Bedeutung bezieht. Ist der Hinweis `ibid.`
vorhanden, geht der Computer davon aus, dass sich der Zusatz nur auf den
ersten Beleg bezieht. Beispiel:
letzten Beleg bezieht. Beispiel:
UU_BEDEUTUNG de animalibus:
......@@ -786,7 +786,7 @@ ersten Beleg bezieht. Beispiel:
quae ... circumdat os #sciae (({sim.} * WILH. SALIC. chirurg.;
2,17 p. 337^D "si ... sagitta ... intraverit in os #scię aut anchae"))." {al.}
**NEU (seit dem 29.8.2019):** In dem Fall, dass der Zusatz sich auf alle Belege
In dem Fall, dass der Zusatz sich auf alle Belege
einer (Unter-)Bedeutung bezieht, darf man ihn zur Verdeutlichung auch abgesetzt
in eine eigene Zeile schreiben:
......
......@@ -31,13 +31,13 @@ M6: """interiectio (ir)ridendi {(cf. ThLL. VI/3. p. 2513,-56sqq.)}"""
[fail:wortart]
F1: """nomen"""
F3: """praepositio vel adiektivum"""
F3: """praepositio vel adiektivum I"""
[match:wortarten]
M1: """praepositio vel adjektivum"""
M2: """adjektiv"""
M3: """adjektiv III et praepositio"""
M4: """interjektio (ir)ridendi"""
M1: """praepositio vel adiectivum I"""
M2: """adiectivum I"""
M3: """adiectivum III vel praepositio"""
M4: """interiectio (ir)ridendi"""
[match:flexion]
M1: """-ae"""
......
......@@ -187,7 +187,7 @@ M1: """
[match:GrammatikPosition]
M1: """
GRAMMATIK
substantivum; -ae f.
substantivum I; -ae f.
-us, -i m.: {=> faceterculi}
-um, -i n.: {=> facitergulum}"""
......
......@@ -38,7 +38,7 @@ M5: """* ARBEO Emm.; p. 54,24.
* OTTO FRISING. gest.; 2,30 p. 138,35 {var. l.}"""
M6: """{=> imperator37m_1}"""
M7: """{=> imperator37m_1} {=> imperator37m_2}"""
M8*: """* {adde} * {=> imperator}"""
# M8*: """* {adde} * {=> imperator}"""
M9: """{saepe, e. g.} {=>l. 11. 37. p. 10,2.|-} {inferius situs}"""
M10: """* HERM. ALTAH. inst.; 1 ((MGScript. XVII; p. 371,29; a. 1242/53)) "quod
ex ea promotione {(sc. abbatis Godehardi ad episcopatum)} suo sancto
......
......@@ -4,7 +4,7 @@ M1: """
interdico
GRAMMATIK
verbum; -dixi, -dictum, -ere
verbum I; -dixi, -dictum, -ere
SCHREIBWEISE
script. et form.:
......
......@@ -7,7 +7,7 @@ M1: """
[match:GrammatikPosition]
M1: """
GRAMMATIK
adjektivum I-II; -a, -um"""
adiectivum I-II; -a, -um"""
M2: """
GRAMMATIK
......
[match:LemmaPosition]
M1: """LEMMA facitergula
(fasc-, -iet-, -ist, -rcu- {sim.})
GRAMMATIK
substantivum I vel substantivum II; -ae f."""
M3: """LEMMA infesto
GRAMMATIK
verbum I; -avi, -are
VEL {semel {=> l.30|-}} infestor
GRAMMATIK
verbum I; -ari"""
[match:Grammatik]
M1: """subst. I; indecl. f."""
[ast:Grammatik]
M1: """(Grammatik
(wortart
(TEXT "subst.")
(L " ")
(nom_klasse "I"))
(flexion
(indeclinabile "indecl."))
(L " ")
(genus "f."))"""
[match:Belege]
M1*: """* {adde} * {=> imperator}"""
M2: """* {adde} {=> imperator}"""
......@@ -36,7 +36,7 @@ DIRECTORY = 'test_grammar'
if __name__ == "__main__":
CONFIG_PRESET = configuration.access_presets()
CONFIG_PRESET['test_parallelization'] = True
CONFIG_PRESET['test_parallelization'] = False
configuration.finalize_presets()
if not dsl.recompile_grammar('MLW.ebnf', force=False,
......
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