2012-02-07 3 views
1

私はC++プログラムでコピーしたいパワーシンボルを持つ記号表現をたくさん持っています。しかし、彼らはCで使用されていない電源シンボル^を持っています。正規表現を使うべきですか?^pow()と表示するにはgccを作れますか?x^2またはx^3からpow(x、n)に多くの記号表現を変換する

+0

検索/置換操作に使用するツールはどれですか? –

+0

これは役に立ちます。小さなインミックスパーサーを作成し、生成されたツリーを取り出し、等価c/C++コードを出力します。 http://www.dreamincode.net/forums/topic/37428-converting-and-evaluating-infix-postfix-and-prefix-expressions-in-c/ – Beached

答えて

3

何か悪意のあるものではないことを確かめるには、^がパワーシンボルとして実際に使用されていることを知っているパーサーが必要です(コメントや文字列などでは使用できません)。

しかし、あなたは簡単な正規表現で逃げるかもしれません:

pow(\1,\2)(\w+)\s*\^\s*(\w+)を交換してください。

ほとんどのケースをカバーし、合理的に安全である必要があります。

もちろん、(a + b)^(c + d)などのようなパラメータがある場合は失敗します。この正規表現は、a^b2^3などと一致します。また、x^0.5と正しく一致しないため、これらが発生する可能性があります。([\w.]+)\s*\^\s*([\w.]+)

+0

Matlabでは、特定のナナイン会合に従ったすべての変数私はこのようなものをvim%s/\(\ w \ d \ w \)^ \(\ d \)/ pow(\ 1、\ 2) に使用しました。 – user1194167

関連する問題