Example usage for org.antlr.v4.runtime CommonTokenStream getTokens

List of usage examples for org.antlr.v4.runtime CommonTokenStream getTokens

Introduction

In this page you can find the example usage for org.antlr.v4.runtime CommonTokenStream getTokens.

Prototype

public List<Token> getTokens() 

Source Link

Usage

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);
}