Parsec.Expr powtórzył operator Prefix / Postfix nieobsługiwany

Dokumentacja dlaParsec.Expr.buildExpressionParser mówi:

Operatory prefiksu i postfiksu o tym samym priorytecie mogą występować tylko raz (tj. --2 nie jest dozwolone, jeśli - jest prefiksem negate).

i rzeczywiście, to mnie gryzie, ponieważ język, który próbuję przeanalizować, pozwala na dowolne powtórzenie operatorów prefiksu i postfiksu (pomyśl o wyrażeniu C, takim jak**a[1][2]).

Więc dlaczegoParsec wprowadzić to ograniczenie i jak mogę to obejść?

Myślę, że mogę przenieść moje parsery prefiksu / postfixa doterm parser, ponieważ mają najwyższy priorytet.

to znaczy

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

jest analizowany jako

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

ale co mogłem zrobić, gdybym chciał, aby to analizowało jako

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

JeślibuildExpressionParser zrobiłem to, co chciałem, mógłbym po prostu zmienić kolejność operatorów w tabeli.

Uwaga Widziećtutaj dla lepszego rozwiązania

questionAnswers(1)

yourAnswerToTheQuestion