Что именно делает функция nextNot в библиотеке SonarQube? - PullRequest
0 голосов
/ 05 июля 2019

Здесь вы можете увидеть определение функции:

* Creates parsing expression - "next not".
* During execution of this expression parser will execute sub-expression once.
* This expression succeeds only if sub-expression fails.
*
* @param e  sub-expression
* @throws IllegalArgumentException if given argument is not a parsing expression
*/
public final Object nextNot(Object e) {
return new NextNotExpression(convertToExpression(e));
}

Если я правильно понимаю, если объект e виден, он не сможет.

Однако я смотрю на грамматику SonarQube для Python и PRINT_EXP выглядит так:

b.rule(PRINT_STMT).is("print", b.nextNot("("), b.firstOf( 
  b.sequence(">>", TEST, b.optional(b.oneOrMore(",", TEST), b.optional(","))), 
  b.optional(TEST, b.zeroOrMore(",", TEST), b.optional(","))));

Означает ли это, что если скобка видна, она будет считаться ошибкой? Потому что в Python 3.x печать - это функция.

1 Ответ

0 голосов
/ 08 июля 2019

nextNot является разновидностью отрицательного соответствия.В выделенном вами примере PRINT_STMT не совпадает, когда за print следует (.

Вызовы функции print в Python 3 должны соответствовать EXPRESSION_STMT.

Примечание: nextNot является частью библиотеки SSLR , которая не зависит от SonarQube.

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