List of usage examples for org.antlr.v4.runtime CommonTokenStream CommonTokenStream
public CommonTokenStream(TokenSource tokenSource)
From source file:edu.clemson.cs.rsrg.init.Controller.java
License:Open Source License
/** * <p>This method uses the {@link ResolveFile} provided * to construct a parser and create an ANTLR4 module AST.</p> * * @param file The RESOLVE file that we are going to compile. * * @return The inner representation for a module. See {@link ModuleDec}. * * @throws MiscErrorException Some how we couldn't instantiate an {@link CharStream}. * @throws SourceErrorException There are errors in the source file. *///w w w . j a v a 2 s. com private ModuleDec createModuleAST(ResolveFile file) { CharStream input = file.getInputStream(); if (input == null) { throw new MiscErrorException("CharStream null", new IllegalArgumentException()); } // Create a RESOLVE language lexer ResolveLexer lexer = new ResolveLexer(input); ResolveTokenFactory factory = new ResolveTokenFactory(file); lexer.removeErrorListeners(); lexer.addErrorListener(myAntlrLexerErrorListener); lexer.setTokenFactory(factory); // Create a RESOLVE language parser CommonTokenStream tokens = new CommonTokenStream(lexer); ResolveParser parser = new ResolveParser(tokens); parser.removeErrorListeners(); parser.addErrorListener(myAntlrParserErrorListener); parser.setTokenFactory(factory); // Two-Stage Parsing // Reason: We might not need the full power of LL. // The solution proposed by the ANTLR folks (found here: // https://github.com/antlr/antlr4/blob/master/doc/faq/general.md) // is to use SLL prediction mode first and switch to LL if it fails. ParserRuleContext rootModuleCtx; parser.getInterpreter().setPredictionMode(PredictionMode.SLL); try { rootModuleCtx = parser.module(); } catch (Exception ex) { tokens.seek(0); parser.reset(); parser.getInterpreter().setPredictionMode(PredictionMode.LL); rootModuleCtx = parser.module(); } // Check for any parsing errors int numParserErrors = parser.getNumberOfSyntaxErrors(); if (numParserErrors != 0) { throw new MiscErrorException("Found " + numParserErrors + " errors while parsing " + file.toString(), new IllegalStateException()); } // Build the intermediate representation TreeBuildingListener v = new TreeBuildingListener(file, myCompileEnvironment.getTypeGraph()); ParseTreeWalker.DEFAULT.walk(v, rootModuleCtx); return v.getModule(); }
From source file:edu.cmu.cs.vbc.prog.checkstyle.checks.javadoc.AbstractJavadocCheck.java
License:Open Source License
/** * Parses block comment content as javadoc comment. * @param blockComment/*www .j av a 2 s . com*/ * block comment content. * @return parse tree * @throws IOException * errors in ANTLRInputStream */ private ParseTree parseJavadocAsParseTree(String blockComment) throws IOException { final Charset utf8Charset = Charset.forName("UTF-8"); final InputStream in = new ByteArrayInputStream(blockComment.getBytes(utf8Charset)); final ANTLRInputStream input = new ANTLRInputStream(in); final JavadocLexer lexer = new JavadocLexer(input); // remove default error listeners lexer.removeErrorListeners(); // add custom error listener that logs parsing errors lexer.addErrorListener(errorListener); final CommonTokenStream tokens = new CommonTokenStream(lexer); final JavadocParser parser = new JavadocParser(tokens); // remove default error listeners parser.removeErrorListeners(); // add custom error listener that logs syntax errors parser.addErrorListener(errorListener); // This strategy stops parsing when parser error occurs. // By default it uses Error Recover Strategy which is slow and useless. parser.setErrorHandler(new BailErrorStrategy()); return parser.javadoc(); }
From source file:edu.iastate.cs.boa.ui.errors.FetchCompilerError.java
License:Apache License
protected CommonTokenStream lex(final String input, final int[] ids, final String[] strings, final String[] errors) throws IOException { lexer = new BoaLexer(new ANTLRInputStream(new StringReader(input))); lexer.removeErrorListeners();//from w w w .ja va2s .c om lexer.addErrorListener(new BaseErrorListener() { @Override public void syntaxError(final Recognizer<?, ?> recognizer, final Object offendingSymbol, final int line, final int charPositionInLine, final String msg, final RecognitionException e) { error("lexer", (BoaLexer) recognizer, offendingSymbol, line, charPositionInLine, 1, msg, e); } }); final CommonTokenStream tokens = new CommonTokenStream(lexer); tokens.fill(); return tokens; }
From source file:edu.odu.cs.cs350.yellow1.mutationgeneration.CFile.java
License:Open Source License
private boolean applyTokenTransformation(String original, String by, String operation) throws Exception { ANTLRInputStream input = new ANTLRInputStream(fileContents.toString()); CLexer lexer = new CLexer(input); CommonTokenStream tokens = new CommonTokenStream(lexer); CParser parser = new CParser(tokens); ParseTree tree = parser.compilationUnit(); ParseTreeWalker walker = new ParseTreeWalker(); // create standard for (Integer i = 0; i < tokens.size(); i++) { System.out.println("Tokens: " + tokens.get(i).getText().toString()); if (tokens.get(i).getText().toString().equals(original)) { String s1 = ((Integer) tokens.get(i).getStartIndex()).toString(); String s2 = ((Integer) tokens.get(i).getStopIndex()).toString(); String uniqId = operation; uniqId = uniqId.concat(s1).concat(s2); String newName = fileContents.toString(); if (mutationsAppliedContains(uniqId) < 0) { newName = newName.substring(0, tokens.get(i).getStartIndex()) + by + newName.substring(tokens.get(i).getStopIndex() + by.length()); writeMutation(this.fileName + "." + uniqId, newName); this.addToApplied(uniqId); }/*from www .ja v a 2 s . co m*/ } } return true; }
From source file:edu.odu.cs.cs350.yellow1.mutationgeneration.JavaFile.java
License:Open Source License
/** * change tokens and add the mutuant cases to the mutant case vector * // w w w . j a va 2 s. c o m * @param originalthe * original token * * @param by * the replacement token * * @param operation * the operation name * * * it is acceptable int y = +10; to be converted to int y = /10; * because it will make the mutant project compilation fail and * this mutation will be discarded because the compilation has * failed * * */ private boolean applyTokenTransformation(String original, String by, String operation) throws Exception { ANTLRInputStream input = new ANTLRInputStream(fileContents.toString()); JavaLexer lexer = new JavaLexer(input); CommonTokenStream tokens = new CommonTokenStream(lexer); JavaParser parser = new JavaParser(tokens); ParseTree tree = parser.compilationUnit(); TokenRewriteStream trs = new TokenRewriteStream(); ParseTreeWalker walker = new ParseTreeWalker(); // create standard for (Integer i = 0; i < tokens.size(); i++) { if (tokens.get(i).getText().toString().equals(original)) { int startIndex = tokens.get(i).getStartIndex(); int stopIndex = tokens.get(i).getStopIndex() + 1; mvc.add(startIndex, stopIndex, by); } } return true; }
From source file:edu.odu.cs.cs350.yellow1.mutationgeneration.JavaFile.java
License:Open Source License
/** * @param blockstart/* w w w.ja v a 2 s .c o m*/ * accepts if or while * * @param set * accepts true or false * * Replaces the condition after [blockstart] by [set] */ private void applyConditionTransformation(String blockstart, String set) { int lparen = 0; int rparen = 0; int startIndex = -1; int stopIndex = -1; boolean ifLock = false; ANTLRInputStream input = new ANTLRInputStream(fileContents.toString()); JavaLexer lexer = new JavaLexer(input); CommonTokenStream tokens = new CommonTokenStream(lexer); JavaParser parser = new JavaParser(tokens); ParseTree tree = parser.compilationUnit(); ParseTreeWalker walker = new ParseTreeWalker(); // create standard for (Integer i = 0; i < tokens.size(); i++) { if (tokens.get(i).getText().toString().equals(blockstart)) { ifLock = true; } if (ifLock == true && tokens.get(i).getText().toString().equals("(")) { lparen++; if (startIndex == -1) startIndex = tokens.get(i).getStartIndex(); } if (ifLock == true && tokens.get(i).getText().toString().equals(")")) { rparen++; } if (lparen != 0 && rparen != 0 && lparen == rparen && ifLock == true) { ifLock = false; lparen = 0; rparen = 0; stopIndex = tokens.get(i).getStopIndex() + 1; String by = "(" + set + ")"; this.mvc.add(startIndex, stopIndex, by); startIndex = -1; stopIndex = -1; } } }
From source file:edu.odu.cs.cs350.yellow1.mutationgeneration.JavaFile.java
License:Open Source License
private void constantOperations(String required) { ANTLRInputStream input = new ANTLRInputStream(fileContents.toString()); JavaLexer lexer = new JavaLexer(input); CommonTokenStream tokens = new CommonTokenStream(lexer); JavaParser parser = new JavaParser(tokens); ParseTree tree = parser.compilationUnit(); TokenRewriteStream trs = new TokenRewriteStream(); ParseTreeWalker walker = new ParseTreeWalker(); // create standard for (Integer i = 0; i < tokens.size(); i++) { if (NumberUtils.isNumber(tokens.get(i).getText().toString())) { int startIndex = tokens.get(i).getStartIndex(); int stopIndex = tokens.get(i).getStopIndex() + 1; String by = fileContents.substring(startIndex, stopIndex) + required; mvc.add(startIndex, stopIndex, by); }/*from w w w . j a v a 2 s. co m*/ } }
From source file:edu.psu.swe.scim.spec.protocol.data.PatchOperationPath.java
License:Apache License
protected void parsePatchPath(String patchPath) throws FilterParseException { FilterLexer l = new FilterLexer(new ANTLRInputStream(patchPath)); FilterParser p = new FilterParser(new CommonTokenStream(l)); p.setBuildParseTree(true);/*w w w .ja v a 2 s. c o m*/ p.addErrorListener(new BaseErrorListener() { @Override public void syntaxError(Recognizer<?, ?> recognizer, Object offendingSymbol, int line, int charPositionInLine, String msg, RecognitionException e) { throw new IllegalStateException("failed to parse at line " + line + " due to " + msg, e); } }); try { ParseTree tree = p.patchPath(); PatchPathListener patchPathListener = new PatchPathListener(); ParseTreeWalker.DEFAULT.walk(patchPathListener, tree); this.valuePathExpression = patchPathListener.getValuePathExpression(); } catch (IllegalStateException e) { throw new FilterParseException(e); } }
From source file:edu.psu.swe.scim.spec.protocol.search.Filter.java
License:Apache License
protected FilterExpression parseFilter(String filter) throws FilterParseException { FilterLexer l = new FilterLexer(new ANTLRInputStream(filter)); FilterParser p = new FilterParser(new CommonTokenStream(l)); p.setBuildParseTree(true);/*from w w w .ja v a2 s .com*/ p.addErrorListener(new BaseErrorListener() { @Override public void syntaxError(Recognizer<?, ?> recognizer, Object offendingSymbol, int line, int charPositionInLine, String msg, RecognitionException e) { throw new IllegalStateException( "failed to parse at line " + line + ":" + charPositionInLine + " due to " + msg, e); } }); try { ParseTree tree = p.filter(); ExpressionBuildingListener expListener = new ExpressionBuildingListener(); ParseTreeWalker.DEFAULT.walk(expListener, tree); return expListener.getFilterExpression(); } catch (IllegalStateException e) { throw new FilterParseException("Failed to parse filter: " + filter, e); } }
From source file:edu.psu.swe.scim.spec.resources.PhoneNumber.java
License:Apache License
public void setValue(String value) throws PhoneNumberParseException { if (value == null) { throw new PhoneNumberParseException("null values are illegal for phone numbers"); }// w w w . j a va 2s.c o m if (strict) { PhoneNumberLexer phoneNumberLexer = new PhoneNumberLexer(new ANTLRInputStream(value)); PhoneNumberParser p = new PhoneNumberParser(new CommonTokenStream(phoneNumberLexer)); p.setBuildParseTree(true); p.addErrorListener(new BaseErrorListener() { @Override public void syntaxError(Recognizer<?, ?> recognizer, Object offendingSymbol, int line, int charPositionInLine, String msg, RecognitionException e) { throw new IllegalStateException("failed to parse at line " + line + " due to " + msg, e); } }); PhoneNumberParseTreeListener tpl = new PhoneNumberParseTreeListener(); try { ParseTree tree = p.phoneNumber(); ParseTreeWalker.DEFAULT.walk(tpl, tree); } catch (IllegalStateException e) { throw new PhoneNumberParseException(e); } PhoneNumber parsedPhoneNumber = tpl.getPhoneNumber(); this.value = parsedPhoneNumber.getValue(); this.number = parsedPhoneNumber.getNumber(); this.extension = parsedPhoneNumber.getExtension(); this.subAddress = parsedPhoneNumber.getSubAddress(); this.phoneContext = parsedPhoneNumber.getPhoneContext(); this.params = parsedPhoneNumber.getParams(); this.isGlobalNumber = parsedPhoneNumber.isGlobalNumber(); this.isDomainPhoneContext = parsedPhoneNumber.isDomainPhoneContext(); } else { this.value = value; } }