Class Expression

java.lang.Object
org.apache.sysds.parser.Expression
All Implemented Interfaces:
ParseInfo
Direct Known Subclasses:
BinaryExpression, BooleanExpression, ExpressionList, Identifier, IterablePredicate, RelationalExpression

public abstract class Expression extends Object implements ParseInfo
  • Constructor Details

    • Expression

      public Expression()
  • Method Details

    • rewriteExpression

      public abstract Expression rewriteExpression(String prefix)
    • setOutput

      public void setOutput(Identifier output)
    • getOutput

      public Identifier getOutput()
      Obtain identifier.
      Returns:
      Identifier
    • getOutputs

      public Identifier[] getOutputs()
      Obtain identifiers.
      Returns:
      Identifiers
    • validateExpression

      public void validateExpression(HashMap<String,DataIdentifier> ids, HashMap<String,ConstIdentifier> currConstVars, boolean conditional)
    • validateExpression

      public void validateExpression(MultiAssignmentStatement mas, HashMap<String,DataIdentifier> ids, HashMap<String,ConstIdentifier> currConstVars, boolean conditional)
    • getBinaryOp

      public static Expression.BinaryOp getBinaryOp(String val)
      Convert string value to binary operator.
      Parameters:
      val - String value ('+', '-', '*', '/', '%%', '%/%', '^', %*%')
      Returns:
      Binary operator (BinaryOp.PLUS, BinaryOp.MINUS, BinaryOp.MULT, BinaryOp.DIV, BinaryOp.MODULUS, BinaryOp.INTDIV, BinaryOp.POW, BinaryOp.MATMULT). Returns BinaryOp.INVALID if string value not recognized.
    • getRelationalOp

      public static Expression.RelationalOp getRelationalOp(String val)
      Convert string value to relational operator.
      Parameters:
      val - String value ('<', '<=', '>', '>=', '==', '!=')
      Returns:
      Relational operator (RelationalOp.LESS, RelationalOp.LESSEQUAL, RelationalOp.GREATER, RelationalOp.GREATEREQUAL, RelationalOp.EQUAL, RelationalOp.NOTEQUAL). Returns RelationalOp.INVALID if string value not recognized.
    • getBooleanOp

      public static Expression.BooleanOp getBooleanOp(String val)
      Convert string value to boolean operator.
      Parameters:
      val - String value ('&&', '&', '||', '|', '!')
      Returns:
      Boolean operator (BooleanOp.CONDITIONALAND, BooleanOp.LOGICALAND, BooleanOp.CONDITIONALOR, BooleanOp.LOGICALOR, BooleanOp.NOT). Returns BooleanOp.INVALID if string value not recognized.
    • convertFormatType

      public static Types.FileFormat convertFormatType(String format)
      Convert string format type to Hop.FileFormatTypes.
      Parameters:
      format - String format type ("text", "binary", "mm", "csv")
      Returns:
      Format as Hop.FileFormatTypes. Can be FileFormatTypes.TEXT, FileFormatTypes.BINARY, FileFormatTypes.MM, or FileFormatTypes.CSV. Unrecognized type is set to FileFormatTypes.TEXT.
    • getTempName

      public static String getTempName()
      Obtain temporary name ("parsertemp" + _tempId) for expression. Used to construct Hops from parse tree.
      Returns:
      Temporary name of expression.
    • variablesRead

      public abstract VariableSet variablesRead()
    • variablesUpdated

      public abstract VariableSet variablesUpdated()
    • computeDataType

      public static Types.DataType computeDataType(Expression expression1, Expression expression2, boolean cast)
      Compute data type based on expressions. The identifier for each expression is obtained and passed to computeDataType(Identifier, Identifier, boolean). If the identifiers have the same data type, the shared data type is returned. Otherwise, if cast is true and one of the identifiers is a matrix and the other identifier is a scalar, return DataType.MATRIX. Otherwise, throw a LanguageException.
      Parameters:
      expression1 - First expression
      expression2 - Second expression
      cast - Whether a cast should potentially be performed
      Returns:
      The data type (Types.DataType)
    • computeDataType

      public static Types.DataType computeDataType(Identifier identifier1, Identifier identifier2, boolean cast)
      Compute data type based on identifiers. If the identifiers have the same data type, the shared data type is returned. Otherwise, if cast is true and one of the identifiers is a matrix and the other identifier is a scalar, return DataType.MATRIX. Otherwise, throw a LanguageException.
      Parameters:
      identifier1 - First identifier
      identifier2 - Second identifier
      cast - Whether a cast should potentially be performed
      Returns:
      The data type (Types.DataType)
    • computeValueType

      public static Types.ValueType computeValueType(Expression expression1, Expression expression2, boolean cast)
      Compute value type based on expressions. The identifier for each expression is obtained and passed to computeValueType(Identifier, Identifier, boolean). If the identifiers have the same value type, the shared value type is returned. Otherwise, if cast is true and one value type is a double and the other is an int, return ValueType.DOUBLE. If cast is true and one value type is a string or the other value type is a string, return ValueType.STRING. Otherwise, throw a LanguageException.
      Parameters:
      expression1 - First expression
      expression2 - Second expression
      cast - Whether a cast should potentially be performed
      Returns:
      The value type (Types.ValueType)
    • computeValueType

      public static Types.ValueType computeValueType(Identifier identifier1, Identifier identifier2, boolean cast)
      Compute value type based on identifiers. If the identifiers have the same value type, the shared value type is returned. Otherwise, if cast is true and one value type is a double and the other is an int, return ValueType.DOUBLE. If cast is true and one value type is a string or the other value type is a string, return ValueType.STRING. Otherwise, throw a LanguageException.
      Parameters:
      identifier1 - First identifier
      identifier2 - Second identifier
      cast - Whether a cast should potentially be performed
      Returns:
      The value type (Types.ValueType)
    • computeValueType

      public static Types.ValueType computeValueType(Expression expr1, Types.ValueType v1, Types.ValueType v2, boolean cast)
    • equals

      public boolean equals(Object that)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • raiseValidateError

      public void raiseValidateError(String message)
      Throw a LanguageException with the message.
      Parameters:
      message - the error message
    • raiseValidateError

      public void raiseValidateError(String message, boolean conditional)
      Throw a LanguageException with the message if conditional is false; otherwise log the message as a warning.
      Parameters:
      message - the error (or warning) message
      conditional - if true, display log warning message. Otherwise, the message will be thrown as a LanguageException
    • raiseValidateError

      public void raiseValidateError(String msg, boolean conditional, String errorCode)
      Throw a LanguageException with the message (and optional error code) if conditional is false; otherwise log the message as a warning.
      Parameters:
      msg - the error (or warning) message
      conditional - if true, display log warning message. Otherwise, the message (and optional error code) will be thrown as a LanguageException
      errorCode - optional error code
    • getBinaryMatrixCharacteristics

      public static MatrixCharacteristics getBinaryMatrixCharacteristics(Expression expression1, Expression expression2)
      Returns the matrix characteristics for scalar-scalar, scalar-matrix, matrix-scalar, matrix-matrix operations. This method is aware of potentially unknowns and matrix-vector (col/row) operations.
      Parameters:
      expression1 - The first expression
      expression2 - The second expression
      Returns:
      matrix characteristics [1] is the number of columns (clen), [2] is the number of rows in a block (blen), and [3] is the number of columns in a block (blen). Default (unknown) values are -1. Scalar values are all 0.
    • setFilename

      public void setFilename(String passed)
      Specified by:
      setFilename in interface ParseInfo
    • setBeginLine

      public void setBeginLine(int passed)
      Specified by:
      setBeginLine in interface ParseInfo
    • setBeginColumn

      public void setBeginColumn(int passed)
      Specified by:
      setBeginColumn in interface ParseInfo
    • setEndLine

      public void setEndLine(int passed)
      Specified by:
      setEndLine in interface ParseInfo
    • setEndColumn

      public void setEndColumn(int passed)
      Specified by:
      setEndColumn in interface ParseInfo
    • setText

      public void setText(String text)
      Specified by:
      setText in interface ParseInfo
    • setParseExceptionList

      public void setParseExceptionList(ArrayList<String> passed)
    • setParseInfo

      public void setParseInfo(ParseInfo parseInfo)
      Set parse information.
      Parameters:
      parseInfo - parse information, such as beginning line position, beginning column position, ending line position, ending column position, text, and filename
    • setCtxValues

      public void setCtxValues(org.antlr.v4.runtime.ParserRuleContext ctx)
      Set ParserRuleContext values (begin line, begin column, end line, end column, and text).
      Parameters:
      ctx - the antlr ParserRuleContext
    • setCtxValuesAndFilename

      public void setCtxValuesAndFilename(org.antlr.v4.runtime.ParserRuleContext ctx, String filename)
      Set ParserRuleContext values (begin line, begin column, end line, end column, and text) and file name.
      Parameters:
      ctx - the antlr ParserRuleContext
      filename - the filename (if it exists)
    • getFilename

      public String getFilename()
      Specified by:
      getFilename in interface ParseInfo
    • getBeginLine

      public int getBeginLine()
      Specified by:
      getBeginLine in interface ParseInfo
    • getBeginColumn

      public int getBeginColumn()
      Specified by:
      getBeginColumn in interface ParseInfo
    • getEndLine

      public int getEndLine()
      Specified by:
      getEndLine in interface ParseInfo
    • getEndColumn

      public int getEndColumn()
      Specified by:
      getEndColumn in interface ParseInfo
    • getText

      public String getText()
      Specified by:
      getText in interface ParseInfo
    • getParseExceptionList

      public ArrayList<String> getParseExceptionList()
    • printErrorLocation

      public String printErrorLocation()
    • printWarningLocation

      public String printWarningLocation()
    • printInfoLocation

      public String printInfoLocation()
      Return info message containing the filename, the beginning line position, and the beginning column position.
      Returns:
      the info message