Приоритет оператора является естественным результатом написания правил.Например, в этой грамматике SimpleExpression
состоит из сложения, вычитания и логического или * из 1002 *, а term
состоит из умножения, деления, модуля и логического и из factor
.
Итак, если у вас есть это:
1 + 2 * 3
Вы получите обратно (грубо говоря, для ясности):
List(1, (2 ~ List(* ~ 3)))
И если у вас есть это:
1 * 2 + 3
Вы получите это обратно (грубо говоря):
List((1 ~ List(* ~ 2)), 3)
Вы потеряете операторы сложения из-за rep1sep
- разделители отбрасываются.