Что означают скобки в JavaCC? - PullRequest
0 голосов
/ 28 октября 2018

допустим, у меня было:

void ProdRule() : {}
{
    (NonTerminal() OtherNonTerminal())
}

Что означают круглые скобки:

(NonTerminal() OtherNonTerminal())

означает?

1 Ответ

0 голосов
/ 28 октября 2018

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

Например, если у вас есть это:

A() B() | C()

Это означает, что "либо 'A следует B' или C", тогда как это:

A() (B() | C())

Вместо этого будет означать «A, а затем« B или C »».

В скобках также необходимо использовать постфиксные операторы, такие как *, + или ?, и определять, к каким частям грамматики эти операторы применяются. Так, например:

A() (B())*

будет означать «один A, за которым следует ноль или более B», тогда как это:

(A() B())*

будет означать «ноль или более вхождений« A, за которым следует B »».

В вашем примере скобки вообще ничего не делают и могут быть удалены.

...