1.中置、接頭辞、接尾式
人が表現を識別することができる場合:1 +(2 + 3)* 4-5
オペレータの位置に分割します:
①中置式:1 +(2 + 3)* 4-5
②プレフィックスの式: - 1 + + * 2345
③後置式:1 2 3 * 4 + + 5 -
すでに計算順序が含まれているプレフィックスと後置式は、優先順位の括弧を決定する必要はありません
2.ターンプレフィックス中置
2.1中置ターンプレフィックス
①プレス演算子の優先順位は、全ての操作部を括弧しました
((1 +((2 + 3)* 4)) - 5)
②対応するブラケットの正面にオペレータが移動し
- (+(1 *(+ 2 3)4))5)
ブラケットの③除去、接頭辞表現を与えるために、
- + 1 * + 2 3 4 5
コンピュータ実装の変換:
(1)式ツリー
(2)スタック
①2つのスタック、スタック演算子SLと、S2スタックストア中間結果
②左右のスキャン表現へ
③出会いオペランド、S2を押してください
④遭遇したオペレータは、スタックS1の演算子の優先順位と比較します
S1は空である、またはスタックの最上部は、右括弧「)」、オペレータスタックS1である場合
オペレータスタック高さよりも優先か等しい場合、オペレータプッシュS1
優先度は、スタックの最上部よりも低い場合、次いで、スタックのスタック内部のS2圧にオペレータS1、及び、比較演算子スタックS2に進み
⑤遭遇ブラケット
直接右括弧内S1
それは右のブラケット、これらのブラケットは捨て山に遭遇するまで、左括弧、オペレータが順次、S2にスタックS1を取り出します
左端の表現まで繰り返し⑥
⑦残りオペレータS1 S2へ順次排出圧力
⑧表現の接頭辞を与えるために、ポップ-S2重い要素を回します
2.2プレフィックス式解析計算
①右から左スキャン式と
OP-トップスタック、スタック結果:②数字、デジタルプッシュ、オペレータの経験は、撮影した二つの数字は、スタック操作を行います
③は、左端の表現まで繰り返されます
3.中置ターンサフィックス
3.1中置ターンサフィックス
①プレス演算子の優先順位は、全ての操作部を括弧しました
②対応するブラケットの後方にオペレータが移動し
ブラケットの③除去、接頭辞表現を与えるために、
(1)式ツリー
(2)スタック
決済を解析3.2後置式
①左から右の式にスキャン
OP-トップスタック、スタック結果:②数字、デジタルプッシュ、オペレータの経験は、撮影した二つの数字は、スタック操作を行います
③式の右端まで、繰り返し
表現の合法性を決定する4
ブラケットの正当性(1)
ここで括弧内にのみ発現{} []()、しない一時的数値と演算子、および追加の無効な式文字列の入力がありません
}他{falseを返します。}}
(2)事業者の正当性