Repository: incubator-systemml
Updated Branches:
  refs/heads/master ac04b5708 -> 14fd9da1b


[MINOR] Cleanup parser data structures (unused kind/default fields)

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

Branch: refs/heads/master
Commit: 214b17725e2394187ed873aa25a544247f8cfb8a
Parents: ac04b57
Author: Matthias Boehm <mboe...@gmail.com>
Authored: Fri May 26 21:57:54 2017 -0700
Committer: Matthias Boehm <mboe...@gmail.com>
Committed: Fri May 26 21:57:54 2017 -0700

----------------------------------------------------------------------
 .../apache/sysml/parser/BinaryExpression.java   |  6 --
 .../apache/sysml/parser/BooleanExpression.java  |  2 -
 .../apache/sysml/parser/BooleanIdentifier.java  | 11 +--
 .../sysml/parser/BuiltinFunctionExpression.java |  5 +-
 .../org/apache/sysml/parser/DMLTranslator.java  | 80 +++++++++-----------
 .../org/apache/sysml/parser/DataExpression.java | 56 ++++++--------
 .../org/apache/sysml/parser/DataIdentifier.java | 29 +------
 .../apache/sysml/parser/DoubleIdentifier.java   | 18 ++---
 .../org/apache/sysml/parser/Expression.java     | 24 ++----
 .../sysml/parser/ExternalFunctionStatement.java |  1 -
 .../sysml/parser/FunctionCallIdentifier.java    |  9 +--
 .../apache/sysml/parser/FunctionStatement.java  |  1 -
 .../org/apache/sysml/parser/Identifier.java     |  1 -
 .../apache/sysml/parser/IndexedIdentifier.java  |  4 +-
 .../org/apache/sysml/parser/IntIdentifier.java  | 18 ++---
 .../ParameterizedBuiltinFunctionExpression.java | 10 +--
 .../sysml/parser/RelationalExpression.java      |  3 -
 .../org/apache/sysml/parser/StatementBlock.java | 26 ++-----
 .../apache/sysml/parser/StringIdentifier.java   | 10 +--
 .../cp/FunctionCallCPInstruction.java           | 51 ++++++-------
 20 files changed, 128 insertions(+), 237 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/214b1772/src/main/java/org/apache/sysml/parser/BinaryExpression.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/BinaryExpression.java 
