Zexpression Syntax Compiler + Interpreter เคอร์เนลเครื่องยนต์สคริปต์
คำอธิบายระบบเทคนิค:
- ในระบบเทคนิคของหลักการรวบรวมจำเป็นต้องมีการประมวลผลล่วงหน้าก่อนประมวลผลรหัสข้อความ น้ำตาลไวยากรณ์และไวยากรณ์ที่เรามักจะพูดถึงคือโปรแกรมการประมวลผลล่วงหน้าทั้งหมด
- วิธีคำศัพท์: วิธีคำศัพท์คือการจำแนกคำหลักข้อความตัวเลขและสัญลักษณ์และในที่สุดก็กลายเป็นต้นไม้คำศัพท์และปฏิบัติตามหลักการของการประมวลผลตามลำดับอย่างเคร่งครัด
- คำแถลง: ในรหัสการประมวลผลล่วงหน้าส่วนประกาศเรียกว่าต้นไม้ประกาศ ต้นไม้ประกาศยังขึ้นอยู่กับการประมวลผลคำศัพท์ล่วงหน้าเนื่องจากการประมวลผลคำศัพท์ล่วงหน้าเป็นวิธีที่ง่ายขึ้น
- ไวยากรณ์: หลังจากการประมวลผลการประกาศล่วงหน้าแล้วจะประมวลผลการดำเนินการเชิงตรรกะแบบบรรทัดเดียวของการแสดงออกของรหัส ขั้นตอนนี้เรียกว่าไวยากรณ์ มันถูกใช้เป็นคอมไพเลอร์ไวยากรณ์ Zexpression มันเป็นทางออกที่ฉันจงใจถอดออกจากคอมไพเลอร์ที่ฉันเคยเขียน มันสามารถแจกจ่ายและใช้อย่างอิสระและสามารถใช้งานจริงในการประมวลผลล่วงหน้าดิจิตอลภาพกราฟิกการคำนวณทางวิทยาศาสตร์และสาขาอื่น ๆ และยังสามารถใช้เป็นวิธีการเรียนรู้ที่จะปรับปรุงตัวเอง
ความคิดหลัก
- การใช้ Zexpression ใช้หลักการของความซับซ้อนแบบเพียร์ทูเพียร์และเขียนขึ้นเพื่อแก้ปัญหาคอมไพเลอร์ ความซับซ้อนสูงกว่าโปรแกรมปกติมาก เนื่องจากมันแก้ปัญหาสุดท้ายจึงไม่มีช่องโหว่ในโครงสร้างการตั้งชื่อและโครงสร้างของรหัสดังนั้นจึงเป็นโซลูชันล่ามของวากยสัมพันธ์ที่ครบกำหนด
คุณสมบัติของ zexpression
- การดำเนินการอะตอมแบบขั้นตอนเดียวเสร็จสิ้น
- ลำดับความสำคัญของสัญลักษณ์โพสต์การประมวลผล
- สามารถประมวลผลข้อผิดพลาดและข้อเสนอแนะได้ล่วงหน้าซึ่งเกิดข้อผิดพลาดเกิดขึ้น
- วิธีการเขียนจำนวนธรรมชาติที่สามารถระบุจุดลอยตัวและจำนวนเต็ม
- สนับสนุนฟังก์ชั่นการโทร
- รองรับไวยากรณ์สคริปต์ที่กำหนดเอง
- ผกผันโปแลนด์ 2.0 การประมวลผลลำดับความสำคัญของสัญลักษณ์
- รองรับโทรศัพท์มือถือ Android และ Apple ของโทรศัพท์มือถือ
- การสาธิตการทำงานที่สมบูรณ์, ประสิทธิภาพที่สมบูรณ์และกรอบการประเมินความแม่นยำในการแยกวิเคราะห์
- หลังจากการรวบรวมรหัส OP อะตอมสามารถเกิดขึ้นได้ซึ่งสามารถโหลดและทำงานด้วยความเร็วสูงผ่านสตรีมโดยไม่ จำกัด ประเภท CPU
- OP Code Framework สามารถถอดรหัสได้อย่างง่ายดายเป็นรหัสเครื่องสำหรับ ARMV7 ARMV7 ARMX64 X64 X86 และแพลตฟอร์มอื่น ๆ
- การสนับสนุนการแสดงออกของเมทริกซ์และเวกเตอร์
การสนับสนุนแพลตฟอร์มทดสอบด้วย Delphi 10.3 Update 2 และ 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 (ลูกค้าเท่านั้น)
- อุปกรณ์ iOS: Indy (C/S OK), CrossSocket (ไคลเอนต์เท่านั้น)
- iOS simulaor: n/a
- OSX: Indy (C/S OK), ICS (ไม่ได้ทดสอบ), CrossSocket (C/S OK)
- Ubuntu16.04 X64 เซิร์ฟเวอร์: Indy (C/S OK), CrossSocket (C/S OK)
- Ubuntu18.04 x86+x64 เดสก์ท็อป: FPC3.0.4 synapse เท่านั้น (C/S OK)
- Ubuntu18.04 x86+x64 เซิร์ฟเวอร์: เฉพาะ FPC3.0.4 synapse (C/S OK)
- Ubuntu18.04 ARM32+ARM NEON SERVER: FPC3.0.4 Synapse เท่านั้น (C/S OK)
- UBUNTU18.04 ARM32+ARM NEON DESKTOP: FPC3.0.4 Compile Ok, ไม่มีการทดสอบในการรัน
- Ubuntu16.04 Mate Arm32 เดสก์ท็อป: FPC3.0.4 คอมไพล์โอเคทดสอบผ่าน
- Raspberry Pi 3 Debian Linux ARMV7 เดสก์ท็อป, FPC 3.0.4 เท่านั้น, ทดสอบผ่าน
- Wince (ARM Eatbi Hard Flat), Windows 10 IoT, FPC 3.3.1, ทดสอบผ่าน
การสนับสนุนสถาปัตยกรรม CPU ทดสอบกับ Delphi 10.3 Update 2 และ FPC 3.0.4
- MIPS (fpc-little endian), soft float, ทดสอบผ่าน qemu
- Intel x86 (FPC-X86), Soft Float
- 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-EABI, Soft Float): ARMV3, ARMV4, ARMV4T, ARMV5, ARMV5T, ARMV5TE, ARMV5TEJ
- ARM (FPC-ARM32-EABI, Hard Float): ARMV6, ARMV6K, ARMV6T2, ARMV6Z, ARMV6M, ARMV7, ARMV7A, ARMV7R, ARMV7M, ARMV7EM
- ARM (FPC-ARM64-EABI, HARD FOAT): ARMV8, AARCH64
อัพเดทบันทึก
2021-9-22
- ไลบรารี NumberBase มีไดรเวอร์ Zexpression ในตัว สำหรับรายละเอียดโปรดดูบริการตัวแปรเครือข่ายของ Zcloud https://github.com/passbyyou888/zcloud
- แก้ไขปัญหาที่ opcache ไม่ได้เริ่มต้น
- เพิ่มประสิทธิภาพ opruntime
- สนับสนุน Delphi 11
- รองรับ FPC สำหรับอุปกรณ์ IoT
2021-7
- แก้ไขปัญหาการรับรู้เช่นการแสดงออกของตัวละคร -2.0e-3
- แก้ไขไลบรารี opcode.pas เนื่องจากความไวของกรณีและเข้ากันไม่ได้กับ win/linux
2020-3
- เพิ่มข้อมูลการประกาศไปยังฟังก์ชันการลงทะเบียน
- แก้ไขสัญลักษณ์ pre -function -func (1+1)
- แก้ไขสัญลักษณ์ func (1+1) -1 หลังจากฟังก์ชั่น
2019-7
รองรับการแสดงออกของเมทริกซ์
// 构建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
- แก้ไขข้อผิดพลาดหลังจากการเข้ารหัสบันทึกข้อความ
- Opcode เพิ่มประเภทการโทรกลับ (ดูการสนับสนุนสคริปต์ใน Zai Toolchain)
2018-9-29
- เทคโนโลยีใหม่: เพิ่มเทคโนโลยีโพรบข้อความ: สามารถลดความซับซ้อนของการเขียนโปรแกรมของโปรแกรม ANT ได้ 50%
- เทคโนโลยีใหม่: ตัวละครตัวละครตัวละครตัวละครการรวบรวมข้อมูลประสิทธิภาพการรวบรวมข้อมูลเพิ่มขึ้น %500
- Multi-Platform: รองรับระบบ IoT หลายระบบและสถาปัตยกรรมฮาร์ดแวร์หลายโปรเซสเซอร์
- การสาธิตใหม่: เพิ่มการสาธิต FPC ใหม่ซึ่งไม่ได้ใช้ฟังก์ชั่นนิรนาม
- กระบวนการ: เข้ากันได้กับการสนับสนุน IoT ตาม FPC: จากการตั้งชื่อพื้นฐานไปจนถึงการตั้งชื่อแบบครบวงจรขั้นสูงและการตั้งชื่อ การปรับนี้จะส่งผลต่อรายละเอียดรหัสของหลายโครงการ
// 本项目中的回调分为3种
// call: 直接指针回调,fpc+delphi有效
// method: 方法回调,会继承一个方法宿主的地址,fpc+delphi有效
// proc: 匿名过程回调,只有delphi有效
// 如果本项调整对于改造现有工程有一定的工作量,请使用字符串批量处理工具
// 在任何有回调重载的地方,方法与函数,均需要在后缀曾加回调类型首字母说明
// 如
RunOp 变更为 RunOpP() // 后缀加P表示匿名类型回调
RunOp 变更为 RunOpM() // 后缀加M表示方法类型的回调
RunOp 变更为 RunOpC() // 后缀加C表示指针类型的回调
2018-7-6
- แก้ไขกฎการตั้งชื่อของไลบรารีพื้นฐานอย่างมีนัยสำคัญ
- รองรับแพลตฟอร์ม FPC/86/64 และไลบรารีพื้นฐานทั้งหมดรองรับการรวบรวมและการทำงานที่ปราศจากปัญหาภายใต้ Linux
- รองรับเต็มรูปแบบสำหรับคอมไพเลอร์ FPC 3.1.1
- ขนาดที่เพิ่มและการสนับสนุน Endian
- แก้ไขปัญหาของการไม่ปฏิเสธที่จะใช้ INT64 สำหรับคอมไพเลอร์ FPC 32 บิต
- แก้ไขปัญหาของข้อยกเว้นในสตริงที่ทำงานบน Linux เมื่อคอมไพเลอร์ FPC
- เพิ่มเครื่องมือ pascal precompilation เพื่อสร้างมาตรฐานรหัส Pascal ลงใน C-imited Case ทั้งหมดซึ่งเข้ากันได้อย่างสมบูรณ์กับกลไกชื่อไฟล์ที่ไวต่อตัวพิมพ์ใหญ่ของ Linux
2018-4-12
- แก้ไขข้อผิดพลาดของหน่วยความจำนอกขอบเขตในเคอร์เนล: อาการของข้อผิดพลาดนี้คือมันไม่สามารถเข้าถึงได้โดยไม่มีเหตุผลและเป็นการยากที่จะกำจัดผ่านการดีบักปกติ นี่คือข้อผิดพลาดที่เกิดจากหน่วยความจำนอกขอบเขต
2018-3-1
- เพิ่มฟังก์ชั่นการเปรียบเทียบสตริงฟัซซี่ (Smithwaterman) ลงในเคอร์เนล tpascalstring, การเพิ่มประสิทธิภาพและการทดสอบเสร็จสมบูรณ์
- อัลกอริทึมนี้เป็นของที่อยู่วิกิพีเดียของ Smith-Waterman ซึ่งเป็นวินัยของวิศวกรรมพันธุศาสตร์ชีวภาพ https://en.wikipedia.org/wiki/Smith%E2%80%93Waterman_Algorithm
2018-2-28
- Fix C ตัวละคร Escape BUF ขอบคุณ AMU QQ345148965
- เปลี่ยนการตั้งชื่อพารามิเตอร์ของ charpos เป็น coffset และเพิ่มตัวดัดแปลง const
2018-2-26
- แก้ไขปัญหาที่ไม่สามารถรวบรวมได้โดยใช้โหมดการเปิดตัว
- แก้ไขปัญหาการตัดและแบ่งส่วนที่ไม่ถูกต้องใน zexpression
- ปรับปรุงประสิทธิภาพการตัดของโพรบอักขระเล็กน้อย (Splittoken, Splitchar)
- เนื่องจากเลเยอร์พื้นฐานเขียนล็อคอะตอมใหม่ตัวปรับเปลี่ยนที่บรรจุจะถูกเพิ่มก่อนการประกาศบันทึกจำนวนมาก
2018-2-25
- เพิ่มการสนับสนุนสัญลักษณ์นิพจน์ที่กำหนดเอง
- การสาธิตสัญลักษณ์นิพจน์ที่กำหนดเองใหม่
2018-2-25
- แก้ไขปัญหาที่พารามิเตอร์ฟังก์ชั่นซ้อนกันไม่สามารถขยายส่วนต่อประสานได้อย่างถูกต้อง
- แก้ไขปัญหาที่โพรบดิจิตอลของเอ็นจิ้นการวิเคราะห์ไม่สามารถรับรู้ตัวเลขและฟังก์ชั่นตามธรรมชาติแบบหกสิบ
- เพิ่มตัวอย่างการสาธิตใหม่สำหรับการกำหนดรวมถึงการประกาศตัวแปรมัลติเพล็กซ์แบบคงที่มัลติเพล็กซ์แบบไดนามิกรวม trilogies ทั้งหมด โปรดศึกษาด้วยตัวคุณเองในตัวอย่างการสาธิต
- แก้ไขปัญหาของสตริงและการจับคู่หมายเลขสหภาพ
- รองรับ Code Style 0x16-Digit Syntax
2018-2-6
- เขียนเคอร์เนล Parser อีกครั้งหนึ่งรองรับการโทรฟังก์ชั่นและต่อจากนี้ไป Zexpression จะได้รับการปรับปรุงอย่างต่อเนื่อง
หากคุณมีคำถามใด ๆ เกี่ยวกับการใช้ zexpression โปรดเพิ่มกลุ่มช่วยเหลือร่วมกัน QQ 490269542 โปรดอย่าติดต่อผู้เขียนโดยตรง
BY.QQ600585 2017-6