List of usage examples for org.antlr.v4.runtime CommonTokenStream getTokens
public List<Token> getTokens()
From source file:controle.analiseTexto.AnalisePeriodo.java
public static ArrayList<String> etiquetarDescricaoFuncionalidadeIntellisense(CommonTokenStream tokens) { String verbos = "#dever#poder#"; etiquetasSentenca = ""; ultimaPalavraSentenca = tokens.getTokens().get(tokens.getTokens().size() - 2).getText(); for (int i = 0; i < tokens.getTokens().size() - 1; i++) { //Deteco e atribuio das etiquetas aos seus respectivos tokens String palavraEtiquetada = tokens.getTokens().get(i).getText().toLowerCase(); String lemma = ""; try {/*from w ww.j a v a 2 s .c o m*/ lemma = tagger.getLemma(palavraEtiquetada); } catch (Exception e) { // System.out.println("erro em: " + palavraEtiquetada); e.printStackTrace(); } switch (tagger.getHashEtiquetas().get(palavraEtiquetada).charAt(0)) { case 'V': String verbo = tokens.getTokens().get(i).getText().toLowerCase(); verbo = Etiquetador.lemmas.get(verbo.toLowerCase()); if (verbo.toLowerCase().equals("permitir")) { ((CommonToken) tokens.getTokens().get(i)).setType(IntellisenseGrammarParser.PERMITIR); etiquetasSentenca = etiquetasSentenca + "PERMITIR"; //System.out.print(palavraEtiquetada + ":" + "PERMITIR "); } else { if (verbos.contains(verbo.toLowerCase())) { ((CommonToken) tokens.getTokens().get(i)).setType(IntellisenseGrammarParser.DEVE); etiquetasSentenca = etiquetasSentenca + "DEVE"; //System.out.print(palavraEtiquetada + ":" + "DEVE "); } else { ((CommonToken) tokens.getTokens().get(i)).setType(IntellisenseGrammarParser.VERB); etiquetasSentenca = etiquetasSentenca + "VERB"; //System.out.print(palavraEtiquetada + ":" + "VERB "); } } break; case 'N': if (tokens.getTokens().get(i).getText().toLowerCase().equals("sistema") && i <= 2) { ((CommonToken) tokens.getTokens().get(i)).setType(IntellisenseGrammarParser.SISTEMA); etiquetasSentenca = etiquetasSentenca + "SISTEMA"; //System.out.print(palavraEtiquetada + ":" + "SISTEMA "); } else { ((CommonToken) tokens.getTokens().get(i)).setType(IntellisenseGrammarParser.SUBS); etiquetasSentenca = etiquetasSentenca + "SUBS"; //System.out.print(palavraEtiquetada + ":" + "SUBS "); } break; case 'D': ((CommonToken) tokens.getTokens().get(i)).setType(IntellisenseGrammarParser.ART); //System.out.print(palavraEtiquetada + ":" + "ART "); break; case 'P': ((CommonToken) tokens.getTokens().get(i)).setType(IntellisenseGrammarParser.PRON); //System.out.print(palavraEtiquetada + ":" + "PRON "); break; case 'S': ((CommonToken) tokens.getTokens().get(i)).setType(IntellisenseGrammarParser.PREP); //System.out.print(palavraEtiquetada + ":" + "PREP "); break; case 'A': ((CommonToken) tokens.getTokens().get(i)).setType(IntellisenseGrammarParser.ADJ); //System.out.print(palavraEtiquetada + ":" + "ADJ "); break; case 'Z': ((CommonToken) tokens.getTokens().get(i)).setType(IntellisenseGrammarParser.NUM); //System.out.print(palavraEtiquetada + ":" + "NUM "); break; case 'C': ((CommonToken) tokens.getTokens().get(i)).setType(IntellisenseGrammarParser.CONJ); //System.out.print(palavraEtiquetada + ":" + "CONJ "); break; case 'F': try { if (tagger.getHashEtiquetas().get(palavraEtiquetada).charAt(1) == 'c') { ((CommonToken) tokens.getTokens().get(i)).setType(IntellisenseGrammarParser.SEPARADOR); //System.out.print(palavraEtiquetada + ":" + "SEPARADOR "); } else if (tagger.getHashEtiquetas().get(palavraEtiquetada).charAt(1) == 'd') { } else { if (tokens.getTokens().get(i).getText().toLowerCase().equals(".")) { ((CommonToken) tokens.getTokens().get(i)).setType(IntellisenseGrammarParser.PONTO); //System.out.print(palavraEtiquetada + ":" + "PONTO "); } else { ((CommonToken) tokens.getTokens().get(i)).setType(IntellisenseGrammarParser.SIMBOLOS); //System.out.print(palavraEtiquetada + ":" + "SIMBOLOS "); } } } catch (Exception e) { ((CommonToken) tokens.getTokens().get(i)).setType(IntellisenseGrammarParser.PALAVRAESTRANGEIRA); //System.out.print(palavraEtiquetada + ":" + "PALAVRAESTRANGEIRA "); } break; case 'R': ((CommonToken) tokens.getTokens().get(i)).setType(IntellisenseGrammarParser.ADV); //System.out.print(palavraEtiquetada + ":" + "ADV "); break; } } return (ArrayList<String>) tagger.getEtiquetas(); }
From source file:controle.analiseTexto.AnalisePeriodo.java
public static ArrayList<String> etiquetarUC(CommonTokenStream tokens) { int iniciouSetras = -1; int inicio = -1; int fim = -1; int aspas = 0; boolean frasePara = false; boolean fraseEnquanto = false; String palavraAnterior = ""; ultimaPalavraSentenca = tokens.getTokens().get(tokens.getTokens().size() - 2).getText(); for (int i = 0; i < tokens.getTokens().size() - 1; i++) { //Deteco e atribuio das etiquetas aos seus respectivos tokens String palavraEtiquetada = tokens.getTokens().get(i).getText().toLowerCase(); String lemma = ""; try {/*from w ww.j a v a2 s. co m*/ lemma = tagger.getLemma(palavraEtiquetada); } catch (Exception e) { //System.out.println("erro em: " + palavraEtiquetada); e.printStackTrace(); } if (Character.isDigit(palavraEtiquetada.charAt(0))) { ((CommonToken) tokens.getTokens().get(i)).setType(UCGrammarParser.NUMERO); } else { iniciouSetras++; if (i >= inicio && i <= fim) { ((CommonToken) tokens.getTokens().get(i)).setType(UCGrammarParser.PALAVRASRESERVADAS); palavraAnterior = tokens.getTokens().get(i).getText().toLowerCase(); continue; } if (palavraEtiquetada.equals("\"")) { ((CommonToken) tokens.getTokens().get(i)).setType(UCGrammarParser.ASPAS); aspas = aspas == 0 ? 1 : 0; continue; } if (aspas == 1) { ((CommonToken) tokens.getTokens().get(i)).setType(UCGrammarParser.PALAVRA); continue; } switch (tagger.getHashEtiquetas().get(palavraEtiquetada).charAt(0)) { case 'V': ((CommonToken) tokens.getTokens().get(i)).setType(UCGrammarParser.VERB); if (Constante.SUBSTANTIVADOR.contains("#" + palavraAnterior + "#")) { ((CommonToken) tokens.getTokens().get(i)).setType(UCGrammarParser.SUBS); } else { int numeroDePalavrasResevardas = ehPalavraReservada(tokens.getTokens(), i + 1); if (numeroDePalavrasResevardas > 0) { inicio = i + 1; fim = i + numeroDePalavrasResevardas; } else { inicio = -1; fim = -1; } } break; case 'N': ((CommonToken) tokens.getTokens().get(i)).setType(UCGrammarParser.SUBS); if (frasePara && (Etiquetador.hashVerboParticipio.get(palavraEtiquetada) != null || Etiquetador.hashVerboGerundio.get(palavraEtiquetada) != null)) { ((CommonToken) tokens.getTokens().get(i)).setType(UCGrammarParser.VERB); } break; case 'D': ((CommonToken) tokens.getTokens().get(i)).setType(UCGrammarParser.ART); // if (iniciouSetras == 1 && palavraEtiquetada.toLowerCase().equals("cada")) { // ((CommonToken) tokens.getTokens().get(i)).setType(UCGrammarParser.CADA); // } break; case 'P': ((CommonToken) tokens.getTokens().get(i)).setType(UCGrammarParser.PRON); if (iniciouSetras == 0 && palavraEtiquetada.toLowerCase().equals("se")) { ((CommonToken) tokens.getTokens().get(i)).setType(UCGrammarParser.SE); } break; case 'S': ((CommonToken) tokens.getTokens().get(i)).setType(UCGrammarParser.PREP); if (iniciouSetras == 0 && palavraEtiquetada.toLowerCase().equals("para")) { ((CommonToken) tokens.getTokens().get(i)).setType(UCGrammarParser.PARA); frasePara = true; } break; case 'A': ((CommonToken) tokens.getTokens().get(i)).setType(UCGrammarParser.ADJ); if (Constante.COMPARADOR.contains(tokens.getTokens().get(i).getText().toLowerCase())) { // ((CommonToken) tokens.getTokens().get(i)).setType(UCGrammarParser.COMPARADOR); } break; case 'Z': ((CommonToken) tokens.getTokens().get(i)).setType(UCGrammarParser.NUM); break; case 'C': if (Constante.CONJUNCAO.contains(tokens.getTokens().get(i).getText().toLowerCase())) { ((CommonToken) tokens.getTokens().get(i)).setType(UCGrammarParser.CONJUNCAO); } else if (tokens.getTokens().get(i).getText().toLowerCase().equals("se")) { ((CommonToken) tokens.getTokens().get(i)).setType(UCGrammarParser.SE); } else { if (Constante.COMPARADOR.contains(tokens.getTokens().get(i - 1).getText().toLowerCase())) { // ((CommonToken) tokens.getTokens().get(i)).setType(UCGrammarParser.QUE); } else { ((CommonToken) tokens.getTokens().get(i)).setType(UCGrammarParser.CONJ); } } break; case 'F': try { if (tokens.getTokens().get(i).getText().toLowerCase().equals(".")) { ((CommonToken) tokens.getTokens().get(i)).setType(UCGrammarParser.PONTO); iniciouSetras--; } else { if (tokens.getTokens().get(i).getText().toLowerCase().equals(",")) { ((CommonToken) tokens.getTokens().get(i)).setType(UCGrammarParser.VIRGULA); } else { if (tagger.getEtiquetas().get(i).charAt(1) == 'c' || tagger.getEtiquetas().get(i).charAt(1) == 'p') { ((CommonToken) tokens.getTokens().get(i)).setType(UCGrammarParser.TERMINAL); } else if (tagger.getEtiquetas().get(i).charAt(1) == 'd') { } else { ((CommonToken) tokens.getTokens().get(i)).setType(UCGrammarParser.SIMBOLOS); } } } } catch (Exception e) { ((CommonToken) tokens.getTokens().get(i)).setType(UCGrammarParser.PALAVRAESTRANGEIRA); } break; case 'R': if (tokens.getTokens().get(i).getText().toLowerCase().equals("ento")) { ((CommonToken) tokens.getTokens().get(i)).setType(UCGrammarParser.ENTAO); } else { if (tokens.getTokens().get(i).getText().toLowerCase().equals("seno")) { ((CommonToken) tokens.getTokens().get(i)).setType(UCGrammarParser.SENAO); } else if (iniciouSetras == 0 && palavraEtiquetada.toLowerCase().equals("enquanto")) { ((CommonToken) tokens.getTokens().get(i)).setType(UCGrammarParser.ENQUANTO); fraseEnquanto = true; } else if (Constante.SUBSTANTIVADOR.contains("#" + palavraAnterior + "#")) { ((CommonToken) tokens.getTokens().get(i)).setType(UCGrammarParser.SUBS); } else { ((CommonToken) tokens.getTokens().get(i)).setType(UCGrammarParser.ADV); } } break; } //Case } //if chaAt palavraAnterior = tokens.getTokens().get(i).getText().toLowerCase(); } return (ArrayList<String>) tagger.getEtiquetas(); }
From source file:controle.dicionario.Dicionario.java
private void analisaAssunto(String nomeArquivo, String texto) throws Exception { //ArrayList<String> tags = null; ArrayList<String> tagsMorf = null; CommonTokenStream tokensMorf = null; CommonTokenStream tokens = null; Referencia referenciaBanco = referenciasHash.get(nomeArquivo); referenciaBanco.setQtd(0);//from www .j av a 2 s. c o m referenciaDAO.atualiza(referenciaBanco); this.nomeArquivo = nomeArquivo; SrsGrammarLexer lexer = new SrsGrammarLexer(new ANTLRInputStream(texto)); tokens = new CommonTokenStream(lexer); SrsGrammarParser parser = new SrsGrammarParser(tokens); System.out.println(tokens.getText()); analisePeriodo = new AnalisePeriodo(texto); SrsGrammarLexer lexerMorf = new SrsGrammarLexer(new ANTLRInputStream(texto)); tokensMorf = new CommonTokenStream(lexerMorf); System.out.println(tokensMorf.getText()); tagsMorf = etiquetar(tokensMorf); try { Sigla sigla = new Sigla(); siglas.putAll(sigla.reconheceSiglas(tokens)); } catch (Exception e) { e.printStackTrace(); } Iterator it1 = tokens.getTokens().iterator(); CommonToken ob = null; int qtdPalavrasRelevantes = 0; int qtdRadicais = 0; while (it1.hasNext()) { ob = (CommonToken) it1.next(); //Retirando o caractere '-' do inicio da palavra if (ob.getText().length() > 1 && ob.getText().charAt(0) == '-') { ob.setText(ob.getText().substring(1)); } //Retirando o caractere '-' do fim da palavra if (ob.getText().length() > 1 && (ob.getText().charAt(ob.getText().length() - 1) == '-')) { ob.setText(ob.getText().substring(0, ob.getText().length() - 2)); } String palavra = ob.getText().toLowerCase(); String palavraLemmaa = ob.getText(); //Filtrando as palavras relevantes do texto if ((ob.getType() == SrsGrammarLexer.PALAVRA) && (ob.getText().length() > 4) && stopWordsHash.get(palavra) == null && !ehTudoIgual(palavra)) { qtdPalavrasRelevantes++; String radical; //Recuperando radical da palavra //Obtem radical utilizando o PTStemmer radical = getRadicalPTStemmer(palavra); String lemma; //Obtem lemma utilizando o TreeTagger // lemma = AnalisePeriodo.tagger.getLemma(palavraLemmaa); lemma = AnalisePeriodo.recuperaLemma(palavraLemmaa); palavraLemma.put(palavraLemmaa, lemma); Lemma lemmaBanco = new Lemma(null, lemma); Radical radicalBanco = new Radical(null, radical); Palavra palavraBanco = new Palavra(null, palavra, lemmaBanco, radicalBanco); if (!palavrasHash.containsKey(palavra)) { palavrasHash.put(palavra, palavraBanco); } if (!radicaisHash.containsKey(radical)) { radicaisHash.put(radical, radicalBanco); } if (!lemmaHash.containsKey(lemma)) { lemmaHash.put(lemma, lemmaBanco); } Dados dadosBanco = new Dados(); dadosBanco.setF(1); dadosBanco.setIdPalavra(palavraBanco); dadosBanco.setIdRadical(radicalBanco); dadosBanco.setIdReferencia(referenciaBanco); dadosBanco.setIdProjeto(projetoSelecionado); String chaveDados = projetoSelecionado.getId() + referenciaBanco.getId() + radical + palavra; if (!dadosHash.containsKey(chaveDados)) { dadosHash.put(chaveDados, dadosBanco); palavraBanco = palavrasHash.get(palavra); dadosBanco.setQtdDoc(dadosBanco.getQtdDoc() + 1); } else { Integer i = dadosHash.get(chaveDados).getF() + 1; dadosBanco.setF(i); dadosBanco.setQtdDoc(1); dadosHash.replace(chaveDados, dadosBanco); } DadoRadical dadoRadicalBanco = new DadoRadical(); dadoRadicalBanco.setF(1); dadoRadicalBanco.setIdRadical(radicalBanco); dadoRadicalBanco.setIdReferencia(referenciaBanco); dadoRadicalBanco.setIdProjeto(projetoSelecionado); String chaveDadoRadical = projetoSelecionado.getId() + referenciaBanco.getId() + radical; if (!dadoRadicalHash.containsKey(chaveDadoRadical)) { dadoRadicalHash.put(chaveDadoRadical, dadoRadicalBanco); radicalBanco = radicaisHash.get(radical); dadoRadicalBanco.setQtdDoc(dadoRadicalBanco.getQtdDoc() + 1); } else { Integer i = dadoRadicalHash.get(chaveDadoRadical).getF() + 1; dadoRadicalBanco.setF(i); dadoRadicalBanco.setQtdDoc(1); dadoRadicalHash.replace(chaveDadoRadical, dadoRadicalBanco); } } } referenciaBanco.setQtdRelevante(qtdPalavrasRelevantes); referenciaBanco.setPercRelevante(((float) qtdPalavrasRelevantes / tokens.size()) * 100); referenciaDAO.atualiza(referenciaBanco); tagsMorf = etiquetar(tokensMorf); ParseTree tree; tree = parser.init(); oracoes = parser.oracoes; ArrayList<String> oracoes1 = new ArrayList<>(); for (String oracao : oracoes) { if (!oracao.equals("\n")) { oracoes1.add(oracao); } } parser.oracoes.clear(); parser.oracoes.addAll(oracoes1); addAbreviatura(); }
From source file:controle.dicionario.Dicionario.java
private ArrayList<String> etiquetar(CommonTokenStream tokens) { ArrayList<String> temp; ArrayList<String> sTokens = new ArrayList<>(); ArrayList<String> simbolos = new ArrayList<>(); temp = analisePeriodo.etiquetar(tokens); for (int i = 0; i < tokens.getTokens().size() - 1; i++) { int typeToken = ((CommonToken) tokens.getTokens().get(i)).getType(); String sToken = ((CommonToken) tokens.getTokens().get(i)).getText(); try {// w w w .j a va2 s . co m ClasseGramatical classeGramatical = classeGramaticalHash.get(typeToken); if (classeGramatical == null) { classeGramatical = classeGramaticalDAO.buscaPorId(11); } palavrasHash.get(sToken.toLowerCase()).setIdClasseGramatical(classeGramatical); } catch (Exception e) { } } return temp; }
From source file:es.ucm.fdi.ac.parser.AntlrTokenizer.java
License:Open Source License
public void tokenize(String source, String sourceFile, PrintWriter out) { Writer debugWriter = null;// w w w .ja va 2 s. c o m try { Lexer lexer = (Lexer) language.lexerConstructor.newInstance(new ANTLRInputStream(source)); final CommonTokenStream tokens = new CommonTokenStream(lexer); tokens.fill(); if (log.isDebugEnabled()) { try { debugWriter = new BufferedWriter( new FileWriter(Files.createTempFile("tokens-" + NDC.get() + "-", ".txt").toFile())); } catch (IOException ioe) { log.warn("Could not create debugWriter", ioe); } } for (final Token tok : tokens.getTokens()) { out.print(tokenToString(tok)); if (log.isDebugEnabled()) { log.debug(tok); if (debugWriter != null) { debugWriter.write(tokenToString(tok)); } } } if (parse) { Parser parser = (Parser) language.parserConstructor.newInstance(tokens); parser.setErrorHandler(new BailErrorStrategy()); ParserRuleContext parserRuleContext = (ParserRuleContext) language.parserMethod.invoke(parser); if (log.isDebugEnabled()) { log.debug(Trees.toStringTree(parserRuleContext, parser)); } } } catch (Exception e) { e.printStackTrace(); throw new IllegalArgumentException("Bad token in source, or failed to parse", e); } finally { out.flush(); if (log.isDebugEnabled() && debugWriter != null) { try { debugWriter.close(); } catch (IOException ioe) { log.warn("Could not close debugWriter", ioe); } } } }
From source file:groovy.ui.text.SmartDocumentFilter.java
License:Apache License
private void parseDocument() throws BadLocationException { GroovyLangLexer lexer;// www . j a v a2 s . c o m try { lexer = createLexer(styledDocument.getText(0, styledDocument.getLength())); } catch (IOException e) { e.printStackTrace(); return; } CommonTokenStream tokenStream = new CommonTokenStream(lexer); try { tokenStream.fill(); } catch (LexerNoViableAltException | GroovySyntaxError e) { // ignore return; } catch (Exception e) { e.printStackTrace(); return; } List<Token> tokenList = tokenStream.getTokens(); List<Token> tokenListToRender = findTokensToRender(tokenList); for (Token token : tokenListToRender) { int tokenType = token.getType(); // if (token instanceof CommonToken) { // System.out.println(((CommonToken) token).toString(lexer)); // } if (EOF == tokenType) { continue; } int tokenStartIndex = token.getStartIndex(); int tokenStopIndex = token.getStopIndex(); int tokenLength = tokenStopIndex - tokenStartIndex + 1; styledDocument.setCharacterAttributes(tokenStartIndex, tokenLength, findStyleByTokenType(tokenType), true); if (GStringBegin == tokenType || GStringPart == tokenType) { styledDocument.setCharacterAttributes(tokenStartIndex + tokenLength - 1, 1, defaultStyle, true); } } this.latestTokenList = tokenList; }
From source file:kalang.ide.completion.KalangCompletionHandler.java
private List<CompletionProposal> getCompleteType(KaParser.KaParserResult result, int caret) { CompilationUnit cunit = result.getCompilationUnit(); CommonTokenStream ts = cunit.getTokenStream(); TokenNavigator tokenNav = new TokenNavigator(ts.getTokens().toArray(new Token[0])); tokenNav.move(caret - 1);/*ww w . j av a 2s . com*/ int currentTokenId = tokenNav.getCurrentToken().getTokenIndex(); if (currentTokenId < 1) { return null; } //TODO skip comment channels Token curToken = ts.get(currentTokenId); log("cur token:" + curToken.getText()); Token prevToken = ts.get(currentTokenId - 1); log("prev token:" + prevToken.getText()); int exprStopCaret; int anchorCaret; if (curToken.getText().equals(".")) { exprStopCaret = prevToken.getStopIndex(); anchorCaret = curToken.getStopIndex() + 1; } else if (prevToken.getText().equals(".")) { if (currentTokenId < 2) { return null; } Token prevPrevToken = ts.get(currentTokenId - 2); exprStopCaret = prevPrevToken.getStopIndex(); anchorCaret = prevToken.getStopIndex() + 1; } else { return null; } AstNode astNode = AstNodeHelper.getAstNodeByCaretOffset(result, exprStopCaret); log("expr ast:" + astNode); if (astNode == null) { return null; } Type type; boolean inStatic; if (astNode instanceof ExprNode) { type = ((ExprNode) astNode).getType(); inStatic = false; } else if (astNode instanceof ClassReference) { type = Types.getClassType(((ClassReference) astNode).getReferencedClassNode()); inStatic = true; } else { return null; } CompletionRequest request = new CompletionRequest(); request.anchorOffset = anchorCaret; request.compiler = result.getCompiler(); String source = result.getSnapshot().getText().toString(); request.prefix = source.substring(anchorCaret, caret); log("prefix:" + request.prefix); return TypeCompletion.complete(request, type, inStatic); }
From source file:net.certiv.json.test.base.AbstractBase.java
License:Open Source License
public String lexSource(String source, boolean output, boolean style) { CommonTokenStream tokens = produceTokens(source); tokens.fill();/*from w w w .jav a2s . co m*/ StringBuilder sb = new StringBuilder(); for (Token token : tokens.getTokens()) { ((JsonToken) token).toStringStyle(style); sb.append(token.toString()); if (output) System.out.print(token.toString()); } return sb.toString(); }
From source file:org.eclipse.titan.common.parsers.cfg.CfgAnalyzer.java
License:Open Source License
/** * Parses the provided elements./*from ww w . ja v a 2s. co m*/ * If the contents of an editor are to be parsed, than the file parameter is only used to report the errors to. * * @param file the file to parse * @param fileName the name of the file, to refer to. * @param code the contents of an editor, or null. */ public void directParse(final IFile file, final String fileName, final String code) { final Reader reader; final int fileLength; if (null != code) { reader = new StringReader(code); fileLength = code.length(); } else if (null != file) { try { reader = new BufferedReader(new InputStreamReader(file.getContents(), StandardCharsets.UTF8)); IFileStore store = EFS.getStore(file.getLocationURI()); IFileInfo fileInfo = store.fetchInfo(); fileLength = (int) fileInfo.getLength(); } catch (CoreException e) { ErrorReporter.logExceptionStackTrace("Could not get the contents of `" + fileName + "'", e); return; } } else { ErrorReporter.INTERNAL_ERROR("CfgAnalyzer.directParse(): nothing to parse"); return; } final CharStream charStream = new UnbufferedCharStream(reader); CfgLexer lexer = new CfgLexer(charStream); lexer.setTokenFactory(new CommonTokenFactory(true)); lexer.initRootInterval(fileLength); lexerListener = new TitanListener(); lexer.removeErrorListeners(); // remove ConsoleErrorListener lexer.addErrorListener(lexerListener); // 1. Previously it was UnbufferedTokenStream(lexer), but it was changed to BufferedTokenStream, because UnbufferedTokenStream seems to be unusable. It is an ANTLR 4 bug. // Read this: https://groups.google.com/forum/#!topic/antlr-discussion/gsAu-6d3pKU // pr_PatternChunk[StringBuilder builder, boolean[] uni]: // $builder.append($v.text); <-- exception is thrown here: java.lang.UnsupportedOperationException: interval 85..85 not in token buffer window: 86..341 // 2. Changed from BufferedTokenStream to CommonTokenStream, otherwise tokens with "-> channel(HIDDEN)" are not filtered out in lexer. final CommonTokenStream tokenStream = new CommonTokenStream(lexer); final CfgParser parser = new CfgParser(tokenStream); parser.setActualFile(file); //parser tree is built by default parserListener = new TitanListener(); parser.removeErrorListeners(); // remove ConsoleErrorListener parser.addErrorListener(parserListener); final ParserRuleContext parseTreeRoot = parser.pr_ConfigFile(); mCfgParseResult = parser.getCfgParseResult(); // manually add the result parse tree, and its corresponding token stream, // because they logically belong to here mCfgParseResult.setParseTreeRoot(parseTreeRoot); mCfgParseResult.setTokens(tokenStream.getTokens()); // fill handlers moduleParametersHandler = parser.getModuleParametersHandler(); testportParametersHandler = parser.getTestportParametersHandler(); componentSectionHandler = parser.getComponentSectionHandler(); groupSectionHandler = parser.getGroupSectionHandler(); mcSectionHandler = parser.getMcSectionHandler(); externalCommandsSectionHandler = parser.getExternalCommandsSectionHandler(); executeSectionHandler = parser.getExecuteSectionHandler(); includeSectionHandler = parser.getIncludeSectionHandler(); orderedIncludeSectionHandler = parser.getOrderedIncludeSectionHandler(); defineSectionHandler = parser.getDefineSectionHandler(); loggingSectionHandler = parser.getLoggingSectionHandler(); rootInterval = lexer.getRootInterval(); }
From source file:org.eclipse.titan.common.parsers.IntervalDetector.java
License:Open Source License
/** * Pops the actual interval off of the stack, making its parent the actual interval. The ending offset of the popped off interval is set here. * <p>//from w ww .j a v a2s.co m * If the actual interval is the root interval, than it is not popped off the stack. This situation can only happen in case of a syntactically * invalid file. * <p> * The last non-hidden token will be the end of the interval. * * @param aTokenStream token stream to get the list of tokens for searching hidden tokens */ public final void popInterval(final CommonTokenStream aTokenStream) { final int nonHiddenIndex = getNonHiddenTokensBefore(aTokenStream.index() - 1, aTokenStream.getTokens()); final Token t = aTokenStream.get(nonHiddenIndex); popInterval(t); }