使用OperatorPrecedenceParser解析不区分大小写的运算符

3

是否可以使用OperatorPrecedenceParser不区分大小写地解析非符号运算符(例如ANDOR)?

2个回答

3

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

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


2

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

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

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

最后另一个选项是创建一个辅助方法来完成这个任务。

哦,我没看到你删除(后来又恢复)的回复。否则我会等待或评论你的回复,而不是发表我的回复。 - Stephan Tolksdorf
它跑偏了,我不想让任何人看到它。我以为我在读“Invoke”,但实际上我读的是“Add”。Reserved只是用来保持运算符的唯一性的。>< - Guvante
辅助函数应该做什么。 - Daniel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接