0

ユーザーが方程式を入力して答えを受け取ることができる計算機をプログラムしようとしています (操作の順序が適用されます)。ユーザー入力を収集するために input() コマンドを使用するのではなく、raw_input() コマンドを使用します。別のユーザーから、再帰的解析の助けを借りてこのタスクを達成できると聞きました。

「最初のステップは、文字列を各引数に分離することです。

ユーザーが次のように入力するとします。

1+2.0+3+4

int に変換する前に、文字列をコンポーネントに分割する必要があります。

1
+
2.0
+
3
+
4

これには再帰パーサーが必要です..." -aong152

さらに、再帰的な解析を使用して探している結果を生成する方法を説明するこの記事を読みました。

http://blog.erezsh.com/how-to-write-a-calculator-in-70-python-lines-by-writing-a-recursive-descent-parser/

私は著者が使用しているコーディングを理解していません。この Web サイトと Google で、再帰構文解析の学習を開始するためのヘルプを検索しましたが、何も見つかりませんでした。誰かが私に正しい方向へのプッシュを与えて、再帰的解析の基本を説明してもらえますか?

4

2 に答える 2

1

+-/* を処理できるpyparsingを使用した完全に機能するパーサーは、次の場所にあります。

http://pyparsing.wikispaces.com/file/view/fourFn.py/30154950/fourFn.py

これは、再帰的な文法を使用して、括弧の適切なネストを処理します。の例に取り組む価値があるかもしれません。文法の書き方と、それがパーサーとどのように違うのかを学ぶことができます!

于 2013-05-09T03:40:14.627 に答える