Replace SyntacticErrorListener with CustomErrorListener, step 1 Stage 1 of the replacement of SyntacticErrorListener with its inner class CustomErrorListener. In order to retain history, we do this in two commits: one commit to change the name of the SyntacticErrorListener class to CustomErrorListener while changing the inner CustomErrorListener class to a dummy name; a second commit to move the inner class methods out to the outer class.
Project: http://git-wip-us.apache.org/repos/asf/incubator-systemml/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-systemml/commit/45d56a58 Tree: http://git-wip-us.apache.org/repos/asf/incubator-systemml/tree/45d56a58 Diff: http://git-wip-us.apache.org/repos/asf/incubator-systemml/diff/45d56a58 Branch: refs/heads/master Commit: 45d56a58300cee5ddd7625db7ef28905de944f36 Parents: 6017f06 Author: Mike Dusenberry <[email protected]> Authored: Thu Feb 18 11:22:22 2016 -0800 Committer: Deron Eriksson <[email protected]> Committed: Fri Feb 19 12:00:34 2016 -0800 ---------------------------------------------------------------------- .../parser/common/CommonSyntacticValidator.java | 6 +- .../parser/common/CustomErrorListener.java | 111 +++++++++++++++++++ .../parser/common/SyntacticErrorListener.java | 111 ------------------- .../sysml/parser/dml/DMLParserWrapper.java | 10 +- .../sysml/parser/dml/DmlSyntacticValidator.java | 4 +- .../sysml/parser/pydml/PyDMLParserWrapper.java | 4 +- .../parser/pydml/PydmlSyntacticValidator.java | 4 +- 7 files changed, 125 insertions(+), 125 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/45d56a58/src/main/java/org/apache/sysml/parser/common/CommonSyntacticValidator.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/parser/common/CommonSyntacticValidator.java b/src/main/java/org/apache/sysml/parser/common/CommonSyntacticValidator.java index 27beb0d..4e5d01f 100644 --- a/src/main/java/org/apache/sysml/parser/common/CommonSyntacticValidator.java +++ b/src/main/java/org/apache/sysml/parser/common/CommonSyntacticValidator.java @@ -51,7 +51,7 @@ import org.apache.sysml.parser.PrintStatement; import org.apache.sysml.parser.RelationalExpression; import org.apache.sysml.parser.Statement; import org.apache.sysml.parser.StringIdentifier; -import org.apache.sysml.parser.common.SyntacticErrorListener.CustomErrorListener; +import org.apache.sysml.parser.common.CustomErrorListener.CustomErrorListenerInner; import org.apache.sysml.parser.dml.DmlParser.BuiltinFunctionExpressionContext; import org.apache.sysml.parser.dml.DmlSyntacticValidator; import org.apache.sysml.parser.pydml.PydmlSyntacticValidator; @@ -64,12 +64,12 @@ import com.google.common.primitives.Longs; */ public abstract class CommonSyntacticValidator { - protected final CustomErrorListener errorListener; + protected final CustomErrorListenerInner errorListener; protected final String currentFile; protected String _workingDir = "."; //current working directory protected HashMap<String,String> argVals = null; - public CommonSyntacticValidator(CustomErrorListener errorListener, HashMap<String,String> argVals) { + public CommonSyntacticValidator(CustomErrorListenerInner errorListener, HashMap<String,String> argVals) { this.errorListener = errorListener; currentFile = errorListener.getCurrentFileName(); this.argVals = argVals; http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/45d56a58/src/main/java/org/apache/sysml/parser/common/CustomErrorListener.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/parser/common/CustomErrorListener.java b/src/main/java/org/apache/sysml/parser/common/CustomErrorListener.java new file mode 100644 index 0000000..74c82c0 --- /dev/null +++ b/src/main/java/org/apache/sysml/parser/common/CustomErrorListener.java @@ -0,0 +1,111 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 org.apache.sysml.parser.common; + +import org.antlr.v4.runtime.BaseErrorListener; +import org.antlr.v4.runtime.RecognitionException; +import org.antlr.v4.runtime.Recognizer; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.sysml.api.DMLScript; + +public class CustomErrorListener { + + private static final Log LOG = LogFactory.getLog(DMLScript.class.getName()); + + public static class CustomErrorListenerInner extends BaseErrorListener { + + private boolean atleastOneError = false; + private String currentFileName = null; + + public void setCurrentFileName(String currentFilePath) { + currentFileName = currentFilePath; + } + + public String getCurrentFileName() { + return currentFileName; + } + + public void unsetCurrentFileName() { + currentFileName = null; + } + + public void validationError(int line, int charPositionInLine, String msg) { + try { + setAtleastOneError(true); + // Print error messages with file name + if(currentFileName == null) { + LOG.error("line "+line+":"+charPositionInLine+" "+msg); + } + else { + String fileName = currentFileName; + LOG.error(fileName + " line "+line+":"+charPositionInLine+" "+msg); + } + } + catch(Exception e1) { + LOG.error("ERROR: while customizing error message:" + e1); + } + } + + public void validationWarning(int line, int charPositionInLine, String msg) { + try { + //atleastOneError = true; ---> not an error, just warning + // Print error messages with file name + if(currentFileName == null) + LOG.warn("line "+line+":"+charPositionInLine+" "+msg); + else { + String fileName = currentFileName; + LOG.warn(fileName + " line "+line+":"+charPositionInLine+" "+msg); + } + } + catch(Exception e1) { + LOG.warn("ERROR: while customizing error message:" + e1); + } + } + + @Override + public void syntaxError(Recognizer<?, ?> recognizer, Object offendingSymbol, + int line, int charPositionInLine, + String msg, RecognitionException e) + { + try { + setAtleastOneError(true); + // Print error messages with file name + if(currentFileName == null) + LOG.error("line "+line+":"+charPositionInLine+" "+msg); + else { + String fileName = currentFileName; + LOG.error(fileName + " line "+line+":"+charPositionInLine+" "+msg); + } + } + catch(Exception e1) { + LOG.error("ERROR: while customizing error message:" + e1); + } + } + + public boolean isAtleastOneError() { + return atleastOneError; + } + + public void setAtleastOneError(boolean atleastOneError) { + this.atleastOneError = atleastOneError; + } + } +} http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/45d56a58/src/main/java/org/apache/sysml/parser/common/SyntacticErrorListener.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/parser/common/SyntacticErrorListener.java b/src/main/java/org/apache/sysml/parser/common/SyntacticErrorListener.java deleted file mode 100644 index 2a669d8..0000000 --- a/src/main/java/org/apache/sysml/parser/common/SyntacticErrorListener.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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 org.apache.sysml.parser.common; - -import org.antlr.v4.runtime.BaseErrorListener; -import org.antlr.v4.runtime.RecognitionException; -import org.antlr.v4.runtime.Recognizer; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.sysml.api.DMLScript; - -public class SyntacticErrorListener { - - private static final Log LOG = LogFactory.getLog(DMLScript.class.getName()); - - public static class CustomErrorListener extends BaseErrorListener { - - private boolean atleastOneError = false; - private String currentFileName = null; - - public void setCurrentFileName(String currentFilePath) { - currentFileName = currentFilePath; - } - - public String getCurrentFileName() { - return currentFileName; - } - - public void unsetCurrentFileName() { - currentFileName = null; - } - - public void validationError(int line, int charPositionInLine, String msg) { - try { - setAtleastOneError(true); - // Print error messages with file name - if(currentFileName == null) { - LOG.error("line "+line+":"+charPositionInLine+" "+msg); - } - else { - String fileName = currentFileName; - LOG.error(fileName + " line "+line+":"+charPositionInLine+" "+msg); - } - } - catch(Exception e1) { - LOG.error("ERROR: while customizing error message:" + e1); - } - } - - public void validationWarning(int line, int charPositionInLine, String msg) { - try { - //atleastOneError = true; ---> not an error, just warning - // Print error messages with file name - if(currentFileName == null) - LOG.warn("line "+line+":"+charPositionInLine+" "+msg); - else { - String fileName = currentFileName; - LOG.warn(fileName + " line "+line+":"+charPositionInLine+" "+msg); - } - } - catch(Exception e1) { - LOG.warn("ERROR: while customizing error message:" + e1); - } - } - - @Override - public void syntaxError(Recognizer<?, ?> recognizer, Object offendingSymbol, - int line, int charPositionInLine, - String msg, RecognitionException e) - { - try { - setAtleastOneError(true); - // Print error messages with file name - if(currentFileName == null) - LOG.error("line "+line+":"+charPositionInLine+" "+msg); - else { - String fileName = currentFileName; - LOG.error(fileName + " line "+line+":"+charPositionInLine+" "+msg); - } - } - catch(Exception e1) { - LOG.error("ERROR: while customizing error message:" + e1); - } - } - - public boolean isAtleastOneError() { - return atleastOneError; - } - - public void setAtleastOneError(boolean atleastOneError) { - this.atleastOneError = atleastOneError; - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/45d56a58/src/main/java/org/apache/sysml/parser/dml/DMLParserWrapper.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/parser/dml/DMLParserWrapper.java b/src/main/java/org/apache/sysml/parser/dml/DMLParserWrapper.java index 7af95dd..6b9a238 100644 --- a/src/main/java/org/apache/sysml/parser/dml/DMLParserWrapper.java +++ b/src/main/java/org/apache/sysml/parser/dml/DMLParserWrapper.java @@ -43,7 +43,7 @@ import org.apache.sysml.parser.FunctionStatementBlock; import org.apache.sysml.parser.ImportStatement; import org.apache.sysml.parser.LanguageException; import org.apache.sysml.parser.ParseException; -import org.apache.sysml.parser.common.SyntacticErrorListener.CustomErrorListener; +import org.apache.sysml.parser.common.CustomErrorListener.CustomErrorListenerInner; import org.apache.sysml.parser.dml.DmlParser.FunctionStatementContext; import org.apache.sysml.parser.dml.DmlParser.ProgramrootContext; import org.apache.sysml.parser.dml.DmlParser.StatementContext; @@ -62,7 +62,7 @@ import org.apache.sysml.parser.dml.DmlParser.StatementContext; * * To separate logic of semantic validation, DmlSyntaticValidatorHelper contains functions that do semantic validation. Currently, there is no semantic validation as most of it is delegated to subsequent validation phase. * - * Whenever there is a parse error, it goes through SyntacticErrorListener. This allows us to pipe the error messages to any future pipeline as well as control the format in an elegant manner. + * Whenever there is a parse error, it goes through CustomErrorListener. This allows us to pipe the error messages to any future pipeline as well as control the format in an elegant manner. * There are three types of messages passed: * - Syntactic errors: When passed DML script doesnot conform to syntatic structure enforced by Dml.g4 * - Validation errors: Errors due to translation of AST to DMLProgram @@ -125,7 +125,7 @@ public class DMLParserWrapper extends AParserWrapper } ProgramrootContext ast = null; - CustomErrorListener errorListener = new CustomErrorListener(); + CustomErrorListenerInner errorListener = new CustomErrorListenerInner(); try { DmlLexer lexer = new DmlLexer(in); @@ -149,11 +149,11 @@ public class DMLParserWrapper extends AParserWrapper antlr4Parser.reset(); if(fileName != null) { errorListener.setCurrentFileName(fileName); - // SyntacticErrorListener.currentFileName.push(fileName); + // CustomErrorListener.currentFileName.push(fileName); } else { errorListener.setCurrentFileName("MAIN_SCRIPT"); - // SyntacticErrorListener.currentFileName.push("MAIN_SCRIPT"); + // CustomErrorListener.currentFileName.push("MAIN_SCRIPT"); } // Set our custom error listener antlr4Parser.addErrorListener(errorListener); http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/45d56a58/src/main/java/org/apache/sysml/parser/dml/DmlSyntacticValidator.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/parser/dml/DmlSyntacticValidator.java b/src/main/java/org/apache/sysml/parser/dml/DmlSyntacticValidator.java index 4def772..f3a297f 100644 --- a/src/main/java/org/apache/sysml/parser/dml/DmlSyntacticValidator.java +++ b/src/main/java/org/apache/sysml/parser/dml/DmlSyntacticValidator.java @@ -55,7 +55,7 @@ import org.apache.sysml.parser.Statement; import org.apache.sysml.parser.StatementBlock; import org.apache.sysml.parser.WhileStatement; import org.apache.sysml.parser.common.CommonSyntacticValidator; -import org.apache.sysml.parser.common.SyntacticErrorListener.CustomErrorListener; +import org.apache.sysml.parser.common.CustomErrorListener.CustomErrorListenerInner; import org.apache.sysml.parser.common.ExpressionInfo; import org.apache.sysml.parser.common.StatementInfo; import org.apache.sysml.parser.dml.DmlParser.AddSubExpressionContext; @@ -110,7 +110,7 @@ import org.apache.sysml.parser.dml.DmlParser.WhileStatementContext; public class DmlSyntacticValidator extends CommonSyntacticValidator implements DmlListener { - public DmlSyntacticValidator(CustomErrorListener errorListener, HashMap<String,String> argVals) { + public DmlSyntacticValidator(CustomErrorListenerInner errorListener, HashMap<String,String> argVals) { super(errorListener, argVals); } http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/45d56a58/src/main/java/org/apache/sysml/parser/pydml/PyDMLParserWrapper.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/parser/pydml/PyDMLParserWrapper.java b/src/main/java/org/apache/sysml/parser/pydml/PyDMLParserWrapper.java index 3d816d3..ad49b44 100644 --- a/src/main/java/org/apache/sysml/parser/pydml/PyDMLParserWrapper.java +++ b/src/main/java/org/apache/sysml/parser/pydml/PyDMLParserWrapper.java @@ -44,7 +44,7 @@ import org.apache.sysml.parser.ImportStatement; import org.apache.sysml.parser.LanguageException; import org.apache.sysml.parser.ParseException; import org.apache.sysml.parser.Statement; -import org.apache.sysml.parser.common.SyntacticErrorListener.CustomErrorListener; +import org.apache.sysml.parser.common.CustomErrorListener.CustomErrorListenerInner; import org.apache.sysml.parser.dml.DMLParserWrapper; import org.apache.sysml.parser.pydml.PydmlParser.FunctionStatementContext; import org.apache.sysml.parser.pydml.PydmlParser.ProgramrootContext; @@ -112,7 +112,7 @@ public class PyDMLParserWrapper extends AParserWrapper } ProgramrootContext ast = null; - CustomErrorListener errorListener = new CustomErrorListener(); + CustomErrorListenerInner errorListener = new CustomErrorListenerInner(); try { PydmlLexer lexer = new PydmlLexer(in); http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/45d56a58/src/main/java/org/apache/sysml/parser/pydml/PydmlSyntacticValidator.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/parser/pydml/PydmlSyntacticValidator.java b/src/main/java/org/apache/sysml/parser/pydml/PydmlSyntacticValidator.java index 7baae7a..a2a0995 100644 --- a/src/main/java/org/apache/sysml/parser/pydml/PydmlSyntacticValidator.java +++ b/src/main/java/org/apache/sysml/parser/pydml/PydmlSyntacticValidator.java @@ -58,7 +58,7 @@ import org.apache.sysml.parser.StatementBlock; import org.apache.sysml.parser.StringIdentifier; import org.apache.sysml.parser.WhileStatement; import org.apache.sysml.parser.common.CommonSyntacticValidator; -import org.apache.sysml.parser.common.SyntacticErrorListener.CustomErrorListener; +import org.apache.sysml.parser.common.CustomErrorListener.CustomErrorListenerInner; import org.apache.sysml.parser.common.ExpressionInfo; import org.apache.sysml.parser.common.StatementInfo; import org.apache.sysml.parser.dml.DmlParser.MatrixMulExpressionContext; @@ -118,7 +118,7 @@ import org.apache.sysml.parser.pydml.PydmlParser.WhileStatementContext; */ public class PydmlSyntacticValidator extends CommonSyntacticValidator implements PydmlListener { - public PydmlSyntacticValidator(CustomErrorListener errorListener, HashMap<String,String> argVals) { + public PydmlSyntacticValidator(CustomErrorListenerInner errorListener, HashMap<String,String> argVals) { super(errorListener, argVals); }
