This is an automated email from the ASF dual-hosted git repository. cdutz pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/plc4x.git
commit b10bb73860f6426330c59ef25e996080c9d9fa1b Author: Christofer Dutz <[email protected]> AuthorDate: Tue Sep 24 09:55:33 2019 +0200 - Made the discriminator values in typeSwitch elements optional (resulting in a "default" case) --- .../plc4x/plugins/codegenerator/language/mspec/MSpec.g4 | 4 +++- .../language/mspec/parser/MessageFormatListener.java | 13 +++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/build-utils/protocol-base-mspec/src/main/antlr4/org/apache/plc4x/plugins/codegenerator/language/mspec/MSpec.g4 b/build-utils/protocol-base-mspec/src/main/antlr4/org/apache/plc4x/plugins/codegenerator/language/mspec/MSpec.g4 index 6b1b1d0..642afd4 100644 --- a/build-utils/protocol-base-mspec/src/main/antlr4/org/apache/plc4x/plugins/codegenerator/language/mspec/MSpec.g4 +++ b/build-utils/protocol-base-mspec/src/main/antlr4/org/apache/plc4x/plugins/codegenerator/language/mspec/MSpec.g4 @@ -117,7 +117,7 @@ typeReference ; caseStatement - : LBRACKET discriminatorValues=multipleExpressions name=IDENTIFIER (LBRACKET params=argumentList RBRACKET)? fieldDefinition* RBRACKET + : LBRACKET (discriminatorValues=multipleExpressions)? name=IDENTIFIER (LBRACKET params=argumentList RBRACKET)? fieldDefinition* RBRACKET ; dataType @@ -152,8 +152,10 @@ innerExpression | innerExpression '.' innerExpression // Field Reference or method call | innerExpression '[' + INTEGER_LITERAL + ']' // Array index | innerExpression BinaryOperator innerExpression // Addition + | innerExpression '?' innerExpression ':' innerExpression | '(' innerExpression ')' | '"' innerExpression '"' + | '!' innerExpression ; COMMENT diff --git a/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/parser/MessageFormatListener.java b/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/parser/MessageFormatListener.java index 0f842e7..d457bc1 100644 --- a/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/parser/MessageFormatListener.java +++ b/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/parser/MessageFormatListener.java @@ -304,10 +304,15 @@ public class MessageFormatListener extends MSpecBaseListener { parserArguments.addAll(Arrays.asList(getParserArguments(ctx.argumentList().argument()))); } - List<MSpecParser.ExpressionContext> expressions = ctx.discriminatorValues.expression(); - String[] discriminatorValues = new String[expressions.size()]; - for (int i = 0; i < expressions.size(); i++) { - discriminatorValues[i] = expressions.get(i).expr.getText(); + String[] discriminatorValues; + if(ctx.discriminatorValues != null) { + List<MSpecParser.ExpressionContext> expressions = ctx.discriminatorValues.expression(); + discriminatorValues = new String[expressions.size()]; + for (int i = 0; i < expressions.size(); i++) { + discriminatorValues[i] = expressions.get(i).expr.getText(); + } + } else { + discriminatorValues = new String[0]; } DefaultDiscriminatedComplexTypeDefinition type = new DefaultDiscriminatedComplexTypeDefinition(typeName, parserArguments.toArray(new Argument[0]), null,
