From 9a780127c0650bc569f80cede3b68fe7d152c49a Mon Sep 17 00:00:00 2001 From: luca9913 Date: Fri, 24 Mar 2023 04:44:52 +0100 Subject: [PATCH] Grammatik um recordPattern erweitert --- .../parser/antlr/Java17Parser.g4 | 32 ++++++++++++++++--- src/test/java/parser/GeneralParserTest.java | 4 +-- 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/src/main/antlr4/de/dhbwstuttgart/parser/antlr/Java17Parser.g4 b/src/main/antlr4/de/dhbwstuttgart/parser/antlr/Java17Parser.g4 index 678c905c..00b35fbb 100644 --- a/src/main/antlr4/de/dhbwstuttgart/parser/antlr/Java17Parser.g4 +++ b/src/main/antlr4/de/dhbwstuttgart/parser/antlr/Java17Parser.g4 @@ -575,7 +575,7 @@ switchBlockStatementGroup ; switchLabel - : CASE (constantExpression=expression | enumConstantName=IDENTIFIER | typeType varName=identifier) ':' + : CASE (constantExpression=expression | enumConstantName=IDENTIFIER | pattern) ':' | DEFAULT ':' ; @@ -652,7 +652,30 @@ expression // Java17 pattern - : variableModifier* typeType? annotation* identifier + : primaryPattern + | guardedPattern + ; + +primaryPattern + : typePattern + | recordPattern + | '(' pattern ')' + ; + +recordPattern + : typeType recordStructurePattern identifier? + ; + +typePattern + : variableModifier* typeType? identifier + ; + +recordStructurePattern + : '(' recordComponentPatternList? ')' + ; + +recordComponentPatternList + : pattern (',' pattern)* ; // Java8 @@ -691,14 +714,13 @@ switchExpression // Java17 switchLabeledRule - : CASE (expressionList | NULL_LITERAL | guardedPattern) (ARROW | COLON) switchRuleOutcome + : CASE (expressionList | NULL_LITERAL | pattern) (ARROW | COLON) switchRuleOutcome | DEFAULT (ARROW | COLON) switchRuleOutcome ; // Java17 guardedPattern - : '(' guardedPattern ')' - | variableModifier* typeType annotation* identifier ('&&' expression)* + : variableModifier* typeType? annotation* identifier ('&&' expression)* | guardedPattern '&&' expression ; diff --git a/src/test/java/parser/GeneralParserTest.java b/src/test/java/parser/GeneralParserTest.java index 316c515e..9f9a32ca 100644 --- a/src/test/java/parser/GeneralParserTest.java +++ b/src/test/java/parser/GeneralParserTest.java @@ -13,8 +13,7 @@ import de.dhbwstuttgart.parser.JavaTXParser; import org.junit.Test; /** - * Dieser Test pr�ft nur, ob .java-Dateien fehlerfrei geparst werden. Der - * dabei erstellte Syntaxbaum wird nicht kontrolliert. + * Dieser Test pr�ft nur, ob .java-Dateien fehlerfrei geparst werden. Der dabei erstellte Syntaxbaum wird nicht kontrolliert. * * @author janulrich * @@ -26,6 +25,7 @@ public class GeneralParserTest { public void run() { List filenames = new ArrayList(); + filenames.add("NewTest.jav"); filenames.add("FieldInitializationTest.jav"); filenames.add("ImportTest.jav");