Java tutorial
/** * (C) Copyright IBM Corp. 2010, 2015 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package com.ibm.bi.dml.parser.python; import java.util.ArrayList; import java.util.List; import org.antlr.v4.runtime.Token; import com.ibm.bi.dml.parser.DMLProgram; import com.ibm.bi.dml.parser.python.PydmlParser.FunctionCallAssignmentStatementContext; import com.ibm.bi.dml.parser.python.PydmlParser.ParameterizedExpressionContext; import com.ibm.bi.dml.parser.python.PydmlSyntacticErrorListener.CustomDmlErrorListener; public class PydmlSyntacticValidatorHelper { private CustomDmlErrorListener _errorListener = null; public PydmlSyntacticValidatorHelper(CustomDmlErrorListener errorListener) { this._errorListener = errorListener; } public void notifyErrorListeners(String message, int line, int charPositionInLine) { this._errorListener.validationError(line, charPositionInLine, message); } public void notifyErrorListeners(String message, Token op) { this._errorListener.validationError(op.getLine(), op.getCharPositionInLine(), message); } public String getCurrentFileName() { return _errorListener.peekFileName(); } // Returns list of two elements <namespace, function names>, else null public ArrayList<String> getQualifiedNames(String fullyQualifiedFunctionName) { String[] fnNames = fullyQualifiedFunctionName.split("\\."); // instead of :: String functionName = ""; String namespace = ""; if (fnNames.length == 1) { namespace = DMLProgram.DEFAULT_NAMESPACE; functionName = fnNames[0].trim(); } else if (fnNames.length == 2) { namespace = fnNames[0].trim(); functionName = fnNames[1].trim(); } else return null; ArrayList<String> retVal = new ArrayList<String>(); retVal.add(namespace); retVal.add(functionName); return retVal; } // public static void setInfoForArithmeticOp(com.ibm.bi.dml.parser.Expression current, // com.ibm.bi.dml.parser.Expression left, // com.ibm.bi.dml.parser.Expression right, String opStr) { // try { // // PLUS, MINUS, MULT, DIV, MODULUS, INTDIV, MATMULT, POW, INVALID // com.ibm.bi.dml.parser.Expression.BinaryOp bop = com.ibm.bi.dml.parser.Expression.getBinaryOp(opStr); // current = new com.ibm.bi.dml.parser.BinaryExpression(bop); // ((com.ibm.bi.dml.parser.BinaryExpression)current).setLeft(left); // ((com.ibm.bi.dml.parser.BinaryExpression)current).setRight(right); // ((com.ibm.bi.dml.parser.BinaryExpression)current).setFilename(DmlSyntacticErrorListener.currentFileName.peek()); // } // catch(Exception e) { // System.out.println("In setInfoForArithmeticOp>>"); // e.printStackTrace(); // } // } // public static void setInfoForBooleanOp(com.ibm.bi.dml.parser.Expression current, // com.ibm.bi.dml.parser.Expression left, // com.ibm.bi.dml.parser.Expression right, String opStr) { // com.ibm.bi.dml.parser.Expression.BooleanOp bop = com.ibm.bi.dml.parser.Expression.getBooleanOp(opStr); // current = new com.ibm.bi.dml.parser.BooleanExpression(bop); // ((com.ibm.bi.dml.parser.BooleanExpression)current).setLeft(left); // ((com.ibm.bi.dml.parser.BooleanExpression)current).setRight(right); // ((com.ibm.bi.dml.parser.BooleanExpression)current).setFilename(DmlSyntacticErrorListener.currentFileName.peek()); // } public boolean validateBuiltinFunctions(FunctionCallAssignmentStatementContext ctx) { String functionName = ctx.name.getText().replaceAll(" ", "").trim(); if (functionName.compareTo("write") == 0 || functionName.compareTo(DMLProgram.DEFAULT_NAMESPACE + ".write") == 0) { return validateBuiltinWriteFunction(ctx); } return true; } private boolean validateBuiltinWriteFunction(FunctionCallAssignmentStatementContext ctx) { return true; } public ArrayList<com.ibm.bi.dml.parser.ParameterExpression> getParameterExpressionList( List<ParameterizedExpressionContext> paramExprs) { ArrayList<com.ibm.bi.dml.parser.ParameterExpression> retVal = new ArrayList<com.ibm.bi.dml.parser.ParameterExpression>(); for (ParameterizedExpressionContext ctx : paramExprs) { String paramName = null; if (ctx.paramName != null && ctx.paramName.getText() != null && !ctx.paramName.getText().isEmpty()) { paramName = ctx.paramName.getText(); } com.ibm.bi.dml.parser.ParameterExpression myArg = new com.ibm.bi.dml.parser.ParameterExpression( paramName, ctx.paramVal.info.expr); retVal.add(myArg); } return retVal; } }