Бэкус Наур Форма Ассоциативности

Это правильный способ реализовать правильную ассоциативность для Exponentiation PowExp? Так что 2 ^ 3 ^ 4 на самом деле (2 ^ (3 ^ 4))

<Exp> ::= <Exp> + <MulExp>
| <Exp> - <MulExp>
| <MulExp>
<MulExp> ::= <MulExp> * <PowExp>
| <MulExp> / <PowExp>
| <PowExp>
<PowExp> ::= <NegExp> ^ <PowExp>
|<NegExp>
<NegExp> ::= - <RootExp>
| <RootExp>
<RootExp> ::= ( <Exp> )
| 1 | 2 | 3 | 4

person TemporaryFix    schedule 11.02.2015    source источник


Ответы (1)


Вы написали правильно.

Кстати, вы можете пересмотреть свою иерархию; в обычной математике 3 4 равно (3 4), а не (3) 4. Таким образом, вы можете захотеть, чтобы - 3 ^ 4 означало - (3 ^ 4), и в этом случае NegExp будет включать PowExp, а не наоборот. (Но я полагаю, это может сбить с толку, если -3 ^ 4 означает -(3 ^ 4), так что, может быть, здесь нет интуитивного порядка операций? Другая возможность - потребовать скобки для чтения либо, если PowExp и NegExp оба зависят напрямую на RootExp.)

person ruakh    schedule 11.02.2015
comment
Спасибо, что посмотрели мои работы! Всегда хорошо, когда на это смотрит второй человек :) - person TemporaryFix; 11.02.2015