2012-02-09 39 views

回答

3

OperatorPrecedenceParser沒有對非符號運算符的大小寫不敏感匹配的內置支持。然而,如果你的非符號運算符很短或者你只需​​要支持一些拼寫變體(例如全部小寫,全部大寫,只有第一個字符大寫,...),那麼你可以簡單地添加所有的變體您需要支持的運營商。 (當然,你會添加一些輔助功能的變體,而不是手動添加。)

+0

+1我想一個輔助函數是要走的路。謝謝。 – Daniel 2012-02-10 01:42:56

+0

這與問題無關,但感謝一個殺手級的圖書館。 – Daniel 2012-02-10 03:01:41

2

看起來像PeekOp是處理確定是否存在操作符的方法。沒有提及或方法來處理不區分大小寫,因爲它依賴於字符的直接相等(和CharStream.Match)。

您可以隨時手動添加操作員的各種可能版本。例如

Add("or"); 
Add("oR"); 
Add("Or"); 
Add("OR"); 

最後,另一個選擇是創建一個輔助方法來做到這一點。

+0

哦,我看不到你的刪除(以及後來未刪除的)回覆。否則,我會等待或評論你的回覆,而不是發佈自己的回覆。 – 2012-02-10 00:36:05

+0

這是離我很遠的馬車,我不想讓任何人讀它。我以爲我正在閱讀'Invoke',但我正在閱讀'Add'。 'Reserved'僅用於保持操作符獨特><。 – Guvante 2012-02-10 00:39:58

+0

輔助函數應該這樣做。 – Daniel 2012-02-10 01:42:19