• ベストアンサー

パーサーに関する良本

計算式の文字列を外部から渡し、計算結果を返すプログラムを作ろうとしています。 色々調べた結果、パーサーという物があることが分かったのですが、 使い方が分りません。 日本語での良い本(サイト)があれば、教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.3

★アドバイス ・過去に似たような質問が別カテゴリでありました。参考に。  http://oshiete1.goo.ne.jp/qa3495084.html→『数式から不要なカッコを取り除く方法』  LL法について  http://ja.wikipedia.org/wiki/LL%E6%B3%95→『LL法』  構文解析について  (a)http://ja.wikipedia.org/wiki/%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90→『構文解析』  (b)http://ja.wikipedia.org/wiki/%E5%86%8D%E5%B8%B0%E4%B8%8B%E9%99%8D%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90→『再帰下降構文解析』  (b)にはソースが載っています。 ・最初は『再帰的な式評価』が簡単だと思います。  下に紹介する『C言語による実用アルゴリズム入門』もお勧めです。  基本的にアルゴリズムの本ですが、ここに式評価や簡単な多倍長演算のソースなどが  載っています。電卓プログラムで参考になる1冊です。ぜひ。どうぞ。 本の紹介:  (1)http://www.amazon.co.jp/dp/4797328290/→『C言語による実用アルゴリズム入門』  この本の『Chapter7 式の処理』で   7.1 トークン解析   7.2 逆ポーランド記法を使う式の解析   7.3 逆ポーランド記法の式評価   7.4 再帰的な方法による式の解析   7.5 電卓のプログラム   となっています。  (2)http://www.amazon.co.jp/dp/4839919232/→『いまどきのプログラム言語の作り方』  こちらは本格的な書籍です。 ・以上。参考に。

参考URL:
http://www.amazon.co.jp/dp/4797328290/
tk332
質問者

お礼

回答ありがとうございます。 資料を参考に勉強してみます。

その他の回答 (3)

回答No.4

下記の本をお勧めします。 ソースコードがついています。 Modula2ですが C++へのが変更可能です。 マイクロコンピュータのための 「コンパイラ・コンパイラ」 ~ コンパイラ自動生成にむけて ~ P.レッヒェンベルク H.メッセンベック 著 玉井 浩(大妻女子大学教授) 訳 定価:3,990円(本体3,800円+税) 発行:サイエンス社 発行日:1991-02-01 ISBN 978-4-7819-0607-2 / A5判/432頁

tk332
質問者

お礼

回答ありがとうございます。 本屋に行って見てみます。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.2

本格的なパーサは、コンパイラやインタプリタなどの言語を作る時に使うのが普通ですね。関数も無いような簡単な計算式でしたら自力で構文解析プログラムを作ったほうが早いですよ。 こんなのとか↓ http://ruffnex.oc.to/kenji/src/dentaku2.c たしかにパーサで電卓を作っている例も結構ありますので、挑戦してみるのも良いかもしれません。 yacc/lexというプログラムを使います。 http://kmaebashi.com/programmer/devlang/yacclex.html こちらの方が覚えることは多いです。 どちらが良いかは、どこまでの機能を作るかで決まります。

tk332
質問者

お礼

回答ありがとうございます。 パーサのことを知らなかったので自分で作ろうとしたのですが、 途中で挫折し、色々調べているうちに、パーサにたどり着きました。 if, exp, log, max, min やいくつかのオリジナルの関数などを入れたいと考えています。

  • aris-wiz
  • ベストアンサー率38% (96/252)
回答No.1

パーサとは構文解析器のことをいい、 CやC++、Java、XMLなどさまざまな種類あります。 言語仕様にも絡んでくると思います。 計算式というのはどのような仕様なのでしょうか? とりあえず、どういうものか。 http://ysserve.int-univ.com/sugsi/Lecture/syntcomp/section2.html

tk332
質問者

お礼

早速の回答ありがとうございます。

関連するQ&A