Package org.antlr.v4.runtime.tree.pattern

Examples of org.antlr.v4.runtime.tree.pattern.ParseTreeMatch


    // ignore tokens from existing option subtrees like:
    //    (ELEMENT_OPTIONS (= assoc right))
    //
    // element options are added back according to the values in the map
    // returned by getOptions().
    IntervalSet ignore = new IntervalSet();
    List<GrammarAST> optionsSubTrees = t.getNodesWithType(ELEMENT_OPTIONS);
    for (GrammarAST sub : optionsSubTrees) {
      ignore.add(sub.getTokenStartIndex(), sub.getTokenStopIndex());
    }

    // Individual labels appear as RULE_REF or TOKEN_REF tokens in the tree,
    // but do not support the ELEMENT_OPTIONS syntax. Make sure to not try
    // and add the tokenIndex option when writing these tokens.
    IntervalSet noOptions = new IntervalSet();
    List<GrammarAST> labeledSubTrees = t.getNodesWithType(new IntervalSet(ASSIGN,PLUS_ASSIGN));
    for (GrammarAST sub : labeledSubTrees) {
      noOptions.add(sub.getChild(0).getTokenStartIndex());
    }

    StringBuilder buf = new StringBuilder();
    for (int i=tokenStartIndex; i<=tokenStopIndex; i++) {
      if ( ignore.contains(i) ) {
        continue;
      }

      Token tok = tokenStream.get(i);

      StringBuilder elementOptions = new StringBuilder();
      if (!noOptions.contains(i)) {
        GrammarAST node = t.getNodeWithTokenIndex(tok.getTokenIndex());
        if ( node!=null &&
           (tok.getType()==TOKEN_REF ||
            tok.getType()==STRING_LITERAL ||
            tok.getType()==RULE_REF) )
View Full Code Here


  @NotNull
  @Override
  public Handle set(@NotNull GrammarAST associatedAST, @NotNull List<GrammarAST> terminals, boolean invert) {
    ATNState left = newState(associatedAST);
    ATNState right = newState(associatedAST);
    IntervalSet set = new IntervalSet();
    for (GrammarAST t : terminals) {
      int ttype = g.getTokenType(t.getText());
      set.add(ttype);
    }
    if ( invert ) {
      left.addTransition(new NotSetTransition(right, set));
    }
    else {
View Full Code Here

          }
        }
      }
      if(arg0.getParent() instanceof ExpressionContext) {
        // we are the leftmost child of the expression
        ParseTree chld = arg0.getParent().getChild(arg0.getParent().getChildCount()-1);
        if(!chld.equals(arg0)) return;
        addQuery(classUtils.expandExpression(arg0.getParent().getText(), registry));
      }
    }
  }
View Full Code Here

//    parser.setTokenFactory(factory);
    parser.addErrorListener(new DiagnosticErrorListener());
    parser.getInterpreter().setPredictionMode(
        PredictionMode.LL_EXACT_AMBIG_DETECTION);
    parser.setBuildParseTree(true);
    ParseTree tree = parser.mson();
    // show tree in text form
    // System.out.println(tree.toStringTree(parser));

    ParseTreeWalker walker = new ParseTreeWalker();
    SymbolTable symtab = new SymbolTable();
View Full Code Here

    JavaParser parser = new JavaParser(tokens);
    parser.removeErrorListeners();
   
    // start parsing at the compilationUnit rule
    ParserRuleContext t = parser.compilationUnit();
    ParseTreeWalker walker = new ParseTreeWalker();
    List<AutocompleteCandidate> q = new ArrayList<AutocompleteCandidate>();
         
    ImportDeclarationCompletion extractor = new ImportDeclarationCompletion(txt,cur,registry,cps,cu);
    NameBuilder extractor2 = new NameBuilder(registry,cu );
    NodeCompletion extractor3 = new NodeCompletion(txt,cur, registry, cu);
    walker.walk(extractor, t);
    if(extractor.getQuery()!=null)
      q.addAll(extractor.getQuery());
    walker.walk(extractor2, t);
    walker.walk(extractor3, t);
    if(extractor3.getQuery()!=null)
      q.addAll(extractor3.getQuery());
    List<String> ret = registry.searchCandidates(q);

    // this shows the GUI
