Zexpressionssyntax -Compiler + Interpreter, Skript -Engine -Kernel
Erklärung des technischen Systems:
- Im technischen Kompilierungsprinzip ist eine Vorverarbeitung vor dem Verarbeitung von Textcode erforderlich. Die Syntax- und Syntaxzucker, über die wir oft sprechen, sind alle Vorverarbeitungsprogramme
- Lexikalische Methode: Die lexikalische Methode besteht darin, Textschlüsselwörter, Zahlen und Symbole zu klassifizieren und schließlich einen lexikalischen Baum zu bilden und dem Prinzip der sequentiellen Verarbeitung streng zu folgen.
- Aussage: Im Vorverarbeitungscode wird der Deklarationsteil als Deklarationsbaum bezeichnet. Der Deklarationsbaum basiert auch auf der lexikalischen sequentiellen Vorverarbeitung, da die lexikalische Vorverarbeitung eine vereinfachte Methode ist.
- Syntax: Nach der Vorverarbeitung der Deklaration verarbeitet sie die logischen Einzeilenvorgänge von Codeausdrücken. Dieser Schritt heißt Syntax. Es wird als Zexpressionssyntax -Compiler angesehen. Es ist eine Lösung, die ich absichtlich von dem Compiler ausgestattet habe, den ich einmal geschrieben habe. Es kann unabhängig verteilt und verwendet werden und praktisch für digitale Vorverarbeitung, Grafikbilder, wissenschaftliche Computing und andere Bereiche verwendet werden und kann auch als Mittel verwendet werden, um zu lernen, sich selbst zu verbessern.
Kernidee
- Die Implementierung des Zexpression nimmt das Prinzip der Peer-to-Peer-Komplexität an und wird geschrieben, um Compiler-Probleme zu lösen. Die Komplexität ist viel höher als die der regulären Programme. Da es das endgültige Problem löst, gibt es keine Schwachstellen in der Benennungs- und Haufenstruktur des Codes, sodass es eine reife syntaktische Interpreter -Lösung ist.
Merkmale der Zexpression
- Komplette Einschritt-Zerstäubungsoperation
- Komplette Symbol Priority Nachbearbeitung
- Kann wörtliche Fehler und Feedback vorbereiten, wenn der Fehler auftritt
- Natürliche Zahlenschreibmethode, mit der schwimmende Punkte und Ganzzahlen identifiziert werden können
- Support -Funktionsaufrufe
- Unterstützen Sie die benutzerdefinierte Skriptsyntax
- Inverse Polen 2.0 Symbol Prioritätsverarbeitung
- Unterstützt Android- und Apple -Modelle von Mobiltelefonen
- Vollständige funktionale Demo-, vollständige Leistungs- und Parsinggenauigkeitsbewertungsrahmen
- Nach der Zusammenstellung kann ein atomisierter OP -Code gebildet werden, der geladen und mit hoher Geschwindigkeit über den Stream ausgeführt werden kann, ohne den CPU -Typ einzuschränken
- OP -Code -Framework kann leicht in Maschinencodes für ARMV7 ARMX64 X64 X86 und andere Plattformen dekodiert werden
- Matrix- und Vektorausdrucksunterstützung
Plattformunterstützung, Test mit Delphi 10.3 Update 2 und FPC 3.0.4
- Windows: Delphi-CrossSocket (C/S OK), Delphi-diocp (C/S OK), Delphi-ICs (C/S OK), Delphi-INDY (C/S OK), Delphi+FPC-Synapse (C/S OK)
- Android: Indy (C/S OK), CrossSocket (nur Client)
- IOS -Gerät: Indy (C/S OK), CrossSocket (nur Client)
- IOS Simulaor: n/a
- OSX: Indy (C/S OK), ICS (nicht getestet), CrossSocket (C/S OK)
- Ubuntu16.04 X64 Server: Indy (C/S OK), CrossSocket (C/S OK)
- Ubuntu18.04 x86+x64 Desktop: Nur FPC3.0.4 Synapse (C/S OK)
- Ubuntu18.04 x86+x64 Server: Nur FPC3.0.4 Synapse (C/S OK)
- Ubuntu18.04 ARM32+ARM Neon Server: Nur FPC3.0.4 Synapse (C/S OK)
- Ubuntu18.04 ARM32+Arm Neon Desktop: Nur FPC3.0.4 Compile OK, kein Test auf dem Lauf.
- Ubuntu16.04 Mate Arm32 Desktop: Nur FPC3.0.4 Compile OK, Test bestanden
- Raspberry Pi 3 Debian Linux ARMV7 -Desktop, nur FPC 3.0.4, Test bestanden.
- Tace (Arm EatBi Hard Flat), Windows 10 IoT, nur FPC 3.3.1, Test bestanden.
Unterstützung von CPU Architecture, Test mit Delphi 10.3 Update 2 und FPC 3.0.4
- MIPS (FPC-Little Endian), Soft Float, Test Pass an Qemu
- Intel X86 (FPC-X86), Weichschwimmer
- Intel X86 (Delphi+FPC), Hard Float, 80386, Pentium, Pentium2, Pentium3, Pentium4, Pentiumm, Corei, Coreavx, Coreavx2
- Intel X64 (FPC-X86_64), Soft Float
- Intel X64 (Delphi+FPC), Hard Float, Athlon64, CoreI, Coreavx, Coreavx2
- Arm (FPC-Arm32-ebi, weicher Schwimmer): ARMV3, ARMV4, ARMV4T, ARMV5, ARMV5T, ARMV5TE, ARMV5TEJ
- Arm (FPC-Arm32-Eabi, Hard Float): ARMV6, ARMV6K, ARMV6T2, ARMV6Z, ARMV6M, ARMV7, ARMV7A, ARMV7R, ARMV7M, ARMV7EME
- Arm (FPC-Arm64-Eabi, Hard Float): ARMV8, AArch64
Aktualisieren Sie das Protokoll
2021-9-22
- Die Numberbase-Bibliothek hat einen integrierten Zexpressionstreiber. Weitere Informationen finden Sie unter ZcLouds Netzwerkvariablendienst https://github.com/passbyyou888/zcloud
- Behoben das Problem, bei dem Opcache nicht initialisiert wurde
- Optimieren Sie die Opruntime
- Unterstützen Sie Delphi 11
- Unterstützen Sie FPC für IoT -Geräte
2021-7
- Probleme mit fester Erkennung von Charakter Expression-2.0e-3
- Die Opcode.pas -Bibliothek wurde aufgrund von Fallempfindlichkeit behoben und mit Win/Linux nicht kompatibel
2020-3
- Deklarationsinformationen zur Registrierungsfunktion hinzugefügt
- Beheben Sie das Vor -Funktions -Symbol -func (1+1)
- Der Symbolfunktion (1+1) -1 nach Funktion wurde behoben
2019-7
Matrixexpressionsunterstützung
// 构建3*3的variant矩阵,使用c语法表达式
procedure MatrixExp ;
var
m: TExpressionValueMatrix;
begin
DoStatus( ' ' );
m := EvaluateExpressionMatrix( 3 , 3 ,
' "hello"+"-baby"/*备注:字符串联合*/,true,false, ' +
' 1+1,2+2,3+3, ' +
' 4*4,4*5,4*6 ' , tsC);
DoStatus(m);
end ;
// 构建variant向量数组,使用pascal语法表达式
procedure MatrixVec ;
var
v: TExpressionValueVector;
begin
DoStatus( ' ' );
v := EvaluateExpressionVector( ' 0.1*(0.1+max(0.15,0.11)){备注内容},1,2,3,4,5,6,7,8,9 ' , tsPascal);
DoStatus(v);
end ; 2019-4
- Der Fehler wurde nach einer Codierung von Textsparsing -Notizen behoben
- Opcode fügt einen Rückruftyp hinzu (siehe Skript -Unterstützung in der Zai Toolchain).
2018-9-29
- Neue Technologie: Zusätzliche Textsondentechnologie: Kann die Programmierkomplexität von ANT -Programmen um 50%verringern.
- Neue Technologie: Charakter-by-Charakter-Textcharakter-Kriechleistung verbessert sich %500
- Multi-Plattform: Unterstützung mehrerer IoT-Systeme und Multi-Processor-Hardware-Architekturen
- Neue Demo: Fügte eine neue FPC -Demo hinzu, die keine anonymen Funktionen verwendet
- Prozess: kompatibel mit IoT-Unterstützung basierend auf FPC: Von der zugrunde liegenden zum fortgeschrittenen, groß angelegten einheitlichen Namen wird angepasst und benannt. Diese Anpassung wirkt sich auf die Codedetails vieler Projekte aus.
// 本项目中的回调分为3种
// call: 直接指针回调,fpc+delphi有效
// method: 方法回调,会继承一个方法宿主的地址,fpc+delphi有效
// proc: 匿名过程回调,只有delphi有效
// 如果本项调整对于改造现有工程有一定的工作量,请使用字符串批量处理工具
// 在任何有回调重载的地方,方法与函数,均需要在后缀曾加回调类型首字母说明
// 如
RunOp 变更为 RunOpP() // 后缀加P表示匿名类型回调
RunOp 变更为 RunOpM() // 后缀加M表示方法类型的回调
RunOp 变更为 RunOpC() // 后缀加C表示指针类型的回调
2018-7-6
- Korrigieren Sie die Namensregeln der zugrunde liegenden Bibliothek erheblich
- Unterstützt die FPC/86/64-Plattform, und alle grundlegenden Bibliotheken unterstützen die störungsfreie Zusammenstellung und den Betrieb unter Linux.
- Vollständige Unterstützung für FPC Compiler 3.1.1
- Zusätzliche Größe und Endian Support hinzugefügt
- Es wurde das Problem behoben, dass es sich nicht verweigerte, INT64 für 32-Bit-FPC-Compiler zu verwenden
- Das Problem der Ausnahmen in Strings behoben
- Das Pascal-Vorkompilierungstool hinzugefügt, um den Pascal-Code in den Unified Case im C-Stil zu standardisieren, was mit Linux-Fall-sensitiver Dateinamenmechanismus vollständig kompatibel ist
2018-4-12
- Ein Gedächtnis Fehler im Kern im Kernel: Das Symptom dieses Fehlers ist, dass er ohne Grund nicht zugänglich ist und es schwierig ist, durch normales Debuggen zu beseitigen. Dies ist ein Fehler, der durch Speicher außerhalb der Bounds verursacht wird.
2018-3-1
- Eine Fuzzy -String -Vergleichsfunktion (Smithwaterman) zum TPascalString -Kernel hinzugefügt. Optimierung und Tests werden abgeschlossen
- Dieser Algorithmus gehört zur Wikipedia-Adresse von Smith-Waterman, einer Disziplin der biologischen Gentechnik. https://en.wikipedia.org/wiki/smith%E2%80%93waterman_algorithmus
2018-2-28
- Dank AMU QQ345148965 fix C Escape Charakter BUF BUF
- Ändern Sie die Parameterbenennung von Charpos in Coffset und fügen Sie einen const -Modifikator hinzu
2018-2-26
- Das Problem behoben, dass es mit dem Release -Modus nicht kompiliert werden kann
- Das Problem des falschen Schneidens und der Segmentierung im Zexpression behoben
- Verbessern Sie die Schneidleistung von Charaktersonden leicht (Splittoken, Splitchar)
- Da die zugrunde liegende Ebene eine Atomschloss neu schreibt, wird der verpackte Modifikator hinzugefügt, bevor viele Datensatzerklärungen
2018-2-25
- Unterstützung für benutzerdefinierte Ausdrucksymbolunterstützung hinzugefügt
- Neue Demonstration benutzerdefinierter Ausdrucksymbole
2018-2-25
- Das Problem behoben, dass verschachtelte Funktionsparameter die Schnittstelle nicht korrekt erweitern können
- Das Problem behoben, dass die digitale Sonde der Analyse -Engine nicht erkennen kann, die hexadezimale natürliche Zahlen und Funktionen
- Es fügte ein neues Demo -Beispiel für die Zuordnung hinzu, einschließlich variabler Deklaration, statisches Multiplexing, dynamisches Multiplexing, insgesamt Trilogien. Bitte studieren Sie es selbst in der Beispieldemonstration.
- Das Problem der String- und Number -Matching -Union behoben
- Unterstützt C-Code-Stil 0x16-Digit-Syntax
2018-2-6
- Schreiben Sie den Parser -Kernel einmal um, unterstützt Funktionsaufrufe, und von nun an wird der Zexpression kontinuierlich aktualisiert
Wenn Sie Fragen zur Verwendung von Zexpression haben, fügen Sie die QQ Group 490269542 der gegenseitigen Hilfe hinzu. Bitte kontaktieren Sie den Autor nicht direkt
By.QQ600585 2017-6