Разбор регистронезависимых операторов с помощью OperatorPrecedenceParser - PullRequest
3 голосов
/ 10 февраля 2012

Можно ли проанализировать несимвольный оператор (например, AND, OR) без учета регистра, используя OperatorPrecedenceParser?

Ответы [ 2 ]

3 голосов
/ 10 февраля 2012

OperatorPrecedenceParser не имеет встроенной поддержки для нечувствительного к регистру соответствия несимвольных операторов.

Однако, если ваши несимвольные операторы короткие или вам нужно только поддерживать несколько вариантов написания (например, всев нижнем регистре, все в верхнем регистре, только первый символ в верхнем регистре, ...) тогда вы можете просто добавить все варианты оператора, которые вам нужно поддерживать.(Конечно, вы бы добавили варианты с небольшой вспомогательной функцией, а не вручную.)

2 голосов
/ 10 февраля 2012

Похоже, PeekOp - это метод, который определяет, есть оператор или нет.В нем нет упоминания или метода обработки нечувствительности к регистру, поскольку он основан на прямом равенстве символов (и CharStream.Match).

Вы всегда можете добавить различные возможные версии оператора вручную.Например,

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

Наконец, другой вариант - создать вспомогательный метод для этого.

...