亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

方程(表達式)解析器具有優先權?

方程(表達式)解析器具有優先權?

波斯汪 2019-08-09 11:09:57
方程(表達式)解析器具有優先權?我使用簡單的堆棧算法開發了一個方程解析器,它將處理二進制(+, - ,|,&,*,/等)運算符,一元(?。┻\算符和括號。但是,使用這種方法會讓我擁有相同優先級的所有內容 - 無論操作符如何,都會從左到右進行評估,盡管可以使用括號強制執行優先級。所以現在“1 + 11 * 5”會返回60,而不是人們所期望的56。雖然這適用于當前項目,但我希望有一個通用例程,我可以用于以后的項目。編輯清晰:解析具有優先級的方程的好算法是什么?我對一些簡單的實現感興趣,并且理解我可以自己編寫代碼來避免使用可用代碼的許可問題。語法:我不明白語法問題 - 我是手寫的。這很簡單,我認為不需要YACC或Bison。我只需要用諸如“2 + 3 *(42/13)”之類的方程計算字符串。語言:我在C中這樣做,但我對算法感興趣,而不是語言特定的解決方案。C足夠低,如果需要,很容易轉換成另一種語言。代碼示例我發布了上面討論的簡單表達式解析器的測試代碼。項目要求發生了變化,因此我從不需要優化性能或空間代碼,因為它沒有包含在項目中。它是原始的詳細形式,應該易于理解。如果我在運算符優先級方面做了更多的事情,我可能會選擇宏hack,因為它簡單地匹配程序的其余部分。但是,如果我在一個真實的項目中使用它,我將尋求一個更緊湊/更快速的解析器。
查看完整描述

3 回答

  • 3 回答
  • 0 關注
  • 639 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號