From f1b6704d8f77dc22e40702839d41648387533df7 Mon Sep 17 00:00:00 2001 From: alkoleft Date: Fri, 11 Nov 2022 23:06:50 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B0=20?= =?UTF-8?q?=D1=80=D0=B0=D0=B7=D0=B1=D0=BE=D1=80=20=D1=83=D1=81=D0=BB=D0=BE?= =?UTF-8?q?=D0=B2=D0=B8=D1=8F=20=D0=BF=D1=80=D0=B5=D0=BF=D1=80=D0=BE=D1=86?= =?UTF-8?q?=D0=B5=D1=81=D1=81=D0=BE=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit с отрицанием вложенного условия --- src/main/antlr/BSLParser.g4 | 3 ++- .../java/com/github/_1c_syntax/bsl/parser/BSLParserTest.java | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/antlr/BSLParser.g4 b/src/main/antlr/BSLParser.g4 index 498b3ecf..30427530 100644 --- a/src/main/antlr/BSLParser.g4 +++ b/src/main/antlr/BSLParser.g4 @@ -49,9 +49,10 @@ preproc_expression | preproc_logicalExpression ; preproc_logicalOperand - : (PREPROC_LPAREN PREPROC_NOT_KEYWORD? preproc_logicalOperand PREPROC_RPAREN) + : (PREPROC_NOT_KEYWORD? PREPROC_LPAREN preproc_logicalOperand PREPROC_RPAREN) | (PREPROC_NOT_KEYWORD? preproc_symbol) | (PREPROC_LPAREN preproc_logicalExpression PREPROC_RPAREN) + | (PREPROC_NOT_KEYWORD? PREPROC_LPAREN preproc_logicalExpression PREPROC_RPAREN) ; preproc_logicalExpression : preproc_logicalOperand (preproc_boolOperation preproc_logicalOperand)* diff --git a/src/test/java/com/github/_1c_syntax/bsl/parser/BSLParserTest.java b/src/test/java/com/github/_1c_syntax/bsl/parser/BSLParserTest.java index 482835f6..7edcbdcc 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/parser/BSLParserTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/parser/BSLParserTest.java @@ -110,6 +110,9 @@ void testPreproc_if() { setInput("Если ТонкийКлиент И ВебКлиент Тогда", BSLLexer.PREPROCESSOR_MODE); assertMatches(parser.preproc_if()); + setInput("IF NOT Server OR NOT(ExternalConnection OR ExternalConnection) THEN", BSLLexer.PREPROCESSOR_MODE); + assertMatches(parser.preproc_if()); + setInput("Если MacOS ИЛИ Linux Тогда", BSLLexer.PREPROCESSOR_MODE); assertMatches(parser.preproc_if());