Repository: systemml
Updated Branches:
  refs/heads/master cf556f207 -> 1f63b09cd


[MINOR] Cleanup unnecessary indirections in dml/pydml parsers

Project: http://git-wip-us.apache.org/repos/asf/systemml/repo
Commit: http://git-wip-us.apache.org/repos/asf/systemml/commit/727e69e2
Tree: http://git-wip-us.apache.org/repos/asf/systemml/tree/727e69e2
Diff: http://git-wip-us.apache.org/repos/asf/systemml/diff/727e69e2

Branch: refs/heads/master
Commit: 727e69e2893fc376d721915dff4831261a6d90f8
Parents: cf556f2
Author: Matthias Boehm <[email protected]>
Authored: Mon Mar 5 13:12:59 2018 -0800
Committer: Matthias Boehm <[email protected]>
Committed: Mon Mar 5 15:12:45 2018 -0800

----------------------------------------------------------------------
 .../parser/common/CommonSyntacticValidator.java | 56 ++++++--------------
 .../sysml/parser/dml/DmlSyntacticValidator.java | 20 +++----
 .../parser/pydml/PydmlSyntacticValidator.java   | 21 +++-----
 3 files changed, 31 insertions(+), 66 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/systemml/blob/727e69e2/src/main/java/org/apache/sysml/parser/common/CommonSyntacticValidator.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/parser/common/CommonSyntacticValidator.java 
