Kompiler Sintaks Zekspresi + Interpreter, Kernel Mesin Skrip
Penjelasan Sistem Teknis:
- Dalam sistem teknis prinsip kompilasi, preprocessing diperlukan sebelum memproses kode tekstual. Sintaks dan gula sintaksis yang sering kita bicarakan adalah semua program preprocessing
- Metode Leksikal: Metode leksikal adalah untuk mengklasifikasikan kata kunci teks, angka, dan simbol, dan akhirnya membentuk pohon leksikal, dan secara ketat mengikuti prinsip pemrosesan berurutan.
- Pernyataan: Dalam kode preprocessing, bagian deklarasi disebut pohon deklarasi. Pohon deklarasi juga bergantung pada preprocessing sekuensial leksikal, karena preprocessing leksikal adalah metode yang disederhanakan.
- Sintaks: Setelah persiapan deklarasi, ia memproses operasi logis garis tunggal dari ekspresi kode. Langkah ini disebut sintaks. Ini diambil sebagai kompiler sintaks zekspresi. Ini adalah solusi yang dengan sengaja saya luput dari kompiler yang pernah saya tulis. Ini dapat didistribusikan dan digunakan secara independen, dan secara praktis dapat digunakan dalam preprocessing digital, gambar grafis, komputasi ilmiah dan bidang lainnya, dan juga dapat digunakan sebagai sarana untuk belajar meningkatkan diri.
Ide inti
- Menerapkan zekspresi mengadopsi prinsip kompleksitas peer-to-peer dan ditulis untuk menyelesaikan masalah kompiler. Kompleksitasnya jauh lebih tinggi daripada program reguler. Karena itu memecahkan masalah akhir, tidak ada kerentanan dalam penamaan dan heap struktur kode, sehingga ini adalah solusi interpreter sintaksis yang matang.
Fitur Zekspresi
- Operasi atomisasi satu langkah lengkap
- Prioritas simbol lengkap pasca pemrosesan
- Dapat preprocess kesalahan literal dan umpan balik di mana kesalahan terjadi
- Metode Penulisan Angka Alami yang dapat mengidentifikasi titik mengambang dan bilangan bulat
- Panggilan fungsi dukungan
- Dukung sintaks skrip khusus
- Inverse Poland 2.0 Simbol Prioritas Pemrosesan
- Mendukung model ponsel Android dan Apple
- Demo fungsional lengkap, kinerja lengkap dan kerangka evaluasi akurasi parsing
- Setelah kompilasi, kode OP atomisasi dapat dibentuk, yang dapat dimuat dan dijalankan dengan kecepatan tinggi melalui aliran tanpa membatasi jenis CPU
- Kerangka Kode OP dapat dengan mudah diterjemahkan menjadi kode mesin untuk ARMV7 ARMX64 X64 X86 dan platform lainnya
- Dukungan ekspresi matriks dan vektor
Dukungan Platform, Uji dengan Delphi 10.3 UPDATE 2 dan 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 (hanya klien)
- Perangkat iOS: Indy (C/S OK), Crosssocket (hanya klien)
- Simulaor iOS: N/A.
- OSX: Indy (C/S OK), ICS (tidak diuji), Crosssocket (C/S OK)
- Ubuntu16.04 X64 Server: Indy (C/S OK), Crosssocket (C/S OK)
- Ubuntu18.04 X86+X64 Desktop: Hanya FPC3.0.4 Synapse (C/S OK)
- Ubuntu18.04 x86+x64 server: hanya fpc3.0.4 sinaps (c/s ok)
- Ubuntu18.04 ARM32+ARM Neon Server: Hanya FPC3.0.4 Synapse (C/S OK)
- Ubuntu18.04 ARM32+ARM Neon Desktop: Hanya FPC3.0.4 Kompilasi OK, tidak ada tes saat dijalankan.
- Ubuntu16.04 Mate ARM32 Desktop: Hanya FPC3.0.4 Kompilasi OK, tes lulus
- Raspberry Pi 3 Debian Linux ARMV7 Desktop, hanya FPC 3.0.4, tes lulus.
- Penggantiran (ARM Eatbi Hard Flat), Windows 10 IoT, hanya FPC 3.3.1, tes lulus.
Dukungan Arsitektur CPU, Uji dengan Delphi 10.3 UPDATE 2 dan FPC 3.0.4
- MIPS (FPC-Little Endian), Soft Float, Test Pass di QEMU
- Intel x86 (FPC-X86), pelampung lunak
- Intel X86 (Delphi+FPC), Hard Float, 80386, Pentium, Pentium2, Pentium3, Pentium4, Pentiumm, Corei, Coreavx, Coreavx2
- Intel x64 (FPC-X86_64), float lunak
- 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 Float): ARMV8, AARCH64
Perbarui log
2021-9-22
- Perpustakaan NumberBase memiliki driver zekspresi bawaan. Untuk detailnya, silakan merujuk ke layanan variabel jaringan ZCloud https://github.com/passbyyou888/zcloud
- Memperbaiki masalah di mana opcache tidak diinisialisasi
- Optimalkan opruntime
- Mendukung Delphi 11
- Dukung FPC untuk perangkat IoT
2021-7
- Masalah pengenalan tetap seperti ekspresi karakter-2.0e-3
- Memperbaiki perpustakaan opcode.pas karena sensitivitas kasus dan tidak kompatibel dengan Win/Linux
2020-3
- Menambahkan informasi deklarasi ke fungsi pendaftaran
- Perbaiki simbol pra -fungsi -func (1+1)
- Memperbaiki fungsi simbol (1+1) -1 setelah fungsi
2019-7
Dukungan Ekspresi Matriks
// 构建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
- Memperbaiki bug setelah pengkodean catatan TextParsing
- Opcode menambahkan tipe panggilan balik (lihat dukungan skrip di Zai Toolchain)
2018-9-29
- Teknologi baru: Teknologi probe teks yang ditambahkan: Dapat mengurangi kompleksitas pemrograman program semut sebesar 50%.
- Teknologi Baru: Karakter Karakter Karakter-demi-Karakter Perayapan Karakter Meningkatkan %500
- Multi-Platform: Dukungan penuh untuk beberapa sistem IoT dan arsitektur perangkat keras multi-prosesor
- Demo Baru: Menambahkan demo FPC baru, yang tidak menggunakan fungsi anonim
- Proses: Kompatibel dengan dukungan IoT berdasarkan FPC: dari yang mendasari ke penamaan terpadu skala besar yang disesuaikan dan penamaan. Penyesuaian ini akan memengaruhi detail kode banyak proyek.
// 本项目中的回调分为3种
// call: 直接指针回调,fpc+delphi有效
// method: 方法回调,会继承一个方法宿主的地址,fpc+delphi有效
// proc: 匿名过程回调,只有delphi有效
// 如果本项调整对于改造现有工程有一定的工作量,请使用字符串批量处理工具
// 在任何有回调重载的地方,方法与函数,均需要在后缀曾加回调类型首字母说明
// 如
RunOp 变更为 RunOpP() // 后缀加P表示匿名类型回调
RunOp 变更为 RunOpM() // 后缀加M表示方法类型的回调
RunOp 变更为 RunOpC() // 后缀加C表示指针类型的回调
2018-7-6
- Secara signifikan memperbaiki aturan penamaan dari perpustakaan yang mendasarinya
- Mendukung platform FPC/86/64, dan semua perpustakaan dasar mendukung kompilasi dan operasi bebas masalah di bawah Linux.
- Dukungan penuh untuk FPC Compiler 3.1.1
- Menambahkan ukuran dan dukungan endian
- Memperbaiki masalah tidak menolak untuk menggunakan INT64 untuk kompiler FPC 32-bit
- Memperbaiki masalah pengecualian dalam string berjalan di Linux saat FPC Compiler
- Menambahkan Alat Kompilasi Pascal untuk menstandarkan kode Pascal ke dalam C-Style All Unified case, yang sepenuhnya kompatibel dengan mekanisme nama file case-sensitif Linux
2018-4-12
- Memperbaiki bug ingatan di luar batas dalam kernel: gejala bug ini adalah tidak dapat diakses tanpa alasan, dan sulit untuk dihilangkan melalui debugging normal. Ini adalah bug yang disebabkan oleh memori di luar batas.
2018-3-1
- Menambahkan fungsi perbandingan string fuzzy (SmithWaterman) ke kernel TPascalstring, optimasi dan pengujian selesai
- Algoritma ini milik alamat Wikipedia Smith-Waterman, sebuah disiplin rekayasa genetika biologis. https://en.wikipedia.org/wiki/smith%e2%80%93waterman_algorithm
2018-2-28
- Fix C Escape Character Buf, terima kasih kepada AMU QQ345148965
- Ubah penamaan parameter charpos menjadi coffset dan tambahkan pengubah const
2018-2-26
- Memperbaiki masalah tidak dapat mengkompilasi menggunakan mode pelepasan
- Memperbaiki masalah pemotongan dan segmentasi yang salah dalam zekspresi
- Sedikit meningkatkan kinerja pemotongan probe karakter (splittoken, splitchar)
- Karena lapisan yang mendasarinya menulis ulang kunci atom, pengubah yang dikemas ditambahkan sebelum banyak deklarasi catatan
2018-2-25
- Menambahkan dukungan simbol ekspresi khusus
- Demonstrasi baru simbol ekspresi khusus
2018-2-25
- Memperbaiki masalah bahwa parameter fungsi bersarang tidak dapat memperluas antarmuka dengan benar
- Memperbaiki masalah bahwa penyelidikan digital mesin analisis tidak dapat mengenali bilangan dan fungsi alami heksadesimal
- Menambahkan contoh demo baru untuk penugasan, termasuk deklarasi variabel, multiplexing statis, multiplexing dinamis, total trilogi. Silakan pelajari sendiri dalam contoh demonstrasi.
- Memperbaiki masalah serikat string dan pencocokan angka
- Mendukung Sintaks Gaya Kode C 0x16 digit
2018-2-6
- Tulis ulang kernel parser sekali, mendukung panggilan fungsi, dan mulai sekarang, zekspresi akan diperbarui terus menerus
Jika Anda memiliki pertanyaan tentang penggunaan zekspresi, silakan tambahkan Reksa Bantuan QQ Group 490269542, jangan langsung hubungi penulis
oleh.QQ600585 2017-6