0

のプロジェクトの場合、 を使用しData Structuresて を評価することをお勧めします。Lisp ExpressionJava API Stacks

にはLisp expressions4 つの基本的な演算子があります。+, -, *, / . 式の有効なトークンは'(', ')'、および演算子です。

Lisp expression: ( + (-6) (+ 3 2 1) (/ 10 5) (* 2 3 4))に等しい26


のトークンを計算し、Lispそれらを に戻すにはどうすればよいstackですか?

4

1 に答える 1

1

レシピは次のとおりです (はい、Javaを知っている必要があります。それ以外の方法はありません)。

  • 入力をトークン化します。次のトークンが得られます
    • S-EXPR-START (「(」に遭遇するたびに)
    • S-EXPR-END (「)」に遭遇するたびに)
    • NUMBER (解析された数値の値である値)
    • OPERATION (操作コードの値: +-*/ など)
  • 構文ツリーを構築します: s 式 (開き括弧) を開始するたびに、それは新しいツリー ノードであり、その値は関数であり、子はオペランドです。
  • ノード/子をこのノードの結果に置き換えることにより、ボトムアップ アプローチでツリーを評価します。...
  • 利益!
于 2013-10-23T13:42:56.550 に答える