物件導向版表示式 九

2021-06-22 06:22:37 字數 608 閱讀 8712

解決一些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 大...