use of org.apache.sysml.parser.dml.DmlParser.TypedArgNoAssignContext in project incubator-systemml by apache.
the class DmlSyntacticValidator method getFunctionParameters.
private ArrayList<DataIdentifier> getFunctionParameters(List<TypedArgNoAssignContext> ctx) {
ArrayList<DataIdentifier> retVal = new ArrayList<DataIdentifier>();
for (TypedArgNoAssignContext paramCtx : ctx) {
DataIdentifier dataId = new DataIdentifier(paramCtx.paramName.getText());
String dataType = null;
String valueType = null;
if (paramCtx.paramType == null || paramCtx.paramType.dataType() == null || paramCtx.paramType.dataType().getText() == null || paramCtx.paramType.dataType().getText().isEmpty()) {
dataType = "scalar";
} else {
dataType = paramCtx.paramType.dataType().getText();
}
//check and assign data type
checkValidDataType(dataType, paramCtx.start);
if (dataType.equalsIgnoreCase("matrix"))
dataId.setDataType(DataType.MATRIX);
else if (dataType.equalsIgnoreCase("frame"))
dataId.setDataType(DataType.FRAME);
else if (dataType.equalsIgnoreCase("scalar"))
dataId.setDataType(DataType.SCALAR);
valueType = paramCtx.paramType.valueType().getText();
if (valueType.equals("int") || valueType.equals("integer") || valueType.equals("Int") || valueType.equals("Integer")) {
dataId.setValueType(ValueType.INT);
} else if (valueType.equals("string") || valueType.equals("String")) {
dataId.setValueType(ValueType.STRING);
} else if (valueType.equals("boolean") || valueType.equals("Boolean")) {
dataId.setValueType(ValueType.BOOLEAN);
} else if (valueType.equals("double") || valueType.equals("Double")) {
dataId.setValueType(ValueType.DOUBLE);
} else if (valueType.equals("bool")) {
notifyErrorListeners("invalid valuetype " + valueType + " (Quickfix: use \'boolean\' instead)", paramCtx.start);
return null;
} else {
notifyErrorListeners("invalid valuetype " + valueType, paramCtx.start);
return null;
}
retVal.add(dataId);
}
return retVal;
}
Aggregations