Parsec.Expr повторный оператор префикса / постфикса не поддерживается

Документация дляParsec.Expr.buildExpressionParser говорит:

Prefix and postfix operators of the same precedence can only occur once (i.e. --2 is not allowed if - is prefix negate).

и действительно, это кусает меня, так как язык, который я пытаюсь разобрать, позволяет произвольное повторение его префиксных и постфиксных операторов (вспомните выражение C, например**a[1][2]).

Итак, почемуParsec сделать это ограничение, и как я могу обойти это?

Я думаю, что я могу переместить мои префиксные / постфиксные парсеры вниз вterm синтаксический анализатор, так как они имеют самый высокий приоритет.

то есть

<code>**a + 1
</code>

анализируется как

<code>(*(*(a)))+(1)
</code>

но что бы я мог сделать, если бы захотел разобрать как

<code>*(*((a)+(1)))
</code>

еслиbuildExpressionParser сделал то, что я хочу, я мог бы просто изменить порядок операторов в таблице.

Note УвидетьВот для лучшего решения

Ответы на вопрос(1)

Ваш ответ на вопрос