[ 
https://issues.apache.org/jira/browse/METRON-1877?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16689801#comment-16689801
 ] 

ASF GitHub Bot commented on METRON-1877:
----------------------------------------

Github user justinleet commented on a diff in the pull request:

    https://github.com/apache/metron/pull/1268#discussion_r234302996
  
    --- Diff: 
metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/StellarCompiler.java
 ---
    @@ -219,14 +220,23 @@ public Object apply(ExpressionState state) {
                   //short circuit the if/then/else
                   instanceDeque.pop();
                   if((Boolean)curr.getValue()) {
    -                //choose then
    -                skipElse = true;
    +                //choose then.  Need to make sure we're keeping track of 
nesting.
    +                skipElseCount++;
                   } else {
                     //choose else
    +                // Need to count in case we see another if-else, to avoid 
breaking on wrong else.
    +                int innerIfCount = 0;
                     while (it.hasNext()) {
                       Token<?> t = it.next();
    +                  if (t.getUnderlyingType() == IfExpr.class) {
    +                    innerIfCount++;
    +                  }
    --- End diff --
    
    I might have addressed this? If the current change isn't what you wanted, 
let me know.


> Nested IF ELSE statements can cause parse errors in Stellar
> -----------------------------------------------------------
>
>                 Key: METRON-1877
>                 URL: https://issues.apache.org/jira/browse/METRON-1877
>             Project: Metron
>          Issue Type: Improvement
>            Reporter: Justin Leet
>            Assignee: Justin Leet
>            Priority: Major
>
> IF ELSE statements nested inside IF ELSEstatements can cause problems with 
> short-circuiting. See the following example.
> {code:java}
> Stellar>>> IF true THEN IF false THEN true ELSE false ELSE is_alert
> false
> Stellar>>> IF true THEN IF true THEN true ELSE false ELSE is_alert
> ! Invalid parse, found null
> org.apache.metron.stellar.dsl.ParseException: Invalid parse, found null
> at 
> org.apache.metron.stellar.common.StellarCompiler$Expression.apply(StellarCompiler.java:211)
> at 
> org.apache.metron.stellar.common.BaseStellarProcessor.parse(BaseStellarProcessor.java:145)
> at 
> org.apache.metron.stellar.common.shell.DefaultStellarShellExecutor.executeStellar(DefaultStellarShellExecutor.java:401)
> at 
> org.apache.metron.stellar.common.shell.DefaultStellarShellExecutor.execute(DefaultStellarShellExecutor.java:257)
> at 
> org.apache.metron.stellar.common.shell.cli.StellarShell.execute(StellarShell.java:357)
> at org.jboss.aesh.console.AeshProcess.run(AeshProcess.java:53)
> at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
> at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> at java.lang.Thread.run(Thread.java:748){code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to