Github user ottobackwards commented on a diff in the pull request: https://github.com/apache/metron/pull/814#discussion_r147784210 --- Diff: metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/StellarCompiler.java --- @@ -105,59 +107,77 @@ public Object apply(ExpressionState state) { Deque<Token<?>> instanceDeque = new ArrayDeque<>(); { boolean skipElse = false; + boolean skipMatchClauses = false; Token<?> token = null; for (Iterator<Token<?>> it = getTokenDeque().descendingIterator(); it.hasNext(); ) { token = it.next(); //if we've skipped an else previously, then we need to skip the deferred tokens associated with the else. - if(skipElse && token.getUnderlyingType() == ElseExpr.class) { - while(it.hasNext()) { + if (skipElse && token.getUnderlyingType() == ElseExpr.class) { + while (it.hasNext()) { token = it.next(); - if(token.getUnderlyingType() == EndConditional.class) { + if (token.getUnderlyingType() == EndConditional.class) { break; } } skipElse = false; } + if (skipMatchClauses && (token.getUnderlyingType() == MatchClauseEnd.class + || token.getUnderlyingType() == MatchClauseCheckExpr.class)) { + while (it.hasNext()) { --- End diff -- This is another issue with validate
---