Zexpression Syntaxコンパイラ +インタープリター、スクリプトエンジンカーネル
技術システムの説明:
- 編集原則の技術システムでは、テキストコードを処理する前に前処理が必要です。私たちがよく話す構文と構文の砂糖はすべて前処理プログラムです
- 語彙方法:語彙的方法は、テキストキーワード、数字、および記号を分類し、最後に語彙ツリーを形成し、順次処理の原理に厳密に従うことです。
- ステートメント:前処理コードでは、宣言部分は宣言ツリーと呼ばれます。語彙前の前処理は単純化された方法であるため、宣言ツリーは語彙的な順次前処理にも依存しています。
- 構文:宣言の前処理後、コード式の単一ラインの論理操作を処理します。このステップは構文と呼ばれます。 Zexpression Syntaxコンパイラと見なされます。これは、私がかつて書いたコンパイラから意図的に剥がしたソリューションです。独立して配布および使用でき、デジタル前処理、グラフィックスイメージ、科学的コンピューティング、その他の分野で実際に使用でき、自分自身を改善する手段として使用することもできます。
核となるアイデア
- Zexpressionの実装は、ピアツーピアの複雑さの原則を採用し、コンパイラの問題を解決するために書かれています。複雑さは、通常のプログラムの複雑さよりもはるかに高くなっています。最終的な問題を解決するため、コードの命名構造とヒープ構造に脆弱性はないため、成熟した構文インタープリターソリューションです。
Zexpressionの特徴
- 完全なシングルステップアトム化操作
- 完全なシンボル優先事項後処理
- エラーが発生する場合、リテラルエラーとフィードバックを事前に処理できます
- フローティングポイントと整数を識別できる自然数執筆方法
- サポート関数呼び出し
- カスタムスクリプトの構文をサポートします
- 逆ポーランド2.0シンボル優先処理
- 携帯電話のAndroidモデルとAppleモデルをサポートしています
- 完全な機能デモ、完全なパフォーマンス、解析精度評価フレームワーク
- コンパイル後、Atomized OPコードを形成できます。これは、CPUタイプを制限することなく、ストリームを介して高速でロードして実行できます
- OPコードフレームワークは、ARMV7 ARMX64 X64 X86およびその他のプラットフォームのマシンコードに簡単にデコードできます
- マトリックスおよびベクトル発現サポート
プラットフォームサポート、Delphi 10.3アップデート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(テストされていない)、クロスソケット(C/S OK)
- ubuntu16.04 x64サーバー:indy(c/s ok)、crosssocket(c/s ok)
- ubuntu18.04 x86+x64デスクトップ:FPC3.0.4のみシナプス(C/S OK)
- ubuntu18.04 x86+x64サーバー:FPC3.0.4のみシナプス(C/S OK)
- ubuntu18.04 arm32+arm neonサーバー:FPC3.0.4のみシナプス(C/S OK)
- ubuntu18.04 arm32+arm neonデスクトップ:FPC3.0.4のみコンパイルOK、実行中はテストなし。
- ubuntu16.04 mate arm32デスクトップ:FPC3.0.4のみコンパイルOK、テストが合格しました
- 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アップデート2およびFPC 3.0.4でのテスト
- MIPS(FPC-Little Endian)、ソフトフロート、QEMUのテストパス
- Intel X86(FPC-X86)、ソフトフロート
- Intel X86(Delphi+FPC)、ハードフロート、80386、Pentium、Pentium2、Pentium3、Pentium4、Pentiumm、Corei、Coreavx、Coreavx2
- Intel X64(FPC-X86_64)、ソフトフロート
- Intel X64(Delphi+FPC)、Hard Float、Athlon64、Corei、Coreavx、Coreavx2
- ARM(FPC-ARM32-EABI、ソフトフロート):ARMV3、ARMV4、ARMV4T、ARMV5、ARMV5T、ARMV5TE、ARMV5TEJ
- ARM(FPC-ARM32-EABI、ハードフロート):ARMV6、ARMV6K、ARMV6T2、ARMV6Z、ARMV6M、ARMV7、ARMV7A、ARMV7R、ARMV7M、ARMV7EM
- ARM(FPC-ARM64-EABI、ハードフロート):ARMV8、AARCH64
ログを更新します
2021-9-22
- Numbersbaseライブラリには、組み込みのZexpressionドライバーがあります。詳細については、Zcloudのネットワーク変数サービスhttps://github.com/passbyyou888/zcloudを参照してください
- Opcacheが初期化されていない問題を修正しました
- Opruntimeを最適化します
- サポートDelphi 11
- IoTデバイスのFPCをサポートします
2021-7
- 文字式2.0E-3などの認識問題を固定しました
- ケースの感度とWin/Linuxと互換性がないため、opcode.pasライブラリを修正しました
2020-3
- 登録関数に宣言情報を追加しました
- 機能前のシンボル-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ツールチェーンのスクリプトサポートを参照)
2018-9-29
- 新しいテクノロジー:テキストプローブテクノロジーの追加:ANTプログラムのプログラミングの複雑さを50%削減できます。
- 新しいテクノロジー:キャラクターごとのテキストキャラクターのクロールパフォーマンスは、%500を改善します
- マルチプラットフォーム:複数のIoTシステムとマルチプロセッサハードウェアアーキテクチャの完全なサポート
- 新しいデモ:匿名関数を使用しない新しいFPCデモを追加しました
- プロセス:FPCに基づいたIoTサポートと互換性があります:基礎となる高度で大規模な統一命名に至るまで調整され、命名されます。この調整は、多くのプロジェクトのコードの詳細に影響します。
// 本项目中的回调分为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の完全なサポート
- サイズとエンディアンのサポートを追加しました
- 32ビットFPCコンパイラにINT64を使用することを拒否しないという問題を修正しました
- FPCコンパイラのときにLinuxで実行される文字列の例外の問題を修正しました
- Pascal Precompilationツールを追加して、PascalコードをCスタイルのすべての統合ケースに標準化しました。これはLinuxケースに敏感なファイル名メカニズムと完全に互換性があります
2018-4-12
- カーネルのメモリアウトバウンドバグを修正しました。このバグの症状は、理由もなくアクセスできないことであり、通常のデバッグによって排除することは困難です。これは、メモリアウトバウンドによって引き起こされるバグです。
2018-3-1
- ファジーストリング比較関数(Smithwaterman)をTPascalstringカーネルに追加し、最適化とテストが完了しました
- このアルゴリズムは、生物学的遺伝子工学の規律であるスミスウォーターマンのウィキペディアアドレスに属します。 https://en.wikipedia.org/wiki/smith%e2%80%93waterman_algorithm
2018-2-28
- AMU QQ345148965のおかげで、CエスケープキャラクターBUFを修正します
- Charposのパラメーターの命名をCoffsetに変更し、Const Modifierを追加します
2018-2-26
- リリースモードを使用してコンパイルできないという問題を修正しました
- Zexpressionにおける誤った切断とセグメンテーションの問題を修正しました
- キャラクタープローブの切断性能をわずかに改善します(Splittoken、Splitchar)
- 基礎となる層がアトミックロックを書き直すため、多くのレコード宣言の前に詰め込まれた修飾子が追加されます
2018-2-25
- カスタム式シンボルサポートが追加されました
- カスタム式シンボルの新しいデモンストレーション
2018-2-25
- ネストされた関数パラメーターがインターフェイスを正しく展開できないという問題を修正しました
- 分析エンジンのデジタルプローブが16進数と機能を認識できない問題を修正しました
- 可変宣言、静的多重化、動的多重化、合計3部作など、割り当ての新しいデモの例を追加しました。デモンストレーションの例で自分で勉強してください。
- 文字列と数マッチングユニオンの問題を修正しました
- Cコードスタイル0x16桁の構文をサポートします
2018-2-6
- パーサーカーネルを一度書き直し、関数呼び出しをサポートし、これからZexpressionは継続的に更新されます
Zexpressionの使用についてご質問がある場合は、Mutural Aid QQ Group 490269542を追加してください。著者に直接連絡しないでください
by.qq600585 2017-6