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,

Reply via email to