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

时间:2012-02-09 23:33:01

标签: f# fparsec

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

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

您可以随时手动添加各种可能的操作员版本。 e.g。

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

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