b/src/main/java/org/apache/sysml/parser/common/CommonSyntacticValidator.java
index 67fbaf0..cc67ebe 100644
--- a/src/main/java/org/apache/sysml/parser/common/CommonSyntacticValidator.java
+++ b/src/main/java/org/apache/sysml/parser/common/CommonSyntacticValidator.java
@@ -573,63 +573,51 @@ public abstract class CommonSyntacticValidator {
         */
        protected abstract Expression 
handleLanguageSpecificFunction(ParserRuleContext ctx, String functionName, 
ArrayList<ParameterExpression> paramExpressions);
 
-       /** Checks for builtin functions and does Action 'f'.
-        * <p>
-        * Constructs the
-        * appropriate {@link AssignmentStatement} from
-        * {@link 
CommonSyntacticValidator#functionCallAssignmentStatementHelper(ParserRuleContext,
 Set, Set, Expression, StatementInfo, Token, Token, String, String, ArrayList, 
boolean)}
-        * or Assign to {@link Expression} from
-        * DmlSyntacticValidator's 
exitBuiltinFunctionExpression(BuiltinFunctionExpressionContext).
-        * </p>
+       /** Creates a builtin function expression.
         * 
         * @param ctx antlr rule context
         * @param functionName Name of the builtin function
         * @param paramExpressions Array of parameter names and values
-        * @param f action to perform
-        * @return true if a builtin function was found
+        * @return expression if found otherwise null
         */
-       protected boolean buildForBuiltInFunction(ParserRuleContext ctx, String 
functionName, ArrayList<ParameterExpression> paramExpressions, Action f) {
+       protected Expression buildForBuiltInFunction(ParserRuleContext ctx, 
String functionName, ArrayList<ParameterExpression> paramExpressions) {
                // In global namespace, so it can be a builtin function
                // Double verification: verify passed function name is a 
(non-parameterized) built-in function.
                try {
                        if (functions.contains(functionName)) {
                                // It is a user function definition (which 
takes precedence if name same as built-in)
-                               return false;
+                               return null;
                        }
                        
                        Expression lsf = handleLanguageSpecificFunction(ctx, 
functionName, paramExpressions);
-                       if (lsf != null){
+                       if (lsf != null) {
                                setFileLineColumn(lsf, ctx);
-                               f.execute(lsf);
-                               return true;
+                               return lsf;
                        }
 
                        BuiltinFunctionExpression bife = 
BuiltinFunctionExpression.getBuiltinFunctionExpression(ctx, functionName, 
paramExpressions, currentFile);
-                       if (bife != null){
+                       if (bife != null) {
                                // It is a builtin function
-                               f.execute(bife);
-                               return true;
+                               return bife;
                        }
 
                        ParameterizedBuiltinFunctionExpression pbife = 
ParameterizedBuiltinFunctionExpression
                                        .getParamBuiltinFunctionExpression(ctx, 
functionName, paramExpressions, currentFile);
                        if (pbife != null){
                                // It is a parameterized builtin function
-                               f.execute(pbife);
-                               return true;
+                               return pbife;
                        }
 
                        // built-in read, rand ...
                        DataExpression dbife = 
DataExpression.getDataExpression(ctx, functionName, paramExpressions, 
currentFile, errorListener);
                        if (dbife != null){
-                               f.execute(dbife);
-                               return true;
+                               return dbife;
                        }
-               } catch(Exception e) {
+               } 
+               catch(Exception e) {
                        notifyErrorListeners("unable to process builtin 
function expression " + functionName  + ":" + e.getMessage(), ctx.start);
-                       return true;
                }
-               return false;
+               return null;
        }
 
 
@@ -670,13 +658,11 @@ public abstract class CommonSyntacticValidator {
 
                // For builtin functions with LHS
                if(namespace.equals(DMLProgram.DEFAULT_NAMESPACE) && 
!functions.contains(functionName)){
-                       final DataIdentifier ftarget = target;
-                       Action f = new Action() {
-                               @Override public void execute(Expression e) { 
setAssignmentStatement(ctx, info , ftarget, e); }
-                       };
-                       boolean validBIF = buildForBuiltInFunction(ctx, 
functionName, paramExpression, f);
-                       if (validBIF)
+                       Expression e = buildForBuiltInFunction(ctx, 
functionName, paramExpression);
+                       if( e != null ) {
+                               setAssignmentStatement(ctx, info, target, e);
                                return;
+                       }
                }
 
                // handle user-defined functions
@@ -695,14 +681,6 @@ public abstract class CommonSyntacticValidator {
                return functCall;
        }
 
-       /**
-        * To allow for different actions in
-        * {@link 
CommonSyntacticValidator#functionCallAssignmentStatementHelper(ParserRuleContext,
 Set, Set, Expression, StatementInfo, Token, Token, String, String, ArrayList, 
boolean)}
-        */
-       public static interface Action {
-               public void execute(Expression e);
-       }
-
        protected void setMultiAssignmentStatement(ArrayList<DataIdentifier> 
target, Expression expression, ParserRuleContext ctx, StatementInfo info) {
                info.stmt = new MultiAssignmentStatement(target, expression);
                info.stmt.setCtxValuesAndFilename(ctx, currentFile);

http://git-wip-us.apache.org/repos/asf/systemml/blob/727e69e2/src/main/java/org/apache/sysml/parser/dml/DmlSyntacticValidator.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/parser/dml/DmlSyntacticValidator.java 
b/src/main/java/org/apache/sysml/parser/dml/DmlSyntacticValidator.java
index 4a1d6c3..a5169fb 100644
--- a/src/main/java/org/apache/sysml/parser/dml/DmlSyntacticValidator.java
+++ b/src/main/java/org/apache/sysml/parser/dml/DmlSyntacticValidator.java
@@ -530,18 +530,14 @@ public class DmlSyntacticValidator extends 
CommonSyntacticValidator implements D
                        functionName = convertedSyntax.functionName;
                        paramExpression = convertedSyntax.paramExpression;
                }
-               final ExpressionInfo info = ctx.info;
-               Action f = new Action() {
-                       @Override public void execute(Expression e) { info.expr 
= e; }
-               };
                
                // handle built-in functions
-               boolean validBIF = buildForBuiltInFunction(ctx, functionName, 
paramExpression, f);
-               if (validBIF)
+               ctx.info.expr = buildForBuiltInFunction(ctx, functionName, 
paramExpression);
+               if( ctx.info.expr != null )
                        return;
                
                // handle user-defined functions
-               info.expr = createFunctionCall(ctx, namespace, functionName, 
paramExpression);
+               ctx.info.expr = createFunctionCall(ctx, namespace, 
functionName, paramExpression);
        }
 
 
@@ -583,13 +579,11 @@ public class DmlSyntacticValidator extends 
CommonSyntacticValidator implements D
                }
 
                if(namespace.equals(DMLProgram.DEFAULT_NAMESPACE)) {
-                       final FunctionCallMultiAssignmentStatementContext fctx 
= ctx;
-                       Action f = new Action() {
-                               @Override public void execute(Expression e) { 
setMultiAssignmentStatement(targetList, e, fctx, fctx.info); }
-                       };
-                       boolean validBIF = buildForBuiltInFunction(ctx, 
functionName, paramExpression, f);
-                       if (validBIF)
+                       Expression e = buildForBuiltInFunction(ctx, 
functionName, paramExpression);
+                       if( e != null ) {
+                               setMultiAssignmentStatement(targetList, e, ctx, 
ctx.info);
                                return;
+                       }
                }
 
                // Override default namespace for imported non-built-in function

http://git-wip-us.apache.org/repos/asf/systemml/blob/727e69e2/src/main/java/org/apache/sysml/parser/pydml/PydmlSyntacticValidator.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/parser/pydml/PydmlSyntacticValidator.java 
b/src/main/java/org/apache/sysml/parser/pydml/PydmlSyntacticValidator.java
index 858eca6..5060ebd 100644
--- a/src/main/java/org/apache/sysml/parser/pydml/PydmlSyntacticValidator.java
+++ b/src/main/java/org/apache/sysml/parser/pydml/PydmlSyntacticValidator.java
@@ -1144,19 +1144,14 @@ public class PydmlSyntacticValidator extends 
CommonSyntacticValidator implements
                        functionName = convertedSyntax.functionName;
                        paramExpression = convertedSyntax.paramExpression;
                }
-
-               final ExpressionInfo info = ctx.info;
-               Action f = new Action() {
-                       @Override public void execute(Expression e) { info.expr 
= e; }
-               };
                
                //handle builtin functions
-               boolean validBIF = buildForBuiltInFunction(ctx, functionName, 
paramExpression, f);
-               if (validBIF)
+               ctx.info.expr= buildForBuiltInFunction(ctx, functionName, 
paramExpression);
+               if( ctx.info.expr != null )
                        return;
 
                // handle user-defined functions
-               info.expr = createFunctionCall(ctx, namespace, functionName, 
paramExpression);
+               ctx.info.expr = createFunctionCall(ctx, namespace, 
functionName, paramExpression);
        }
 
        @Override
@@ -1199,13 +1194,11 @@ public class PydmlSyntacticValidator extends 
CommonSyntacticValidator implements
                }
 
                if(namespace.equals(DMLProgram.DEFAULT_NAMESPACE)) {
-                       final FunctionCallMultiAssignmentStatementContext fctx 
= ctx;
-                       Action f = new Action() {
-                               @Override public void execute(Expression e) { 
setMultiAssignmentStatement(targetList, e, fctx, fctx.info); }
-                       };
-                       boolean validBIF = buildForBuiltInFunction(ctx, 
functionName, paramExpression, f);
-                       if (validBIF)
+                       Expression e = buildForBuiltInFunction(ctx, 
functionName, paramExpression);
+                       if( e != null ) {
+                               setMultiAssignmentStatement(targetList, e, ctx, 
ctx.info);
                                return;
+                       }
                }
 
                // Override default namespace for imported non-built-in function

Reply via email to