Commit 8134ae9d authored by di68kap's avatar di68kap

- Bereinigungen

parent 0b75ddeb
......@@ -3,7 +3,7 @@ LEMMA 1. curia
GRAMMATIK
subst. I; indecl. f.
subst.; indecl. f.
SCHREIBWEISE
script.:
......
DHParser-submodule @ 2187b45c
Subproject commit cfb4b043ac76d299ffdee0da6604c6a9079b9f62
Subproject commit 2187b45c68ba6c38b66001d67ced7428fdde563b
......@@ -12,12 +12,12 @@ Rechenzentrums in Garching unter:
Stand
-----
Datum: 10.8.2018
Datum: 16.1.2020
Beta-Version, die im Prinzip alle semantischen Kategorien untersützen sollte,
aber noch viele Fehler enthält und ausgiebig getestet werden muss. Auch kann
es immer noch Änderungen an der DSL geben.
Es handelt sich noch um eine frühe Alpha-Version, die zwar bereits einen
großen Teil, aber noch nicht alle semantischen Kategorien des MLW
unterstützt. Dennoch können Artikel bereits in der DSL eingegeben werden
und als HTML-Vorschau angezeigt werden.
Für die Dokumentation, siehe die Datei ``MLW_Notation_Beschreibung.md``.
......@@ -76,6 +76,8 @@ Unterverzeichnisse:
2. CSS - Hier liegt die CSS-Datei (`MLW.css`) für die Vorschau von
MLW-Artikeln.
3. Javascript - Javascript code für die HTML-Vorschauseiten von MLW-Artikeln
3. VSCode - Alle Datein und ggf. Skripte für die Visual-Studio-Code-
Integration des MLW.
......@@ -90,10 +92,23 @@ Unterverzeichnisse:
Unvollständig, aber trotzdem nützlich. Die Grammatiktests können
mit dem Skript `tst_MLW_gramma.py` im Hauptverzeichnis gestartet
werden.
7. tests - Einheiten-Tests für bestimmte Teile des Gesamtsystems.
8. Hilfsskripte - Hilfsskripte zur Datenkonvertierung, zum generieren von
Zeichentabellen und anderen Aufgaben
9. Fehlerberrichte - Die Fehlerbereichte von den MLW-Mitarbeiter/innen und
Kollegen aus der IT, sowie Fehlerprotokolle aus den gemeinsamen
Sitzungen.
7. DHParser-submodule - Hier ist das DHParser-Paket untergebracht, auf dem der
10. DHParser-submodule - Hier ist das DHParser-Paket untergebracht, auf dem der
der Test- und Compiler-Code des MLW aufsetzt.
11. Scratch - Skripte, mit denen nur irgendetwas ausprobiert wird, die aber
für das Funktionieren der MLW-DSL als solcher nicht benötigt
werden.
Daneben können nach dem Ausführen der Tests oder dem Verarbeiten der Beispiele
im Hauptverzeichnise, sowie im Unterverzeichnis `grammar_test` Verzeichnisse
mit den Namen `LOGS` und `REPORT` erscheinen. Sie werden vom Testcode angelegt
......@@ -115,32 +130,41 @@ Skripte
Folgende Skripte liegen im MWL-Hauptverzeichnis:
1. `Installiere-MLW.py` - Installiert die Software für die Übersetzung der
MLW-DSL auf dem Computer. Eine installierte Python-Umgebung, sowie eine
Installation des Editors "Visusal Studio Code" werden vorausgesetzt.
2. `MLWCompiler.py` - Mit diesem Skript kann man Dokumente im MLW-DSL-Format
1. `MLWCompiler.py` - Mit diesem Skript kann man Dokumente im MLW-DSL-Format
(Endung per Konvention `.mlw`) übersetzen (vorerst nur nach HTML). In
der Regel muss dieses Skript nicht direkt aufgerungen werden, sondern
kann aus dem Visual-Studio-Code-Editor heraus als "Aufgabe" gestartet
werden.
2. `MLWServer.py` - Mit diesem Skript kann man ebenfalls Dokumente im
MLW-DSL-Format kompilieren. Anders als MLWCompiler.py (das von MLWServer.py
importiert wird), started `MLWServer.py` einen TCP/IP-Server im Hintergrund,
an den Quellcodes zum Kompilieren geschickt werden können. Das geht schneller
als der Aufruf von MLWCompiler.py, da nicht jedesmal das ganze
MLW-DSL/DHParser-Paket mitsamt der Übersetzung aller regulärer Ausdrücke
initialisert werden muss. Bevor `MLWServer.py` MLWCompiler importiert, prüft
es, ob schon ein Server läuft, und verwendet diesen.
In Zukunft soll `MLWServer.py` zu einem vollwertigen Language-Server
(https://microsoft.github.io/language-server-protocol/) ausgebaut werden.
3. `tst_MLW_grammar.py` - Lässt die Einheitentests für die Grammatik im
Unterverzeichnis "grammar_tests" laufen.
Unterverzeichnis "grammar_tests" laufen. Die Ergebnisse der Tests
(in Form von Syntaxbäumen der getesteten MLW-Codeschnipsel) werden in
dem Unterverzeichnis "REPORT" des Verzeichnisses "grammar_tests"
abgelegt. Falls bei einem Test Fehler aufgetreten sind, wird ein
Protokoll des Parsing-Prozesses des entsprechenden Code-Schnipsels in
HTML-Form in einem weiteren Unterverzeichnis "grammar_tests/LOGS"
abgelegt.
4. `verarbeite_Beispiele.py` - Übersetzt alle auf `.mlw` endenden Datein
in den Unterverzeichnissen unter "Beispiele". Dies dient ebenfalls als Test,
diesmal allerdings von ganzen Artikeln und nicht einzelnen Bestandteilen
von Artikeln wie die Einheitentests.
5. `konvertiere_opera_majora_tabelle.py` - Konvertiert die Tabelle der
opera majora (siehe Unterverzeichnis "Zusatzdaten") in eine `.json`-
Datei, die von Visual-Studio-Code verwendet werden kann, um bei der
Eingabe von Belegen Vorschläge zu machen.
6. Ggf. weitere Skripte von untergeordneter Bedeutung, wie z.B.
"algorithmen_MLW.py", das lediglich Algorithmen enthält, die ggf. in den
MLW-Compiler eingebaut werden könnten.
5. Weitere Skripte finden sich in dem Unterverzeichnis "Hilfsskripte". Sie
dort die Dokumentation im Quellcode.
Dokumentation
-------------
......
......@@ -133,7 +133,7 @@ EtymologieSprache = "anglosax." ["vet."] | "arab." | "bohem." | "catal." | "finn
| "sard." | "sicil." | "slav." | "theod." ["inf."] ["vet."]
| "val."
etymologie_stern = "*" # sechzackig dünn (Schneeflocke) *
etymologie_stern = "*" # sechszackig dünn (Schneeflocke) *
#### ARTIKEL-KOPF ############################################################
......
......@@ -1689,10 +1689,6 @@ class MLWCompiler(TreeProcessor):
# node.attr['werk'] = self.aktuelles_werk
return node
# def on_ZOMBIE__(self, node):
# print(id(node), node.attr)
# return node
def get_compiler() -> MLWCompiler:
global THREAD_LOCALS
......@@ -2230,8 +2226,10 @@ class AusgabeTransformation(TreeProcessor):
node.attr['title'] = "Klasse: " + klasse
node.attr['wortart'] = node.content
if node.has_attr('verdichtung') \
and not (nd for nd in node.select_context_if(lambda n: n.has_attr('err'),
include_root=True)):
and not (nd for nd in node.select_if(lambda n: self.tree.get_errors(n),
include_root=True)):
# don't delete node.result if there have been errors, so that errors will
# still be shown in the HTML-preview
if any(nd.tag_name == "SubLemmaPosition" for nd in reversed(self.context[:-1])):
node.result = node.attr['verdichtung']
elif not node.pick('wa_ergänzung'):
......@@ -2688,9 +2686,6 @@ class HTMLTransformation(TreeProcessor):
add_errors_to_titleattr(node, errors)
else:
node.attr['title'] = "Aufgrund eines Fehlers überprungener Abschnitt"
elif node.has_attr('err'):
node.result = '☠'
node.title = node['err']
return node
def on_Sperrung(self, node):
......@@ -3031,7 +3026,7 @@ if __name__ == "__main__":
##############################################################################
##############################################################################
BEISPIEL = os.path.join('facitergula', 'fascitergula.mlw')
BEISPIEL = os.path.join('imperium', 'imperium.mlw')
##############################################################################
##############################################################################
......
......@@ -23,9 +23,3 @@ Language Server
Vgl.: <https://github.com/sourcegraph/python-langserver>
Code Map
--------
(Code map evtl. überflüssig, besser eingebaute Baum-Sichten von VSC verwenden.)
<https://github.com/oleg-shilo/codemap.vscode/wiki/Adding-custom-mappers>
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
// Diese Version der tasks.json Datei ruft MLWServer.py direkt vom Sync & Share Verzeichnis auf
"version": "2.0.0",
"tasks": [
{
......
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
// Diese Version der tasks.json Datei versucht MLWServer.py lokal aufzurufen!
"version": "2.0.0",
"tasks": [
{
......
#!/usr/bin/python3
"""Löscht alle von MLWCompiler.py automatisch generierten Ausgabe- und Zusatzdateien in den
Beispiel-Unterverzeichnissen."""
import os
for root, dirs, files in os.walk('Beispiele'):
......
......@@ -36,7 +36,7 @@ DIRECTORY = 'test_grammar'
if __name__ == "__main__":
CONFIG_PRESET = configuration.access_presets()
CONFIG_PRESET['test_parallelization'] = False
CONFIG_PRESET['test_parallelization'] = True
configuration.finalize_presets()
if not dsl.recompile_grammar('MLW.ebnf', force=False,
......
#!/usr/bin/python3
"""Übersetzt alle MLW-Beispiele."""
import concurrent.futures
import cProfile as profile
import fnmatch
......
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