b/src/main/java/org/apache/sysml/parser/BinaryExpression.java
index baebcd0..121e488 100644
--- a/src/main/java/org/apache/sysml/parser/BinaryExpression.java
+++ b/src/main/java/org/apache/sysml/parser/BinaryExpression.java
@@ -24,15 +24,11 @@ import java.util.HashMap;
 
 public class BinaryExpression extends Expression 
 {
-       
        private Expression _left;
        private Expression _right;
        private BinaryOp _opcode;
-
        
        public Expression rewriteExpression(String prefix) throws 
LanguageException{
-               
-               
                BinaryExpression newExpr = new BinaryExpression(this._opcode,
                                this.getFilename(), this.getBeginLine(), 
this.getBeginColumn(), this.getEndLine(), this.getEndColumn());
                newExpr.setLeft(_left.rewriteExpression(prefix));
@@ -41,7 +37,6 @@ public class BinaryExpression extends Expression
        }
        
        public BinaryExpression(BinaryOp bop) {
-               _kind = Kind.BinaryOp;
                _opcode = bop;
                
                setFilename("MAIN SCRIPT");
@@ -52,7 +47,6 @@ public class BinaryExpression extends Expression
        }
        
        public BinaryExpression(BinaryOp bop, String filename, int beginLine, 
int beginColumn, int endLine, int endColumn) {
-               _kind = Kind.BinaryOp;
                _opcode = bop;
                
                setFilename(filename);

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/214b1772/src/main/java/org/apache/sysml/parser/BooleanExpression.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/BooleanExpression.java 
b/src/main/java/org/apache/sysml/parser/BooleanExpression.java
index 8dd84e5..2996da5 100644
--- a/src/main/java/org/apache/sysml/parser/BooleanExpression.java
+++ b/src/main/java/org/apache/sysml/parser/BooleanExpression.java
@@ -30,7 +30,6 @@ public class BooleanExpression extends Expression
        private BooleanOp _opcode;
        
        public BooleanExpression(BooleanOp bop){
-               _kind = Kind.BooleanOp;
                _opcode = bop;
                
                setFilename("MAIN SCRIPT");
@@ -41,7 +40,6 @@ public class BooleanExpression extends Expression
        }
        
        public BooleanExpression(BooleanOp bop, String filename, int beginLine, 
int beginColumn, int endLine, int endColumn){
-               _kind = Kind.BooleanOp;
                _opcode = bop;
                
                setFilename(filename);

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/214b1772/src/main/java/org/apache/sysml/parser/BooleanIdentifier.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/BooleanIdentifier.java 
b/src/main/java/org/apache/sysml/parser/BooleanIdentifier.java
index 2bb441e..501926c 100644
--- a/src/main/java/org/apache/sysml/parser/BooleanIdentifier.java
+++ b/src/main/java/org/apache/sysml/parser/BooleanIdentifier.java
@@ -23,18 +23,15 @@ package org.apache.sysml.parser;
 
 public class BooleanIdentifier extends ConstIdentifier 
 {
-       
        private boolean _val;
        
-       
        public BooleanIdentifier(boolean val, String filename, int blp, int 
bcp, int elp, int ecp){
                super();
                 _val = val;
-               _kind = Kind.Data;
-               this.setDimensions(0,0);
-        this.computeDataType();
-        this.setValueType(ValueType.BOOLEAN);
-        this.setAllPositions(filename, blp, bcp, elp, ecp);
+               setDimensions(0,0);
+        computeDataType();
+        setValueType(ValueType.BOOLEAN);
+        setAllPositions(filename, blp, bcp, elp, ecp);
        }
        
        public Expression rewriteExpression(String prefix) throws 
LanguageException{

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/214b1772/src/main/java/org/apache/sysml/parser/BuiltinFunctionExpression.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/parser/BuiltinFunctionExpression.java 
b/src/main/java/org/apache/sysml/parser/BuiltinFunctionExpression.java
index 5efa3e9..e3b3e79 100644
--- a/src/main/java/org/apache/sysml/parser/BuiltinFunctionExpression.java
+++ b/src/main/java/org/apache/sysml/parser/BuiltinFunctionExpression.java
@@ -28,14 +28,12 @@ import org.apache.sysml.runtime.util.ConvolutionUtils;
 
 public class BuiltinFunctionExpression extends DataIdentifier 
 {
-       
        protected Expression[]    _args = null;
        private BuiltinFunctionOp _opcode;
 
        public BuiltinFunctionExpression(BuiltinFunctionOp bifop, 
ArrayList<ParameterExpression> args, String fname, int blp, int bcp, int elp, 
int ecp) {
-               _kind = Kind.BuiltinFunctionOp;
                _opcode = bifop;
-               this.setAllPositions(fname, blp, bcp, elp, ecp);
+               setAllPositions(fname, blp, bcp, elp, ecp);
                args = expandConvolutionArguments(args);
                _args = new Expression[args.size()];
                for(int i=0; i < args.size(); i++) {
@@ -44,7 +42,6 @@ public class BuiltinFunctionExpression extends DataIdentifier
        }
 
        public BuiltinFunctionExpression(BuiltinFunctionOp bifop, Expression[] 
args, String fname, int blp, int bcp, int elp, int ecp) {
-               _kind = Kind.BuiltinFunctionOp;
                _opcode = bifop;
                _args = new Expression[args.length];
                for(int i=0; i < args.length; i++) {

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/214b1772/src/main/java/org/apache/sysml/parser/DMLTranslator.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/DMLTranslator.java 
b/src/main/java/org/apache/sysml/parser/DMLTranslator.java
index 0ff6c60..a40c736 100644
--- a/src/main/java/org/apache/sysml/parser/DMLTranslator.java
+++ b/src/main/java/org/apache/sysml/parser/DMLTranslator.java
@@ -1403,72 +1403,64 @@ public class DMLTranslator
         * @throws ParseException if ParseException occurs
         */
        private Hop processExpression(Expression source, DataIdentifier target, 
HashMap<String, Hop> hops) throws ParseException {
-               if (source.getKind() == Expression.Kind.BinaryOp) {
-                       return processBinaryExpression((BinaryExpression) 
source, target, hops);
-               } else if (source.getKind() == Expression.Kind.RelationalOp) {
-                       return 
processRelationalExpression((RelationalExpression) source, target, hops);
-               } else if (source.getKind() == Expression.Kind.BooleanOp) {
-                       return processBooleanExpression((BooleanExpression) 
source, target, hops);
-               } else if (source.getKind() == Expression.Kind.Data) {
-                       if (source instanceof IndexedIdentifier){
-                               IndexedIdentifier sourceIndexed = 
(IndexedIdentifier) source;
-                               return 
processIndexingExpression(sourceIndexed,target,hops);
-                       } else if (source instanceof IntIdentifier) {
+               try {   
+                       if( source instanceof BinaryExpression )
+                               return 
processBinaryExpression((BinaryExpression) source, target, hops);
+                       else if( source instanceof RelationalExpression )
+                               return 
processRelationalExpression((RelationalExpression) source, target, hops);
+                       else if( source instanceof BooleanExpression )
+                               return 
processBooleanExpression((BooleanExpression) source, target, hops);
+                       else if( source instanceof BuiltinFunctionExpression )
+                               return 
processBuiltinFunctionExpression((BuiltinFunctionExpression) source, target, 
hops);
+                       else if( source instanceof 
ParameterizedBuiltinFunctionExpression )
+                               return 
processParameterizedBuiltinFunctionExpression((ParameterizedBuiltinFunctionExpression)source,
 target, hops);
+                       else if( source instanceof DataExpression ) {
+                               Hop ae = 
(Hop)processDataExpression((DataExpression)source, target, hops);
+                               if (ae instanceof DataOp){
+                                       String formatName = 
((DataExpression)source).getVarParam(DataExpression.FORMAT_TYPE).toString();
+                                       
((DataOp)ae).setInputFormatType(Expression.convertFormatType(formatName));
+                               }
+                               return ae;
+                       }
+                       else if (source instanceof IndexedIdentifier)
+                               return 
processIndexingExpression((IndexedIdentifier) source,target,hops);
+                       else if (source instanceof IntIdentifier) {
                                IntIdentifier sourceInt = (IntIdentifier) 
source;
                                LiteralOp litop = new 
LiteralOp(sourceInt.getValue());
                                litop.setAllPositions(sourceInt.getBeginLine(), 
sourceInt.getBeginColumn(), sourceInt.getEndLine(), sourceInt.getEndColumn());
                                setIdentifierParams(litop, sourceInt);
                                return litop;
-                       } else if (source instanceof DoubleIdentifier) {
+                       } 
+                       else if (source instanceof DoubleIdentifier) {
                                DoubleIdentifier sourceDouble = 
(DoubleIdentifier) source;
                                LiteralOp litop = new 
LiteralOp(sourceDouble.getValue());
                                
litop.setAllPositions(sourceDouble.getBeginLine(), 
sourceDouble.getBeginColumn(), sourceDouble.getEndLine(), 
sourceDouble.getEndColumn());
                                setIdentifierParams(litop, sourceDouble);
                                return litop;
-                       } else if (source instanceof DataIdentifier) {
-                               DataIdentifier sourceId = (DataIdentifier) 
source;
-                               return hops.get(sourceId.getName());
-                       } else if (source instanceof BooleanIdentifier) {
+                       }
+                       else if (source instanceof BooleanIdentifier) {
                                BooleanIdentifier sourceBoolean = 
(BooleanIdentifier) source;
                                LiteralOp litop = new 
LiteralOp(sourceBoolean.getValue());
                                
litop.setAllPositions(sourceBoolean.getBeginLine(), 
sourceBoolean.getBeginColumn(), sourceBoolean.getEndLine(), 
sourceBoolean.getEndColumn());
                                setIdentifierParams(litop, sourceBoolean);
                                return litop;
-                       } else if (source instanceof StringIdentifier) {
+                       } 
+                       else if (source instanceof StringIdentifier) {
                                StringIdentifier sourceString = 
(StringIdentifier) source;
                                LiteralOp litop = new 
LiteralOp(sourceString.getValue());
                                
litop.setAllPositions(sourceString.getBeginLine(), 
sourceString.getBeginColumn(), sourceString.getEndLine(), 
sourceString.getEndColumn());
                                setIdentifierParams(litop, sourceString);
                                return litop;
-                       }
-               } else if (source.getKind() == 
Expression.Kind.BuiltinFunctionOp) {
-                       try {
-                               return 
processBuiltinFunctionExpression((BuiltinFunctionExpression) source, target, 
hops);
-                       } catch (HopsException e) {
-                               throw new ParseException(e.getMessage());
-                       }
-               } else if (source.getKind() == 
Expression.Kind.ParameterizedBuiltinFunctionOp ) {
-                       try {
-                               return 
processParameterizedBuiltinFunctionExpression((ParameterizedBuiltinFunctionExpression)source,
 target, hops);
-                       } catch ( HopsException e ) {
-                               throw new ParseException(e.getMessage());
-                       }
-               } else if (source.getKind() == Expression.Kind.DataOp ) {
-                       try {   
-                               Hop ae = 
(Hop)processDataExpression((DataExpression)source, target, hops);
-                               
-                               if (ae instanceof DataOp){
-                                       String formatName = 
((DataExpression)source).getVarParam(DataExpression.FORMAT_TYPE).toString();
-                                       
((DataOp)ae).setInputFormatType(Expression.convertFormatType(formatName));
-                               }
-                               //hops.put(target.getName(), ae);
-                               return ae;
-                       } catch ( Exception e ) {
-                               throw new ParseException(e.getMessage());
-                       }
+                       } 
+                       else if (source instanceof DataIdentifier)
+                               return hops.get(((DataIdentifier) 
source).getName());
+               } 
+               catch ( Exception e ) {
+                       throw new ParseException(e.getMessage());
                }
+               
                return null;
-       } // end method processExpression
+       }
 
        private DataIdentifier createTarget(Expression source) {
                Identifier id = source.getOutput();

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/214b1772/src/main/java/org/apache/sysml/parser/DataExpression.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/DataExpression.java 
b/src/main/java/org/apache/sysml/parser/DataExpression.java
index bb10af4..51a51c9 100644
--- a/src/main/java/org/apache/sysml/parser/DataExpression.java
+++ b/src/main/java/org/apache/sysml/parser/DataExpression.java
@@ -380,11 +380,9 @@ public class DataExpression extends DataIdentifier
        
        public DataExpression(DataOp op, HashMap<String,Expression> varParams, 
                        String filename, int blp, int bcp, int elp, int ecp) {
-               
-               _kind = Kind.DataOp;
                _opcode = op;
                _varParams = varParams;
-               this.setAllPositions(filename, blp, bcp, elp, ecp);
+               setAllPositions(filename, blp, bcp, elp, ecp);
        }
 
        public Expression rewriteExpression(String prefix) throws 
LanguageException {
@@ -515,26 +513,23 @@ public class DataExpression extends DataIdentifier
                if (fileNameExpr instanceof ConstIdentifier){
                        return fileNameExpr.toString();
                }
-               else if (fileNameExpr instanceof BinaryExpression){
+               else if (fileNameExpr instanceof BinaryExpression) {
                        BinaryExpression expr = (BinaryExpression)fileNameExpr;
-                                                       
-                       if (expr.getKind()== Expression.Kind.BinaryOp){
-                               Expression.BinaryOp op = expr.getOpCode();
-                               switch (op){
-                               case PLUS:
-                                               filename = "";
-                                               filename = fileNameCat(expr, 
currConstVars, filename, conditional);
-                                               // Since we have computed the 
value of filename, we update
-                                               // varParams with a const 
string value
-                                               StringIdentifier fileString = 
new StringIdentifier(filename, 
-                                                               
this.getFilename(), this.getBeginLine(), this.getBeginColumn(), 
-                                                               
this.getEndLine(), this.getEndColumn());
-                                               removeVarParam(IO_FILENAME);
-                                               addVarParam(IO_FILENAME, 
fileString);
-                                       break;
-                               default:
-                                       raiseValidateError("for read method, 
parameter " + IO_FILENAME + " can only be const string concatenations. ", 
conditional);
-                               }
+                       Expression.BinaryOp op = expr.getOpCode();
+                       switch (op){
+                       case PLUS:
+                                       filename = "";
+                                       filename = fileNameCat(expr, 
currConstVars, filename, conditional);
+                                       // Since we have computed the value of 
filename, we update
+                                       // varParams with a const string value
+                                       StringIdentifier fileString = new 
StringIdentifier(filename, 
+                                                       this.getFilename(), 
this.getBeginLine(), this.getBeginColumn(), 
+                                                       this.getEndLine(), 
this.getEndColumn());
+                                       removeVarParam(IO_FILENAME);
+                                       addVarParam(IO_FILENAME, fileString);
+                               break;
+                       default:
+                               raiseValidateError("for read method, parameter 
" + IO_FILENAME + " can only be const string concatenations. ", conditional);
                        }
                }
                else {
@@ -1728,17 +1723,14 @@ public class DataExpression extends DataIdentifier
        {
                // Processing the left node first
                if (expr.getLeft() instanceof BinaryExpression 
-                               && 
((BinaryExpression)expr.getLeft()).getKind()== BinaryExpression.Kind.BinaryOp
-                               && 
((BinaryExpression)expr.getLeft()).getOpCode() == BinaryOp.PLUS){
+                       && ((BinaryExpression)expr.getLeft()).getOpCode() == 
BinaryOp.PLUS){
                        filename = 
fileNameCat((BinaryExpression)expr.getLeft(), currConstVars, filename, 
conditional)+ filename;
                }
                else if (expr.getLeft() instanceof ConstIdentifier){
                        filename = 
((ConstIdentifier)expr.getLeft()).toString()+ filename;
                }
                else if (expr.getLeft() instanceof DataIdentifier 
-                               && 
((DataIdentifier)expr.getLeft()).getDataType() == Expression.DataType.SCALAR
-                               && ((DataIdentifier)expr.getLeft()).getKind() 
== Expression.Kind.Data){ 
-                               //&& 
((DataIdentifier)expr.getLeft()).getValueType() == Expression.ValueType.STRING){
+                       && ((DataIdentifier)expr.getLeft()).getDataType() == 
Expression.DataType.SCALAR){ 
                        String name = 
((DataIdentifier)expr.getLeft()).getName();
                        filename = 
((StringIdentifier)currConstVars.get(name)).getValue() + filename;
                }
@@ -1746,9 +1738,8 @@ public class DataExpression extends DataIdentifier
                        raiseValidateError("Parameter " + IO_FILENAME + " only 
supports a const string or const string concatenations.", conditional);
                }
                // Now process the right node
-               if (expr.getRight()instanceof BinaryExpression 
-                               && 
((BinaryExpression)expr.getRight()).getKind()== BinaryExpression.Kind.BinaryOp
-                               && 
((BinaryExpression)expr.getRight()).getOpCode() == BinaryOp.PLUS){
+               if (expr.getRight() instanceof BinaryExpression 
+                       && ((BinaryExpression)expr.getRight()).getOpCode() == 
BinaryOp.PLUS){
                        filename = filename + 
fileNameCat((BinaryExpression)expr.getRight(), currConstVars, filename, 
conditional);
                }
                // DRB: CHANGE
@@ -1756,9 +1747,8 @@ public class DataExpression extends DataIdentifier
                        filename = filename + 
((ConstIdentifier)expr.getRight()).toString();
                }
                else if (expr.getRight() instanceof DataIdentifier 
-                               && 
((DataIdentifier)expr.getRight()).getDataType() == Expression.DataType.SCALAR
-                               && ((DataIdentifier)expr.getRight()).getKind() 
== Expression.Kind.Data 
-                               && 
((DataIdentifier)expr.getRight()).getValueType() == 
Expression.ValueType.STRING){
+                       && ((DataIdentifier)expr.getRight()).getDataType() == 
Expression.DataType.SCALAR
+                       && ((DataIdentifier)expr.getRight()).getValueType() == 
Expression.ValueType.STRING){
                        String name = 
((DataIdentifier)expr.getRight()).getName();
                        filename =  filename + 
((StringIdentifier)currConstVars.get(name)).getValue();
                }

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/214b1772/src/main/java/org/apache/sysml/parser/DataIdentifier.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/DataIdentifier.java 
b/src/main/java/org/apache/sysml/parser/DataIdentifier.java
index 158829a..1cd00d1 100644
--- a/src/main/java/org/apache/sysml/parser/DataIdentifier.java
+++ b/src/main/java/org/apache/sysml/parser/DataIdentifier.java
@@ -22,17 +22,13 @@ package org.apache.sysml.parser;
 
 public class DataIdentifier extends Identifier 
 {
-       
-       protected String        _name;
-       protected String        _valueTypeString;       
-       protected String        _defaultValue;
+       protected String _name;
+       protected String _valueTypeString;      
        
        public DataIdentifier(DataIdentifier passed){
                setProperties(passed);
-               _kind = Kind.Data;
                _name = passed.getName();
                _valueTypeString = passed.getValueType().toString();    
-               _defaultValue = passed.getDefaultValue();
                
                // set location information
                setFilename(passed.getFilename());
@@ -44,7 +40,7 @@ public class DataIdentifier extends Identifier
        
        public Expression rewriteExpression(String prefix) throws 
LanguageException{
                DataIdentifier newId = new DataIdentifier(this);
-               String newIdName = prefix + this._name;
+               String newIdName = prefix + _name;
                newId.setName(newIdName);
                                
                return newId;
@@ -53,23 +49,10 @@ public class DataIdentifier extends Identifier
        public DataIdentifier(String name){
                super();
                _name = name;
-               _kind = Kind.Data;
-               _defaultValue = null;
-
        }
        
-       /*
-       public DataIdentifier(String name, int line, int col){
-               super();
-               _name = name;
-               _kind = Kind.Data;
-               _defaultValue = null;   
-       }
-       */
        public DataIdentifier(){
                _name = null;
-               _kind = null;
-               _defaultValue = null;
        }
 
        public String getName(){
@@ -78,12 +61,6 @@ public class DataIdentifier extends Identifier
        public void setName(String name){
                _name = name;
        }
-       public String getDefaultValue(){
-               return _defaultValue;
-       }
-       public void setDefaultValue(String val){
-               _defaultValue = val;
-       }
        
        @Override
        public String toString() {

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/214b1772/src/main/java/org/apache/sysml/parser/DoubleIdentifier.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/DoubleIdentifier.java 
b/src/main/java/org/apache/sysml/parser/DoubleIdentifier.java
index 31ce3c3..febdbb4 100644
--- a/src/main/java/org/apache/sysml/parser/DoubleIdentifier.java
+++ b/src/main/java/org/apache/sysml/parser/DoubleIdentifier.java
@@ -32,21 +32,19 @@ public class DoubleIdentifier extends ConstIdentifier
        public DoubleIdentifier(double val, String filename, int blp, int bcp, 
int elp, int ecp){
                super();
                 _val = val;
-               _kind = Kind.Data;
-               this.setDimensions(0,0);
-        this.computeDataType();
-        this.setValueType(ValueType.DOUBLE);
-        this.setAllPositions(filename, blp, bcp, elp, ecp);
+               setDimensions(0,0);
+        computeDataType();
+        setValueType(ValueType.DOUBLE);
+        setAllPositions(filename, blp, bcp, elp, ecp);
        }
        
        public DoubleIdentifier(DoubleIdentifier d, String filename, int blp, 
int bcp, int elp, int ecp){
                super();
                 _val = d.getValue();
-               _kind = Kind.Data;
-               this.setDimensions(0,0);
-        this.computeDataType();
-        this.setValueType(ValueType.DOUBLE);
-        this.setAllPositions(filename, blp, bcp, elp, ecp);
+               setDimensions(0,0);
+        computeDataType();
+        setValueType(ValueType.DOUBLE);
+        setAllPositions(filename, blp, bcp, elp, ecp);
        }
        
        public Expression rewriteExpression(String prefix) throws 
LanguageException{

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/214b1772/src/main/java/org/apache/sysml/parser/Expression.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/Expression.java 
b/src/main/java/org/apache/sysml/parser/Expression.java
index 1bb7b35..01a0a77 100644
--- a/src/main/java/org/apache/sysml/parser/Expression.java
+++ b/src/main/java/org/apache/sysml/parser/Expression.java
@@ -26,19 +26,12 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
 import org.apache.sysml.hops.Hop.FileFormatTypes;
+import org.apache.sysml.runtime.controlprogram.parfor.util.IDSequence;
 
 
 public abstract class Expression 
 {
        /**
-        * The kind of expression. Can be an operator (unary operator, binary 
operator, boolean operator, built-in function operator,
-        * parameterized built-in function operator, data operator, relational 
operator, external built-in function operator, function call operator), data, 
or literal.
-        */
-       public enum Kind {
-               BinaryOp, BooleanOp, BuiltinFunctionOp, 
ParameterizedBuiltinFunctionOp, DataOp, Data, RelationalOp, FunctionCallOp
-       };
-
-       /**
         * Binary operators.
         */
        public enum BinaryOp {
@@ -194,19 +187,16 @@ public abstract class Expression
        };
        
        protected static final Log LOG = 
LogFactory.getLog(Expression.class.getName());
-
-       public abstract Expression rewriteExpression(String prefix) throws 
LanguageException;
-               
        
-       protected Kind _kind;
+       private static final IDSequence _tempId = new IDSequence();
        protected Identifier[] _outputs;
 
-       private static int _tempId;
-
        public Expression() {
                _outputs = null;
        }
 
+       public abstract Expression rewriteExpression(String prefix) throws 
LanguageException;
+       
        public void setOutput(Identifier output) {
                if ( _outputs == null) {
                        _outputs = new Identifier[1];
@@ -214,10 +204,6 @@ public abstract class Expression
                _outputs[0] = output;
        }
 
-       public Kind getKind() {
-               return _kind;
-       }
-
        /**
         * Obtain identifier.
         * 
@@ -363,7 +349,7 @@ public abstract class Expression
         * @return Temporary name of expression.
         */
        public static String getTempName() {
-               return "parsertemp" + _tempId++;
+               return "parsertemp" + _tempId.getNextID();
        }
 
        public abstract VariableSet variablesRead();

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/214b1772/src/main/java/org/apache/sysml/parser/ExternalFunctionStatement.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/parser/ExternalFunctionStatement.java 
b/src/main/java/org/apache/sysml/parser/ExternalFunctionStatement.java
index a9f76e4..14cca05 100644
--- a/src/main/java/org/apache/sysml/parser/ExternalFunctionStatement.java
+++ b/src/main/java/org/apache/sysml/parser/ExternalFunctionStatement.java
@@ -113,7 +113,6 @@ public class ExternalFunctionStatement extends 
FunctionStatement
                for (int i=0; i<_inputParams.size(); i++){
                        DataIdentifier curr = _inputParams.get(i);
                        sb.append(curr.getName());
-                       if (curr.getDefaultValue() != null) sb.append(" = " + 
curr.getDefaultValue());
                        if (i < _inputParams.size()-1) sb.append(", ");
                }
                sb.append(") return (");

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/214b1772/src/main/java/org/apache/sysml/parser/FunctionCallIdentifier.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/FunctionCallIdentifier.java 
b/src/main/java/org/apache/sysml/parser/FunctionCallIdentifier.java
index 297c8ba..8f48789 100644
--- a/src/main/java/org/apache/sysml/parser/FunctionCallIdentifier.java
+++ b/src/main/java/org/apache/sysml/parser/FunctionCallIdentifier.java
@@ -68,25 +68,18 @@ public class FunctionCallIdentifier extends DataIdentifier
                        
                fci._name = this._name;
                fci._namespace = this._namespace;
-               fci._opcode = this._opcode;
-               fci._kind = Kind.FunctionCallOp;         
+               fci._opcode = this._opcode;      
                
                return fci;
        }
        
-       
-       
        public FunctionCallIdentifier(){}
        
        public FunctionCallIdentifier(ArrayList<ParameterExpression> 
paramExpressions) {
-               
                _paramExprs = paramExpressions;
                _opcode = null;
-               _kind = Kind.FunctionCallOp;     
        }
        
-       
-       
        public FunctCallOp getOpCode() {
                return _opcode;
        }

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/214b1772/src/main/java/org/apache/sysml/parser/FunctionStatement.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/FunctionStatement.java 
b/src/main/java/org/apache/sysml/parser/FunctionStatement.java
index ea2ed5c..07a2284 100644
--- a/src/main/java/org/apache/sysml/parser/FunctionStatement.java
+++ b/src/main/java/org/apache/sysml/parser/FunctionStatement.java
@@ -93,7 +93,6 @@ public class FunctionStatement extends Statement
                for (int i=0; i<_inputParams.size(); i++){
                        DataIdentifier curr = _inputParams.get(i);
                        sb.append(curr.getName());
-                       if (curr.getDefaultValue() != null) sb.append(" = " + 
curr.getDefaultValue());
                        if (i < _inputParams.size()-1) sb.append(", ");
                }
                sb.append(") return (");

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/214b1772/src/main/java/org/apache/sysml/parser/Identifier.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/Identifier.java 
b/src/main/java/org/apache/sysml/parser/Identifier.java
index 8789875..4d62f1a 100644
--- a/src/main/java/org/apache/sysml/parser/Identifier.java
+++ b/src/main/java/org/apache/sysml/parser/Identifier.java
@@ -25,7 +25,6 @@ import 
org.apache.sysml.parser.LanguageException.LanguageErrorCodes;
 
 public abstract class Identifier extends Expression
 {
-       
        protected DataType _dataType;
        protected ValueType _valueType;
        protected long _dim1;

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/214b1772/src/main/java/org/apache/sysml/parser/IndexedIdentifier.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/IndexedIdentifier.java 
b/src/main/java/org/apache/sysml/parser/IndexedIdentifier.java
index 637e445..0fda2f9 100644
--- a/src/main/java/org/apache/sysml/parser/IndexedIdentifier.java
+++ b/src/main/java/org/apache/sysml/parser/IndexedIdentifier.java
@@ -569,11 +569,9 @@ public class IndexedIdentifier extends DataIdentifier
                newIndexedIdentifier.setOriginalDimensions(this._origDim1, 
this._origDim2);
                
                // set remaining properties (specific to DataIdentifier)
-               newIndexedIdentifier._kind = Kind.Data;
                newIndexedIdentifier._name = prefix + this._name;
                newIndexedIdentifier._valueTypeString = 
this.getValueType().toString(); 
-               newIndexedIdentifier._defaultValue = this._defaultValue;
-       
+               
                // creates rewritten expression (deep copy)
                newIndexedIdentifier._rowLowerBound = (_rowLowerBound == null) 
? null : _rowLowerBound.rewriteExpression(prefix);
                newIndexedIdentifier._rowUpperBound = (_rowUpperBound == null) 
? null : _rowUpperBound.rewriteExpression(prefix);

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/214b1772/src/main/java/org/apache/sysml/parser/IntIdentifier.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/IntIdentifier.java 
b/src/main/java/org/apache/sysml/parser/IntIdentifier.java
index 070da79..60463e6 100644
--- a/src/main/java/org/apache/sysml/parser/IntIdentifier.java
+++ b/src/main/java/org/apache/sysml/parser/IntIdentifier.java
@@ -33,21 +33,19 @@ public class IntIdentifier extends ConstIdentifier
        public IntIdentifier(long val, String filename, int blp, int bcp, int 
elp, int ecp){
                super();
                 _val = val;
-               _kind = Kind.Data;
-               this.setDimensions(0,0);
-        this.computeDataType();
-        this.setValueType(ValueType.INT);
-        this.setAllPositions(filename, blp, bcp, elp, ecp);
+               setDimensions(0,0);
+        computeDataType();
+        setValueType(ValueType.INT);
+        setAllPositions(filename, blp, bcp, elp, ecp);
        }
        
        public IntIdentifier(IntIdentifier i, String filename, int blp, int 
bcp, int elp, int ecp){
                super();
                 _val = i.getValue();
-               _kind = Kind.Data;
-               this.setDimensions(0,0);
-        this.computeDataType();
-        this.setValueType(ValueType.INT);
-        this.setAllPositions(filename, blp, bcp, elp, ecp);
+               setDimensions(0,0);
+        computeDataType();
+        setValueType(ValueType.INT);
+        setAllPositions(filename, blp, bcp, elp, ecp);
        }
        
        // Used only by the parser for unary operation

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/214b1772/src/main/java/org/apache/sysml/parser/ParameterizedBuiltinFunctionExpression.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/parser/ParameterizedBuiltinFunctionExpression.java
 
b/src/main/java/org/apache/sysml/parser/ParameterizedBuiltinFunctionExpression.java
index c135b74..aa888d3 100644
--- 
a/src/main/java/org/apache/sysml/parser/ParameterizedBuiltinFunctionExpression.java
+++ 
b/src/main/java/org/apache/sysml/parser/ParameterizedBuiltinFunctionExpression.java
@@ -107,9 +107,8 @@ public class ParameterizedBuiltinFunctionExpression extends 
DataIdentifier
                
pbHopMap.put(Expression.ParameterizedBuiltinFunctionOp.TOSTRING, 
ParamBuiltinOp.TOSTRING);
        }
        
-       public static ParameterizedBuiltinFunctionExpression 
getParamBuiltinFunctionExpression(String functionName, 
ArrayList<ParameterExpression> paramExprsPassed,
-                       String fileName, int blp, int bcp, int elp, int ecp){
-       
+       public static ParameterizedBuiltinFunctionExpression 
getParamBuiltinFunctionExpression(String functionName, 
+                       ArrayList<ParameterExpression> paramExprsPassed, String 
fileName, int blp, int bcp, int elp, int ecp){
                if (functionName == null || paramExprsPassed == null)
                        return null;
                
@@ -125,15 +124,14 @@ public class ParameterizedBuiltinFunctionExpression 
extends DataIdentifier
                ParameterizedBuiltinFunctionExpression retVal = new 
ParameterizedBuiltinFunctionExpression(pbifop,varParams,
                                fileName, blp, bcp, elp, ecp);
                return retVal;
-       } // end method getBuiltinFunctionExpression
+       }
        
                        
        public 
ParameterizedBuiltinFunctionExpression(ParameterizedBuiltinFunctionOp op, 
HashMap<String,Expression> varParams,
                        String filename, int blp, int bcp, int elp, int ecp) {
-               _kind = Kind.ParameterizedBuiltinFunctionOp;
                _opcode = op;
                _varParams = varParams;
-               this.setAllPositions(filename, blp, bcp, elp, ecp);
+               setAllPositions(filename, blp, bcp, elp, ecp);
        }
 
        public Expression rewriteExpression(String prefix) throws 
LanguageException {

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/214b1772/src/main/java/org/apache/sysml/parser/RelationalExpression.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/RelationalExpression.java 
b/src/main/java/org/apache/sysml/parser/RelationalExpression.java
index c622e37..48666d0 100644
--- a/src/main/java/org/apache/sysml/parser/RelationalExpression.java
+++ b/src/main/java/org/apache/sysml/parser/RelationalExpression.java
@@ -25,13 +25,11 @@ import 
org.apache.sysml.parser.LanguageException.LanguageErrorCodes;
 
 public class RelationalExpression extends Expression
 {
-               
        private Expression _left;
        private Expression _right;
        private RelationalOp _opcode;
        
        public RelationalExpression(RelationalOp bop) {
-               _kind = Kind.RelationalOp;
                _opcode = bop;
                
                setFilename("MAIN SCRIPT");
@@ -42,7 +40,6 @@ public class RelationalExpression extends Expression
        }
        
        public RelationalExpression(RelationalOp bop, String filename, int 
beginLine, int beginColumn, int endLine, int endColumn) {
-               _kind = Kind.RelationalOp;
                _opcode = bop;
                
                setFilename(filename);

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/214b1772/src/main/java/org/apache/sysml/parser/StatementBlock.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/StatementBlock.java 
b/src/main/java/org/apache/sysml/parser/StatementBlock.java
index 7329ced..3947372 100644
--- a/src/main/java/org/apache/sysml/parser/StatementBlock.java
+++ b/src/main/java/org/apache/sysml/parser/StatementBlock.java
@@ -419,8 +419,12 @@ public class StatementBlock extends LiveVariableAnalysis
                                }
                                StatementBlock sblock = fstmt.getBody().get(0);
                                
-                               for (int i =0; i < 
fstmt.getInputParams().size(); i++){
-                                       
+                               if( fcall.getParamExprs().size() < 
fstmt.getInputParams().size() ) {
+                                       sourceExpr.raiseValidateError("Wrong 
number of function parameters: "+
+                                               fcall.getParamExprs().size() + 
", but " + fstmt.getInputParams().size()+" expected.");
+                               }
+                               
+                               for (int i =0; i < 
fstmt.getInputParams().size(); i++) {
                                        DataIdentifier currFormalParam = 
fstmt.getInputParams().get(i);
                                        
                                        // create new assignment statement
@@ -428,23 +432,7 @@ public class StatementBlock extends LiveVariableAnalysis
                                        DataIdentifier newTarget = new 
DataIdentifier(currFormalParam);
                                        
newTarget.setName(newFormalParameterName);
                                        
-                                       Expression currCallParam = null;
-                                       if (fcall.getParamExprs().size() > i){
-                                               // function call has value for 
parameter
-                                               currCallParam = 
fcall.getParamExprs().get(i).getExpr();
-                                       }
-                                       else {
-                                               // use default value for 
parameter
-                                               if 
(fstmt.getInputParams().get(i).getDefaultValue() == null){
-                                                       
currFormalParam.raiseValidateError("default parameter for " + currFormalParam + 
" is undefined", false);
-                                               }
-                                               currCallParam = new 
DataIdentifier(fstmt.getInputParams().get(i).getDefaultValue());
-                                               currCallParam.setAllPositions(  
fstmt.getInputParams().get(i).getFilename(),
-                                                                               
                                fstmt.getInputParams().get(i).getBeginLine(), 
-                                                                               
                                fstmt.getInputParams().get(i).getBeginColumn(),
-                                                                               
                                fstmt.getInputParams().get(i).getEndLine(),
-                                                                               
                                fstmt.getInputParams().get(i).getEndColumn());
-                                       }
+                                       Expression currCallParam = 
fcall.getParamExprs().get(i).getExpr();
                                        
                                        //auto casting of inputs on inlining 
(if required)
                                        ValueType targetVT = 
newTarget.getValueType();

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/214b1772/src/main/java/org/apache/sysml/parser/StringIdentifier.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/StringIdentifier.java 
b/src/main/java/org/apache/sysml/parser/StringIdentifier.java
index dc91a60..6b8ba1e 100644
--- a/src/main/java/org/apache/sysml/parser/StringIdentifier.java
+++ b/src/main/java/org/apache/sysml/parser/StringIdentifier.java
@@ -33,12 +33,10 @@ public class StringIdentifier extends ConstIdentifier
        public StringIdentifier(String val, String filename, int blp, int bcp, 
int elp, int ecp){
                super();
                 _val = val;
-               _kind = Kind.Data;
-               this.setDimensions(0,0);
-        this.computeDataType();
-        this.setValueType(ValueType.STRING);
-        this.setAllPositions(filename, blp, bcp, elp, ecp);
-               
+               setDimensions(0,0);
+        computeDataType();
+        setValueType(ValueType.STRING);
+        setAllPositions(filename, blp, bcp, elp, ecp);
        }
 
        public String getValue(){

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/214b1772/src/main/java/org/apache/sysml/runtime/instructions/cp/FunctionCallCPInstruction.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/runtime/instructions/cp/FunctionCallCPInstruction.java
 
b/src/main/java/org/apache/sysml/runtime/instructions/cp/FunctionCallCPInstruction.java
index 0958aeb..9cc6bb2 100644
--- 
a/src/main/java/org/apache/sysml/runtime/instructions/cp/FunctionCallCPInstruction.java
+++ 
b/src/main/java/org/apache/sysml/runtime/instructions/cp/FunctionCallCPInstruction.java
@@ -30,7 +30,6 @@ import org.apache.sysml.lops.Lop;
 import org.apache.sysml.parser.DMLProgram;
 import org.apache.sysml.parser.DataIdentifier;
 import org.apache.sysml.parser.Expression.DataType;
-import org.apache.sysml.parser.Expression.ValueType;
 import org.apache.sysml.runtime.DMLRuntimeException;
 import org.apache.sysml.runtime.DMLScriptException;
 import org.apache.sysml.runtime.controlprogram.FunctionProgramBlock;
@@ -123,6 +122,12 @@ public class FunctionCallCPInstruction extends 
CPInstruction
                // get the function program block (stored in the Program object)
                FunctionProgramBlock fpb = 
ec.getProgram().getFunctionProgramBlock(_namespace, _functionName);
                
+               // sanity check number of function paramters
+               if( _boundInputParamNames.size() < fpb.getInputParams().size() 
) {
+                       throw new DMLRuntimeException("Number of bound input 
parameters does not match the function signature "
+                               + "("+_boundInputParamNames.size()+", but 
"+fpb.getInputParams().size()+" expected)");
+               }
+               
                // create bindings to formal parameters for given function call
                // These are the bindings passed to the FunctionProgramBlock 
for function execution 
                LocalVariableMap functionVariables = new LocalVariableMap();    
        
@@ -131,35 +136,25 @@ public class FunctionCallCPInstruction extends 
CPInstruction
                        DataIdentifier currFormalParam = 
fpb.getInputParams().get(i);
                        String currFormalParamName = currFormalParam.getName();
                        Data currFormalParamValue = null; 
-                       ValueType valType = 
fpb.getInputParams().get(i).getValueType();
                                
-                       // CASE (a): default values, if call w/ less params 
than signature (scalars only)
-                       if( i > _boundInputParamNames.size() )
-                       {       
-                               String defaultVal = 
fpb.getInputParams().get(i).getDefaultValue();
-                               currFormalParamValue = 
ec.getScalarInput(defaultVal, valType, false);
+                       CPOperand operand = _boundInputParamOperands.get(i);
+                       String varname = operand.getName();
+                       //error handling non-existing variables
+                       if( !operand.isLiteral() && 
!ec.containsVariable(varname) ) {
+                               throw new DMLRuntimeException("Input variable 
'"+varname+"' not existing on call of " + 
+                                               
DMLProgram.constructFunctionKey(_namespace, _functionName) + " (line 
"+getLineNum()+").");
                        }
-                       // CASE (b) literals or symbol table entries
-                       else {
-                               CPOperand operand = 
_boundInputParamOperands.get(i);
-                               String varname = operand.getName();
-                               //error handling non-existing variables
-                               if( !operand.isLiteral() && 
!ec.containsVariable(varname) ) {
-                                       throw new DMLRuntimeException("Input 
variable '"+varname+"' not existing on call of " + 
-                                                       
DMLProgram.constructFunctionKey(_namespace, _functionName) + " (line 
"+getLineNum()+").");
-                               }
-                               //get input matrix/frame/scalar
-                               currFormalParamValue = 
(operand.getDataType()!=DataType.SCALAR) ? ec.getVariable(varname) : 
-                                       ec.getScalarInput(varname, 
operand.getValueType(), operand.isLiteral());
-                               
-                               //graceful value type conversion for scalar 
inputs with wrong type
-                               if( currFormalParamValue.getDataType() == 
DataType.SCALAR
-                                       && currFormalParamValue.getValueType() 
!= operand.getValueType() )
-                               {
-                                       ScalarObject so = (ScalarObject) 
currFormalParamValue;
-                                       currFormalParamValue = 
ScalarObjectFactory
-                                               
.createScalarObject(operand.getValueType(), so);
-                               }
+                       //get input matrix/frame/scalar
+                       currFormalParamValue = 
(operand.getDataType()!=DataType.SCALAR) ? ec.getVariable(varname) : 
+                               ec.getScalarInput(varname, 
operand.getValueType(), operand.isLiteral());
+                       
+                       //graceful value type conversion for scalar inputs with 
wrong type
+                       if( currFormalParamValue.getDataType() == 
DataType.SCALAR
+                               && currFormalParamValue.getValueType() != 
operand.getValueType() )
+                       {
+                               ScalarObject so = (ScalarObject) 
currFormalParamValue;
+                               currFormalParamValue = ScalarObjectFactory
+                                       
.createScalarObject(operand.getValueType(), so);
                        }
                        
                        functionVariables.put(currFormalParamName, 
currFormalParamValue);                                               


Reply via email to