View Full Code Here

    parser.setBuildParseTree(true);
    ParseTree tree = parser.mson();
    // show tree in text form
    // System.out.println(tree.toStringTree(parser));

    ParseTreeWalker walker = new ParseTreeWalker();
    SymbolTable symtab = new SymbolTable();
    DefPhase def = new DefPhase(symtab);
    walker.walk(def, tree);
    // create next phase and feed symbol table info from def to ref phase
    RefPhase ref = new RefPhase(symtab, def.scopes);
    walker.walk(ref, tree);
  }
View Full Code Here

      "ID : [a-z]+ ;\n" +
      "WS : [ \\r\\n\\t]+ -> skip ;\n";

    String input = "x ;";
    String pattern = "<id:ID>;";
    ParseTreeMatch m = checkPatternMatch(grammar, "s", input, pattern, "X8");
    assertEquals("{ID=[x], id=[x]}", m.getLabels().toString());
    assertNotNull(m.get("id"));
    assertNotNull(m.get("ID"));
    assertEquals("x", m.get("id").getText());
    assertEquals("x", m.get("ID").getText());
    assertEquals("[x]", m.getAll("id").toString());
    assertEquals("[x]", m.getAll("ID").toString());

    assertNull(m.get("undefined"));
    assertEquals("[]", m.getAll("undefined").toString());
  }
View Full Code Here

      "ID : [a-z]+ ;\n" +
      "WS : [ \\r\\n\\t]+ -> skip ;\n";

    String input = "x y;";
    String pattern = "<id:ID> <id:ID>;";
    ParseTreeMatch m = checkPatternMatch(grammar, "s", input, pattern, "X9");
    assertEquals("{ID=[x, y], id=[x, y]}", m.getLabels().toString());
    assertNotNull(m.get("id"));
    assertNotNull(m.get("ID"));
    assertEquals("y", m.get("id").getText());
    assertEquals("y", m.get("ID").getText());
    assertEquals("[x, y]", m.getAll("id").toString());
    assertEquals("[x, y]", m.getAll("ID").toString());

    assertNull(m.get("undefined"));
    assertEquals("[]", m.getAll("undefined").toString());
  }
View Full Code Here

      "ID : [a-z]+ ;\n" +
      "WS : [ \\r\\n\\t]+ -> skip ;\n";

    String input = "x y z;";
    String pattern = "<a:ID> <b:ID> <a:ID>;";
    ParseTreeMatch m = checkPatternMatch(grammar, "s", input, pattern, "X7");
    assertEquals("{ID=[x, y, z], a=[x, z], b=[y]}", m.getLabels().toString());
    assertNotNull(m.get("a")); // get first
    assertNotNull(m.get("b"));
    assertNotNull(m.get("ID"));
    assertEquals("z", m.get("a").getText());
    assertEquals("y", m.get("b").getText());
    assertEquals("z", m.get("ID").getText()); // get last
    assertEquals("[x, z]", m.getAll("a").toString());
    assertEquals("[y]", m.getAll("b").toString());
    assertEquals("[x, y, z]", m.getAll("ID").toString()); // ordered

    assertEquals("xyz;", m.getTree().getText()); // whitespace stripped by lexer

    assertNull(m.get("undefined"));
    assertEquals("[]", m.getAll("undefined").toString());
  }
View Full Code Here

    assertTrue(ok);

    ParseTree result = execParser(startRule, input, parserName, lexerName);

    ParseTreePattern p = getPattern(grammarName, pattern, startRule);
    ParseTreeMatch match = p.match(result);
    boolean matched = match.succeeded();
    if ( invertMatch ) assertFalse(matched);
    else assertTrue(matched);
    return match;
  }
View Full Code Here

TOP

Related Classes of org.antlr.v4.runtime.tree.pattern.ParseTreeMatch

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.