我創建一個解析樹將包含類似的用語來一元和二元減號
3 - 4 * 8
或
8 * -5
或
-(10 * 1)
我需要一種方法來區分一元和二元減號。我的語法現在的方式是首先到達二進制減號,但我正在考慮改變它,並添加一個包含最後一個變量的標誌變量。
例如:如果是5 - 6
的標誌是持有5,如果它認爲減和國旗是一個數字的跳躍一元和去二進制文件。
但我不知道究竟如何在C++
任何幫助將不勝感激實現這一點。
感謝
我創建一個解析樹將包含類似的用語來一元和二元減號
3 - 4 * 8
或
8 * -5
或
-(10 * 1)
我需要一種方法來區分一元和二元減號。我的語法現在的方式是首先到達二進制減號,但我正在考慮改變它,並添加一個包含最後一個變量的標誌變量。
例如:如果是5 - 6
的標誌是持有5,如果它認爲減和國旗是一個數字的跳躍一元和去二進制文件。
但我不知道究竟如何在C++
任何幫助將不勝感激實現這一點。
感謝
實現這樣的分析器,最簡單的方法是通過Recursive Descent的方法。確保在參考點中,得到二進制減去比一元減更高的優先級,如:
E --> | E "+" E
| E "-" E
| "-" E
| E "*" E
| E "/" E
| E "^" E
| "(" E ")"
| v
在看了網站之後,我可能會重新編寫我的語法規則來遵循這些網站的規則,但是有一個問題是,這個語法分析器還必須能夠處理=,< , <=, >,> =和,或者不是 – Dfranc3373
@ Dfranc3373有關C++的完整運算符優先級,請參閱http://en.cppreference.com/w/cpp/language/operator_precedence。 – TemplateRex
非常感謝! – Dfranc3373
你的意思的方式來區分他們爲你做的分析,還是有辦法來區分它們的解析樹?在分析樹中,它是微不足道的 - 只需要單獨的'UNARY_MINUS'和'BINARY_MINUS'運算符。如果你的意思是你解析,當你期待一個操作數,而不是一個操作符時,會發生一元減號。 –
在我的解析器中,我希望區分-5和4 -5。我的下一部分將此樹的樹葉轉換爲AST樹(正在工作),但我的解析器將所有內容視爲二進制減號(4-5)。 – Dfranc3373