Der Artikel ist sehr gut geschrieben, qualitativ. Es ist logisch anzunehmen, dass die Fortsetzung des lexikalischen Parsings das "semantische" Parsing ist, über das ich vorschlage, den nächsten Artikel zu schreiben. Und nach dem semantischen Parsing sind wir nur noch einen Steinwurf von der Schaffung einer KI entfernt. :)
ZY: Es wird nur noch eine künstliche Psyche mit grundlegenden intellektuellen Funktionen zu schreiben sein.
Ernste Frage an den Autor:
Ich habe meine eigene Auszeichnungssprache. Sie hat einen Satz von Regeln und besteht aus Schlüsselwörtern, die Zahlen sind.
Die meisten Schlüsselwörter sind mit String-Wörtern verschachtelt - Namen von Gruppen oder Elementen, und es besteht keine Notwendigkeit, diese String-"Token" zu analysieren. Der MQL-Compiler fängt Fehler in den Namen von Schlüsselwörtern auf, weil ihre Defines in der Datei verbunden sind.
Allerdings kann der Benutzer beim Kompilieren des Markup-Codes gegen die Sprachregeln verstoßen. Es ist notwendig, den Code nach der Kompilierung auf Fehler im Zusammenhang mit den Regeln und nicht mit der Grammatik zu überprüfen .
Ist es möglich, dies auf der Grundlage des im Artikel beschriebenen Parsing-Konzepts zu tun, oder ist es notwendig, einen anderen Mechanismus zu schaffen?
Ich verlasse mich auf Ihre Erfahrung.
Ich danke Ihnen.
...
Kann dies auf der Grundlage des in dem Papier beschriebenen Parsing-Konzepts geschehen, oder ist ein anderer Mechanismus erforderlich?
...
Ich selbst habe mich für die folgende Lösung entschieden: Scannen des Codes (im Wesentlichen ein Array von Werten) auf Verstöße gegen die Abfolge von Schlüsselwörtern (Befehlen) und Ausgabe von Meldungen darüber in das Protokoll. Im Prinzip ist das ganz einfach, denn man kann die Zahlenfolge durch eine Reihe von Bedingungen, Filtern und Flags überwachen.
Das lexikalische, grammatikalische und syntaktische Parsing ist viel schwieriger, da menschliche Wörter im Gegensatz zu Befehlen keine numerische Entsprechung haben. Wörter haben Eigenschaften, die keine Zahl haben, und diese Eigenschaften sind zahlreich. Bei der lexikalischen Analyse müssen nicht nur die Eigenschaften von Wörtern, sondern auch die von Satzteilen oder Interpunktion berücksichtigt werden. Und über all dem "schwebt" die in den Text eingebettete Bedeutung (Kontext), deren Extraktion in Zukunft vielleicht die Aufgabe des semantischen Parsings sein wird (ich bin nicht sicher, ob es das gibt).
Für meine Aufgaben reicht eine einfache Kontrolle der Befehlsfolge aus.
Wahrscheinlich ist es mit dieser Methode möglich, einen mq4->mq5-Konverter für den Markt zu schreiben:
- Es wird ein ex5-Advisor gestartet, der mit mq4-Code gefüttert wird.
- Die Ausgabe ist mq5-Code.
Ich veröffentliche aktualisierte Quellen.
Sicherstellung der Kompilierbarkeit in den neuesten Builds.
Mehrere schwer zu findende Fehler behoben.
Ich poste den aktualisierten Quellcode.
Hallo, ich bin ein relativer Neuling hier.
Nachdem ich den Artikel gelesen hatte, ging ich davon aus, dass das RESULT ein Suchwerkzeug sein würde, um den vom Assistenten erzeugten Code nachzuschlagen.
Habe die Zip-Datei heruntergeladen. Installierte das Skript mql.mq5 und kompilierte es ohne Fehler.
Wenn ich mql.ex5 ausführe, erscheint kein Ergebnis auf dem Bildschirm.
Ich befinde mich im Lernmodus. Ich möchte den Assistenten verwenden können, um Code aus der Codebasis zu verwenden und dann zu analysieren und zu modifizieren, um einen brauchbaren EA zu erhalten.
Für jede Hilfe wäre ich dankbar.
Vielen Dank

- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Neuer Artikel MQL-Parsing mit Hilfe von MQL :
Der Artikel beschreibt einen Präprozessor, einen Scanner und einen Parser, die beim Parsen der MQL-basierten Quellcodes verwendet werden sollten. Die MQL-Implementierung ist beigefügt.
Programmierung ist im Wesentlichen die Formalisierung und Automatisierung einiger Prozesse mit Hilfe von Mehrzweck- oder Spezialsprachen. Die Handelsplattform MetaTrader ermöglicht die Anwendung der Programmierung zur Lösung einer Vielzahl von Problemen eines Händlers unter Verwendung der integrierten MQL-Sprache. In der Regel basiert der Codierungsprozess auf der Analyse und Verarbeitung von Anwendungsdaten nach den Regeln des Quellcodes. Manchmal ergibt sich jedoch die Notwendigkeit, die Quellcodes selbst zu analysieren und zu verarbeiten. Hier sind einige Beispiele.
Eine der konsistentesten und beliebtesten Aufgaben ist die kontextuelle und semantische Suche in der Quellcodebasis. Sicherlich können Sie in einem Quellcode wie in einem normalen Text nach Zeichenketten suchen, aber die Semantik des Gesuchten geht verloren. Schließlich ist es im Falle von Quellcodes wünschenswert, zwischen den Besonderheiten der Verwendung der Teilzeichenkette in jedem konkreten Fall zu unterscheiden. Wenn ein Programmierer herausfinden möchte, wo eine bestimmte Variable verwendet wird, wie z.B. "notification", dann kann eine einfache Suche nach ihrem Namen viel mehr als nötig zurückgeben, wenn die Zeichenkette in anderen Werten, wie beispielsweise einem Methodennamen oder einem Literal, oder in Kommentaren vorkommt.
Komplizierter und in der Regel bei größeren Projekten gefragt ist die Aufgabe, Codestruktur, Abhängigkeiten und Klassenhierarchie zu identifizieren. Es ist eng mit der Metaprogrammierung verbunden, die es ermöglicht, Code-Überarbeitungen/-Verbesserung und die Codegenerierung durchzuführen. Erinnern Sie sich daran, dass der MetaEditor einige Möglichkeiten bietet, Code zu generieren, insbesondere die Quellcodes von Expert Advisors mit dem Wizard zu erstellen oder eine Header-Datei aus dem Quellcode zu erstellen. Die Potenziale dieser Technologie sind jedoch viel größer.
Die Code-Strukturanalyse ermöglicht die Berechnung verschiedener Qualitätsmetriken und Statistiken sowie das Auffinden der typischen Quellen von Laufzeitfehlern, die der Compiler nicht erkennen kann. Tatsächlich ist der Compiler selbst natürlich das erste Werkzeug zur Analyse eines Quellcodes und gibt viele unterschiedliche Warnungen zurück; die Überprüfung auf alle möglichen Fehler ist jedoch in der Regel nicht eingebaut — diese Aufgabe ist zu umfangreich, so dass sie normalerweise separaten Programmen zugeordnet ist.
Darüber hinaus wird das Parsen von Quellcodes für das Styling (Formatierung) und die Verschleierung (Verwirrung) verwendet.
Autor: Stanislav Korotky