記事"MQLによるMQLの構文解析"についてのディスカッション

 

新しい記事 MQLによるMQLの構文解析 はパブリッシュされました:

本稿では、MQLに基づいたソースコードの解析に使用されるプリプロセッサ、スキャナ、パーサについて説明します。MQLの実装が添付されています。

プログラミングとは基本的に、汎用または特殊目的の言語を使用して一部のプロセスを形式化し自動化することです。MetaTrader取引プラットフォームでは、トレーダーのさまざまな問題を解決するために、組み込みMQL言語を使用したプログラミングを適用することができます。通常、コーディングのプロセスは、ソースコードで指定された規則に従ったアプリケーションデータの分析および処理に基づいています。しかしながら、ソースコード自体を分析し処理する必要性が時々生じます。下記は例です。

最も一貫性があり一般的なタスクの1つは、ソースコードベースでのコンテキスト検索とセマンティック検索です。確かに、ソースコード内の文字列は通常のテキストのように検索できますが、この場合、求められている意味が失われてしまいます。結局のところ、ソースコードの場合、それぞれの特定の場合での部分文字列の使用の詳細を区別することが望ましいものです。プログラマが「notification」のように特定の変数が使用されている場所を見つけたい場合、名前による単純検索では、この文字列のメソッド名やリテラルなどの他の値、またはコメント内での使用が必要以上に多く返されることがあります。

大規模プロジェクトでは原則としてコード構造、依存関係、クラス階層の特定がより複雑でありより求められています。それはコードのリファクタリングや改善およびコード生成を可能にするメタプログラミングと密接に関係しています。MetaEditorには、コード生成、特にウィザードを使用してエキスパートアドバイザーのソースコード作成したりソースコードでヘッダファイルを作成したりする機会がありますが、このテクノロジの可能性ははるかに強力なものです。

コード構造分析を使用すると、さまざまな品質指標および統計情報を計算したり、コンパイラでは検出できないランタイムエラーの典型的な原因を特定したりできます。実際、言うまでもなく、コンパイラ自体はソースコードを分析する最初のツールであり、さまざまな種類の警告を返します。しかし、すべての潜在的なエラーの確認は通常コンパイラには組み込まれていません。このタスクは大きすぎるので、通常それは別のプログラムに割り当てられています。

さらに、ソースコードの解析は、スタイル設定(フォーマット)と難読化に使用されます。

MQL構文解析クラスのUML図

作者: Stanislav Korotky

理由: