Skip to Content
AnpassungÜbersetzerErstelle einen ÜbersetzerErstelle eine benutzerdefinierte spezifische Herleitung

Erstelle eine benutzerdefinierte spezifische Herleitung

Einführung

Es hat einen großen Vorteil, einen abgeleiteten Übersetzer zu bauen. Es wird den vollständigen (Basis-)Eltern-Übersetzer verwenden, mit der einzigen Ausnahme, dass hier neue Inhalte hinzugefügt werden und neu definierte bestehende Funktionen die Basisfunktionen überschreiben. In diesem Fall bleibt der Basisübersetzer intakt. Aber auch, dass (große) Änderungen am Basisübersetzer automatisch auf jeden abgeleiteten Übersetzer angewendet werden.

Schritte

1. Abgeleiteter Übersetzer

1.1In Visual Studio Code öffnen Sie die CustomTranslator.py aus dem Beispiel-Plugin, das während der Vorbereitung implementiert wurde.
1.2Am Anfang ist erneut die Klassendefinition des Übersetzers zu finden. Da wir von HelloWorld ableiten wollen, müssen wir es in den Klammern angeben. In diesem Beispiel sieht die hierarchische Struktur so aus:
1.3Außerdem ist es wichtig, die folgende Zeile am Anfang jedes Downloaders hinzuzufügen. Diese Zeilen fügen den aktuellen Pfad zum Python-Pfad hinzu. Dies ist wichtig, um weitere Abweichungen zu nutzen.

2. Übersteuerungsfunktionen

2.1Im Controller der Arbeitszelle ändert man den verwendeten Übersetzer auf CustomTranslator.py.
2.2In der Elternklasse HelloWorld.py geben wir alle Attribute mit der Eigenschaft PROCESS_ATTRIBUTE aus. In CustomTranslator.py überschreiben wir die Funktion durch eine benutzerdefinierte Implementierung. Füge die folgenden Zeilen zur Funktion OperationStart() hinzu. # Hol Log Operator Logger = Operator. GetLogOperator() Logger. LogInfo (“Default OperationStart called”) # holen Sie den Operationsnamen operationName = Operation. GetName() # iterieren Sie alle Operationsattribute selbst. ProgramContent.append(‘Operation name: %s’ % operationName) Das Überschreiben der Funktion bedeutet, dass die vorherige Ausgabe der Operationsattribute in HelloWorld.py nicht mehr auftritt. Ausgabe von HelloWorld.py Ausgabe von CustomTranslator.py
2.3Es ist jedoch auch möglich, am Ende die Funktion OperationStart() der Elternklasse aufzurufen. Füge die folgende Zeile zur Funktion hinzu. super(). OperationStart (Operator, Operation) Ausgabe:
2.4So kannst du auch entscheiden, ob die Elternfunktion am Anfang oder am Ende aufgerufen werden soll. Ruf die OperationStart()-Implementierung der Elternklasse zu Beginn auf. Entfernen Sie die zuvor hinzugefügte Linie am Ende und legen Sie sie am Anfang an, gemäß dem Bild unten. Ausgabe:

3. Ereignisausgabe

3.1Füge in deiner Arbeitszelle ein Textereignis zu einem Werkzeugpfad-Element hinzu, indem du das Ereignispanel öffnest.
3.2Implementiere die Text-Ereignisausgabe. Füge die folgenden Zeilen zur Funktion HandleEvent() hinzu. # alle Attribute erhalten = Ereignis. GetAttributes() # initialisieren von Variablen text = ” isComment = True # iterieren Sie durch Attribute für Attribute in Attributen: # erhalten Sie Text, wenn Attribut. GetName() == ‘Text’: text = Attribut. GetValue() # get flag ist Text ist ein Kommentar (True) oder ein Befehl (False) elif-Attribut. GetName() == ‘IsComment’: isComment = Attribut. GetValue() # prüfe den Kommentar, wenn isComment: # erstelle einen String und füge ihn dem Quellstring-Array selbst hinzu. ProgramContent.append(‘Kommentar: %s’ % Text) sonst: self. ProgramContent.append(‘Command: %s’ % text) Ausgabe
Was this page helpful?