トレースタスク(関数グラフの作成) - ページ 5 123456789 新しいコメント --- 2011.01.22 23:52 #41 jartmailru: 静的コード解析...実行は必須ではありません。 もう一つの選択肢として、テキストをパースすることを考えていました。 でも、何から手をつけていいのかもわからない。 Андрей 2011.01.22 23:52 #42 tara: お好きなようにどうぞ。 誤った手段を選択することは、プロフェッショナリズムに欠ける。 --- 2011.01.22 23:54 #43 MetaDriver: この 問題が解決不可能であることは明らかではないでしょうか。こうすることで、算術()[] と演算子{}の 括弧のペアをなくし、1つの開き括弧に置き換えることができるのです。弱すぎますかね? ;) なぜか。 結局のところ、単項演算もたくさんあるのです。 jartmailru。 誤った手段を選択することは、プロフェッショナリズムに欠ける。 何をプログラムするかで、どんな違いがあるのでしょうか?どんなビジネスでも重要なのは、ソリューションマトリックス です。 それ以外のことは関係ない。 Vladimir Gomonov 2011.01.22 23:54 #44 jartmailru: 静的コード解析...実行は必須ではありません。 コードを関数(ブロック)に分割し、誰が誰を呼んでいるのかを分析するのです。 私も同じようなことを考えています。ただ、プログラム全体を徹底的に解析して、山とニキビを分けなければならないのですが......。 そして、主人公には必要ないようです、私の推測が正しければ、ファクトにコールをプリントする必要があるようです。呼び出しの条件が成立した場合とか。 Андрей 2011.01.22 23:54 #45 sergeev: もう一つの選択肢として、テキストを解析することを考えていました。つまり、MQLを解析してプログラム構造を作るということです。 しかし、その実装をどこから始めればいいのかもわからない。 初歩的なことですが。 関数とは何ですか? . [単語スペース / ないかもしれない】単語機能名 括弧「(」、そこに何か、括弧閉じ「)」。) カーリーオープナー . いくつかのコード 中括弧 {, } . カーリークロージング} . 第一部は終了しました。 Алексей Тарабанов 2011.01.22 23:57 #46 sergeev: :)) 最初の投稿を読むと、タスクは、ソースコードの各関数に、"{"のすぐ後に、サービス関数を1つだけ追加することです。 しかし、そのような方法で、すべてのソースコードの通路を取得し、コールツリーを構築します。 この場合、ソース関数の入力パラメータや、その結果、コード内部は一切変更されません。 純粋なトレースのことではありません。それは、関数のグラフを構成することだけです。 以下はログの抜粋です。 01:45:18 CTA0 USDCHF,H1: loaded successfully 01:45:18 CTA0 USDCHF,H1 inputs: BarsBeforeActivate=1; BarsBeforeConfirm=0; TraceIsAllowed=true; IsStaticMode=false; ClearAtFinish=true; ExcludeFirstBar=false; ExcludeLastBar=true; RasingLinesColor=(0,128,128); ReducingLinesColor=(255,0,255); 01:45:18 CTA0 USDCHF,H1: Init 01:45:18 CTA0 USDCHF,H1: Init=>NewBar(DeadLine) 01:45:18 CTA0 USDCHF,H1: Init=>InitType 01:45:18 CTA0 USDCHF,H1: Init=>InitType 01:45:18 CTA0 USDCHF,H1: Init=>InitType 01:45:18 CTA0 USDCHF,H1: Init=>InitType 01:45:18 CTA0 USDCHF,H1: Init=>InitType 01:45:18 CTA0 USDCHF,H1: Init=>InitType 01:45:18 CTA0 USDCHF,H1: Init=>InitType 01:45:18 CTA0 USDCHF,H1: Init=>InitType 01:45:18 CTA0 USDCHF,H1: Init=>InitType 01:45:18 CTA0 USDCHF,H1: Init=>InitType 01:45:18 CTA0 USDCHF,H1: Init=>InitType 01:45:18 CTA0 USDCHF,H1: Init=>InitType 01:45:18 CTA0 USDCHF,H1: Init=>InitType 01:45:18 CTA0 USDCHF,H1: Init=>DeleteGroup(Init) 01:45:18 CTA0 USDCHF,H1: Init=>LoadGroup(ClearScreen) 01:45:18 CTA0 USDCHF,H1: Init=>LoadGroup(ClearScreen)=>ClearGroup 01:45:18 CTA0 USDCHF,H1: Init=>LoadGroup(ClearScreen)=>ClearGroup=>ClearTrend 01:45:18 CTA0 USDCHF,H1: Init=>LoadGroup(ClearScreen)=>ClearGroup=>ClearTrend=>ClearTrace 01:45:18 CTA0 USDCHF,H1: Init=>LoadGroup(ClearScreen)=>ClearGroup(Empty) 01:45:18 CTA0 USDCHF,H1: Init=>LoadGroup(ClearScreen)=>ClearGroup(Empty)=>ClearTrend 01:45:18 CTA0 USDCHF,H1: Init=>LoadGroup(ClearScreen)=>ClearGroup(Empty)=>ClearTrend=>ClearTrace 01:45:18 CTA0 USDCHF,H1: Init=>LoadGroup(ClearScreen)=>SaveGroup(Empty) 01:45:18 CTA0 USDCHF,H1: Init=>PaintGroup(ClearScreen) Vladimir Gomonov 2011.01.22 23:57 #47 sergeev: なぜか。 何しろ単項演算が少なくないのだから。 さて、この演算は明らかに単項演算ではありません。静的テキスト解析における "入れ子状態 "は単項目である。ダイナミックトレースではバイナリーです。INPUTとOUTPUTがあります。 ないですか? --- 2011.01.22 23:59 #48 MetaDriver: 私も同じようなことを考えています。ただ、プログラム全体を徹底的に解析して、山とニキビを分けなければならないのですが......。 そして、それはスターターが必要とするものではないようです。私の直感が正しければ、彼は事実上の呼び出しをプリントアウトする必要があります。呼び出しの条件が揃えばね。 解析の際、実際の呼び出しはそれ自体で検出されます。誰が誰と、どこから・・・。 ということで、今のところ、これが唯一の完全解決案です。 Андрей 2011.01.23 00:03 #49 山」「ニキビ」と同様に「徹底的な」解析が行われていない...。 . ところで...追加します。 . - まず、プログラムテキストは「レキサー」によって分析される。 レキサは、プログラムテキストを「トークン」に打ち込む。 私たちの場合、トークンは . - 空白 - スペース、タブ、行末など- 我々はフォーマッタを書かないので、このようなものは無視します。 - 括弧 ( / ) - ブラケット [ / ]です。 - 括弧 { / } をつける - 演算子 + - / * - ワイルドカード ;, それ以外のものは基本的に識別子である (数字もこのグループに入りますが、気にしないことにします)。 . パース・レキシングを 行う際、型が struct { typeToken, stringToken }. . パースには、アタッチメントのタイプである struct Tocken { typeToken, stringToken, list<Token> list of nested tokens }. でも、ここはもっとシンプルに考えてもいいんじゃないでしょうか。 . そして、先ほどのグループ分けを行う。些細なことですが。 . 実はレキサー+パーサーの組み合わせは、このジャンルの古典的なものなんです。 lex/flex/bison/ant-lrについては、(私も名前を知らない;-D)-を助言することはできません。 まさにハンドメイドと書きました。 --- 2011.01.23 00:20 #50 OK、皆さん、討論をありがとうございました。 123456789 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
静的コード解析...実行は必須ではありません。
もう一つの選択肢として、テキストをパースすることを考えていました。
でも、何から手をつけていいのかもわからない。
お好きなようにどうぞ。
この 問題が解決不可能であることは明らかではないでしょうか。こうすることで、算術()[] と演算子{}の 括弧のペアをなくし、1つの開き括弧に置き換えることができるのです。弱すぎますかね?
;)
なぜか。
結局のところ、単項演算もたくさんあるのです。
誤った手段を選択することは、プロフェッショナリズムに欠ける。
何をプログラムするかで、どんな違いがあるのでしょうか?どんなビジネスでも重要なのは、ソリューションマトリックス です。
それ以外のことは関係ない。
静的コード解析...実行は必須ではありません。
コードを関数(ブロック)に分割し、誰が誰を呼んでいるのかを分析するのです。
私も同じようなことを考えています。ただ、プログラム全体を徹底的に解析して、山とニキビを分けなければならないのですが......。
そして、主人公には必要ないようです、私の推測が正しければ、ファクトにコールをプリントする必要があるようです。呼び出しの条件が成立した場合とか。
もう一つの選択肢として、テキストを解析することを考えていました。つまり、MQLを解析してプログラム構造を作るということです。
しかし、その実装をどこから始めればいいのかもわからない。
関数とは何ですか?
.
[単語スペース / ないかもしれない】単語機能名 括弧「(」、そこに何か、括弧閉じ「)」。)
カーリーオープナー
.
いくつかのコード
中括弧 {, }
.
カーリークロージング}
.
第一部は終了しました。
:))
最初の投稿を読むと、タスクは、ソースコードの各関数に、"{"のすぐ後に、サービス関数を1つだけ追加することです。
しかし、そのような方法で、すべてのソースコードの通路を取得し、コールツリーを構築します。
この場合、ソース関数の入力パラメータや、その結果、コード内部は一切変更されません。
純粋なトレースのことではありません。それは、関数のグラフを構成することだけです。
以下はログの抜粋です。
なぜか。
何しろ単項演算が少なくないのだから。
さて、この演算は明らかに単項演算ではありません。静的テキスト解析における "入れ子状態 "は単項目である。ダイナミックトレースではバイナリーです。INPUTとOUTPUTがあります。
ないですか?
私も同じようなことを考えています。ただ、プログラム全体を徹底的に解析して、山とニキビを分けなければならないのですが......。
そして、それはスターターが必要とするものではないようです。私の直感が正しければ、彼は事実上の呼び出しをプリントアウトする必要があります。呼び出しの条件が揃えばね。
解析の際、実際の呼び出しはそれ自体で検出されます。誰が誰と、どこから・・・。
ということで、今のところ、これが唯一の完全解決案です。
.
ところで...追加します。
.
- まず、プログラムテキストは「レキサー」によって分析される。
レキサは、プログラムテキストを「トークン」に打ち込む。
私たちの場合、トークンは
.
- 空白 - スペース、タブ、行末など-
我々はフォーマッタを書かないので、このようなものは無視します。
- 括弧 ( / )
- ブラケット [ / ]です。
- 括弧 { / } をつける
- 演算子 + - / *
- ワイルドカード ;,
それ以外のものは基本的に識別子である
(数字もこのグループに入りますが、気にしないことにします)。
.
パース・レキシングを 行う際、型が
struct { typeToken, stringToken }.
.
パースには、アタッチメントのタイプである
struct Tocken { typeToken, stringToken, list<Token> list of nested tokens }.
でも、ここはもっとシンプルに考えてもいいんじゃないでしょうか。
.
そして、先ほどのグループ分けを行う。些細なことですが。
.
実はレキサー+パーサーの組み合わせは、このジャンルの古典的なものなんです。
lex/flex/bison/ant-lrについては、(私も名前を知らない;-D)-を助言することはできません。
まさにハンドメイドと書きました。
OK、皆さん、討論をありがとうございました。