Package org.apache.sysds.parser
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
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
Expression.BinaryOp
Binary operators.static class
Expression.BooleanOp
Boolean operators.static class
Expression.DataOp
Data operators.static class
Expression.FunctCallOp
Function call operators.static class
Expression.RelationalOp
Relational operators.
-
Constructor Summary
Constructors Constructor Description Expression()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description static Types.DataType
computeDataType(Expression expression1, Expression expression2, boolean cast)
Compute data type based on expressions.static Types.DataType
computeDataType(Identifier identifier1, Identifier identifier2, boolean cast)
Compute data type based on identifiers.static Types.ValueType
computeValueType(Expression expr1, Types.ValueType v1, Types.ValueType v2, boolean cast)
static Types.ValueType
computeValueType(Expression expression1, Expression expression2, boolean cast)
Compute value type based on expressions.static Types.ValueType
computeValueType(Identifier identifier1, Identifier identifier2, boolean cast)
Compute value type based on identifiers.static Types.FileFormat
convertFormatType(String format)
Convert string format type toHop.FileFormatTypes
.boolean
equals(Object that)
int
getBeginColumn()
int
getBeginLine()
static MatrixCharacteristics
getBinaryMatrixCharacteristics(Expression expression1, Expression expression2)
Returns the matrix characteristics for scalar-scalar, scalar-matrix, matrix-scalar, matrix-matrix operations.static Expression.BinaryOp
getBinaryOp(String val)
Convert string value to binary operator.static Expression.BooleanOp
getBooleanOp(String val)
Convert string value to boolean operator.int
getEndColumn()
int
getEndLine()
String
getFilename()
Identifier
getOutput()
Obtain identifier.Identifier[]
getOutputs()
Obtain identifiers.ArrayList<String>
getParseExceptionList()
static Expression.RelationalOp
getRelationalOp(String val)
Convert string value to relational operator.static String
getTempName()
Obtain temporary name ("parsertemp" + _tempId) for expression.String
getText()
int
hashCode()
String
printErrorLocation()
String
printInfoLocation()
Return info message containing the filename, the beginning line position, and the beginning column position.String
printWarningLocation()
void
raiseValidateError(String message)
Throw a LanguageException with the message.void
raiseValidateError(String message, boolean conditional)
Throw a LanguageException with the message if conditional isfalse
; otherwise log the message as a warning.void
raiseValidateError(String msg, boolean conditional, String errorCode)
Throw a LanguageException with the message (and optional error code) if conditional isfalse
; otherwise log the message as a warning.abstract Expression
rewriteExpression(String prefix)
void
setBeginColumn(int passed)
void
setBeginLine(int passed)
void
setCtxValues(org.antlr.v4.runtime.ParserRuleContext ctx)
Set ParserRuleContext values (begin line, begin column, end line, end column, and text).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.void
setEndColumn(int passed)
void
setEndLine(int passed)
void
setFilename(String passed)
void
setOutput(Identifier output)
void
setParseExceptionList(ArrayList<String> passed)
void
setParseInfo(ParseInfo parseInfo)
Set parse information.void
setText(String text)
void
validateExpression(HashMap<String,DataIdentifier> ids, HashMap<String,ConstIdentifier> currConstVars, boolean conditional)
void
validateExpression(MultiAssignmentStatement mas, HashMap<String,DataIdentifier> ids, HashMap<String,ConstIdentifier> currConstVars, boolean conditional)
abstract VariableSet
variablesRead()
abstract VariableSet
variablesUpdated()
-
-
-
Method Detail
-
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
). ReturnsBinaryOp.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
). ReturnsRelationalOp.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
). ReturnsBooleanOp.INVALID
if string value not recognized.
-
convertFormatType
public static Types.FileFormat convertFormatType(String format)
Convert string format type toHop.FileFormatTypes
.- Parameters:
format
- String format type ("text", "binary", "mm", "csv")- Returns:
- Format as
Hop.FileFormatTypes
. Can beFileFormatTypes.TEXT
,FileFormatTypes.BINARY
,FileFormatTypes.MM
, orFileFormatTypes.CSV
. Unrecognized type is set toFileFormatTypes.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 tocomputeDataType(Identifier, Identifier, boolean)
. If the identifiers have the same data type, the shared data type is returned. Otherwise, ifcast
istrue
and one of the identifiers is a matrix and the other identifier is a scalar, returnDataType.MATRIX
. Otherwise, throw a LanguageException.- Parameters:
expression1
- First expressionexpression2
- Second expressioncast
- 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, ifcast
istrue
and one of the identifiers is a matrix and the other identifier is a scalar, returnDataType.MATRIX
. Otherwise, throw a LanguageException.- Parameters:
identifier1
- First identifieridentifier2
- Second identifiercast
- 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 tocomputeValueType(Identifier, Identifier, boolean)
. If the identifiers have the same value type, the shared value type is returned. Otherwise, ifcast
istrue
and one value type is a double and the other is an int, returnValueType.DOUBLE
. Ifcast
istrue
and one value type is a string or the other value type is a string, returnValueType.STRING
. Otherwise, throw a LanguageException.- Parameters:
expression1
- First expressionexpression2
- Second expressioncast
- 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, ifcast
istrue
and one value type is a double and the other is an int, returnValueType.DOUBLE
. Ifcast
istrue
and one value type is a string or the other value type is a string, returnValueType.STRING
. Otherwise, throw a LanguageException.- Parameters:
identifier1
- First identifieridentifier2
- Second identifiercast
- 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)
-
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 isfalse
; otherwise log the message as a warning.- Parameters:
message
- the error (or warning) messageconditional
- iftrue
, 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 isfalse
; otherwise log the message as a warning.- Parameters:
msg
- the error (or warning) messageconditional
- iftrue
, display log warning message. Otherwise, the message (and optional error code) will be thrown as a LanguageExceptionerrorCode
- 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 expressionexpression2
- 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 interfaceParseInfo
-
setBeginLine
public void setBeginLine(int passed)
- Specified by:
setBeginLine
in interfaceParseInfo
-
setBeginColumn
public void setBeginColumn(int passed)
- Specified by:
setBeginColumn
in interfaceParseInfo
-
setEndLine
public void setEndLine(int passed)
- Specified by:
setEndLine
in interfaceParseInfo
-
setEndColumn
public void setEndColumn(int passed)
- Specified by:
setEndColumn
in interfaceParseInfo
-
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 ParserRuleContextfilename
- the filename (if it exists)
-
getFilename
public String getFilename()
- Specified by:
getFilename
in interfaceParseInfo
-
getBeginLine
public int getBeginLine()
- Specified by:
getBeginLine
in interfaceParseInfo
-
getBeginColumn
public int getBeginColumn()
- Specified by:
getBeginColumn
in interfaceParseInfo
-
getEndLine
public int getEndLine()
- Specified by:
getEndLine
in interfaceParseInfo
-
getEndColumn
public int getEndColumn()
- Specified by:
getEndColumn
in interfaceParseInfo
-
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
-
-