3

是否可以使用不区分大小写的方式解析非符号运算符(例如 , AND)?OROperatorPrecedenceParser

4

2 回答 2

3

OperatorPrecedenceParser 没有对非符号运算符的不区分大小写匹配的内置支持。

但是,如果您的非符号运算符很短,或者您只需要支持几个拼写变体(例如全部小写、全部大写、只有第一个字符大写,...),那么您可以简单地添加您需要的运算符的所有变体支持。(当然,您可以使用一些辅助函数添加变体,而不是手动添加。)

于 2012-02-10T00:23:10.753 回答
2

看起来PeekOp是处理确定是否存在运算符的方法。它没有提及或处理不区分大小写的方法,因为它依赖于字符(和CharStream.Match)的直接相等。

您始终可以手动添加各种可能的运算符版本。例如

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

最后另一种选择是创建一个辅助方法来执行此操作。

于 2012-02-09T23:58:34.220 回答