Java tutorial
/* * ------------------------------------------------------------------- * * Copyright (c) 2013 Dave Parfitt * * This file is provided 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 com.metadave.etp; import com.metadave.etp.rep.ETPTerm; import org.antlr.v4.runtime.ANTLRInputStream; import org.antlr.v4.runtime.CommonTokenStream; import org.antlr.v4.runtime.RecognitionException; import org.antlr.v4.runtime.tree.ParseTreeWalker; import java.io.IOException; import java.io.InputStream; import java.util.List; public class ETP { public static ETPTerm parse(String s) throws ParseException { ANTLRInputStream input = new ANTLRInputStream(s); ETPLexer lexer = new ETPLexer(input); CommonTokenStream tokens = new CommonTokenStream(lexer); ETPParser parser = new ETPParser(tokens); parser.removeErrorListeners(); parser.addErrorListener(new ETPErrorListener()); ETPWalker ew = new ETPWalker(tokens); ParseTreeWalker walker = new ParseTreeWalker(); ETPTerm<?> term = null; ETPParser.Etp_termContext t = null; try { t = parser.etp_term(); walker.walk(ew, t); } catch (Throwable e) { throw new ParseException("ETP parse error", e); } term = (ETPTerm<?>) ew.getValue(t); return term; } public static ETPTerm parse(InputStream is) throws IOException, ParseException { ANTLRInputStream input = new ANTLRInputStream(is); ETPLexer lexer = new ETPLexer(input); CommonTokenStream tokens = new CommonTokenStream(lexer); ETPParser parser = new ETPParser(tokens); parser.removeErrorListeners(); parser.addErrorListener(new ETPErrorListener()); ETPWalker ew = new ETPWalker(tokens); ParseTreeWalker walker = new ParseTreeWalker(); ETPTerm<?> term = null; ETPParser.Etp_termContext t = null; try { t = parser.etp_term(); walker.walk(ew, t); } catch (Throwable e) { throw new ParseException("ETP parse error", e); } term = (ETPTerm<?>) ew.getValue(t); return term; } public static List<ETPTerm> parseMulti(String s) throws ParseException { ANTLRInputStream input = new ANTLRInputStream(s); ETPLexer lexer = new ETPLexer(input); CommonTokenStream tokens = new CommonTokenStream(lexer); ETPParser parser = new ETPParser(tokens); parser.removeErrorListeners(); parser.addErrorListener(new ETPErrorListener()); ETPWalker ew = new ETPWalker(tokens); ParseTreeWalker walker = new ParseTreeWalker(); List<ETPTerm> terms = null; ETPParser.Etp_termsContext t = null; try { t = parser.etp_terms(); walker.walk(ew, t); } catch (Throwable e) { throw new ParseException("ETP parse error", e); } terms = (List<ETPTerm>) ew.getValue(t); return terms; } public static List<ETPTerm> parseMulti(InputStream is) throws IOException, ParseException { ANTLRInputStream input = new ANTLRInputStream(is); ETPLexer lexer = new ETPLexer(input); CommonTokenStream tokens = new CommonTokenStream(lexer); ETPParser parser = new ETPParser(tokens); parser.removeErrorListeners(); parser.addErrorListener(new ETPErrorListener()); ETPWalker ew = new ETPWalker(tokens); ParseTreeWalker walker = new ParseTreeWalker(); List<ETPTerm> terms = null; ETPParser.Etp_termsContext t = null; try { t = parser.etp_terms(); walker.walk(ew, t); } catch (Throwable e) { throw new ParseException("ETP parse error", e); } terms = (List<ETPTerm>) ew.getValue(t); return terms; } public static class ParseException extends Exception { public ParseException(String message, Throwable cause) { super(message, cause); } } }