解決一些bug:
一、 按回車出bug
二 、1+1=2 未完全解析就返回樹了
三、1+(1-4 出錯 因為剛開始由exp()->term()->factor()解析出1後,然後識別出+運算子後,繼續解析(1-4 由於缺少右括號,這個expr()所返回的是null節點,那麼新增到sumnode的時候就會出錯!
四、1+(-)
解決1:
只需要在main中進行判斷 if(!scanner.isempty())
所以在掃瞄器中增加乙個函式isempty 進行判斷
scanner::scanner(const std::string& buf) : buf_(buf), curpos_(0)
bool scanner::isempty() const
解決2:
bool scanner::isdone() const
main中
if (!scanner.isempty())
else
std::cout<<"syntax error."<} }
用狀態來進行判斷的話 就可以解決後面的問題!所以接下來的bug都已經被解決了。
物件導向版表示式(十)
functiontable實現 讓表示式計算器支援函式運算 對於乙個好的科學計算器,內建函式是必需的。計算器必須能計算平方根 對數 三角函式等等。因而我們要讓解析器識別這些函式,並呼叫適當的數學庫函式。functiontable實現 functiontable.h ifndef function t...
正規表示式 物件導向程式設計
一.正規表示式 正規表示式 由一系列特殊字元拼接而成的表示式 規則,該表示式用於從乙個大字串中匹配出符合規則的子字串 1.常用匹配模式 w 匹配字母數字及下劃線 w 匹配非字母數字及下劃線 s 匹配任意空白字元等價於 t n r s 匹配任意非空字元 d 匹配任意數字,等價於 0 9 d 匹配任意非...
九 EL表示式
expr 可以是常量 helloword 變數 隱含物件 pagescope page requestscope request sessoinscope session el 提供 和 兩種運算子來訪問資料。下列兩者之間的關係是等價的 如 eq 等於 ne 不等於 gt 大於 lt 小於 ge 大...