將非字尾式用來表示的算術表示式轉換為用逆波蘭式來表示的算術表示式,並計算用逆波蘭式來表示的算術表示式的值。
1.分析出完整的運算數或者運算子(參考詞法分析)。0代表數字,1代表運算子 tuple為元組資料型別。
static tuplereadobject(string inputstring)
2.遇到操作符時的棧操作
static void insertop(string op)
沒有問題
writeline($"逆波蘭表示式為: 運算結果為:");
opstack.clear();
numstack.clear();
rpnstack.clear();
rpnexpression.clear();}}
/// /// 生成逆波蘭式
///
static void createexpression()
while (numstack.count > 0)
foreach (object o in rpnstack)
}/// /// 計算逆波蘭式
///
///
static int calexpression()
}return sum;
}/// /// 遇到操作符時的棧操作
///
///
static void insertop(string op)
opstack.push(op);
}else
}break;
case "+":
case "-":
opstack.push(op);
}else
}break;
case "(":
break;
case ")":
opstack.pop();}}
break;
} }
/// /// 分析出完整的運算數,或者運算子;0代表數字,1代表運算子
///
///
///
static tuplereadobject(string inputstring)
}else
inputstring = inputstring.substring(index, inputstring.length - index);
return tuple.create(type, sb.tostring(), inputstring);}}
}
編譯原理 逆波蘭式分析計算
將非字尾式用來表示的算術表示式轉換為用逆波蘭式來表示的算術表示式,並計算用逆波蘭式來表示的算術表示式的值。1 逆波蘭式定義 將運算物件寫在前面,而把運算符號寫在後面。用這種表示法表示的表示式也稱做字尾式。逆波蘭式的特點在於運算物件順序不變,運算符號位置反映運算順序。採用逆波蘭式可以很好的表示簡單算術...
C 實現逆波蘭式
a b c的逆波蘭式為ab c,假設計算機把ab c按從左到右的順序壓入棧中,並且按照遇到運算子就把棧頂兩個元素出棧,執行運算,得到的結果再入棧的原則來進行處理,那麼ab c的執行結果如下nkqnqmthw 1 a入棧 0位置 2 b入棧 1位置 3 遇到運算子 將a和b出棧,執行a b的操作,得到...
簡單的逆波蘭式 c語言
include include include define ok 1 define error 0 const int maxn 20 typedef struct stackstack void init stack s,int size int push stack s,char value ...