掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
文字列から計算させるには? (ID:3688)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
逆ポーランド記法なら簡単なんですけどね。 # 7+5*3-8であれば、7 5 3 * + 8 -となる。 四則演算は、次のようなBNFで記述できます。 expr: expr '+' expr | expr '-' expr | expr '*' expr | expr '/' expr | '-' expr | '(' expr ')' | NUMBER ; ただし、'+','-'よりも、'*','/'のほうが優先度が高く、さらに単項負号である'-'(「マイナス1」などの記号。減算の'-'ではない)は一番優先度が高い。 ちなみに、NUMBERに当たる正規表現は、 -?(([0-9]+)|([0-9]*\.[0-9]+)([eE][-+]?[0-9]+)?) です。 これを自前で処理させるとしたら至難の業です。 もし、このような字句解析・構文解析に興味がおありなら、Lex/Yaccをおすすめします。 もともとC言語用ですが、 http://www2.big.or.jp/~osamu/Delphi/ こちらに、TPLex, TPYacc(TurboPascal用Lex/Yacc)のDelphi用コードがあります。 サンプルに、計算するものもあります。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.