Package org.antlr.v4.tool

Examples of org.antlr.v4.tool.Rule


    ParserATNFactory f = new ParserATNFactory(g);
    ATN atn = f.createATN();

    DOTGenerator dot = new DOTGenerator(g);

    Rule r = g.getRule("a");
    if ( r!=null) System.out.println(dot.getDOT(atn.ruleToStartState[r.index]));
    r = g.getRule("b");
    if ( r!=null) System.out.println(dot.getDOT(atn.ruleToStartState[r.index]));
    r = g.getRule("e");
    if ( r!=null) System.out.println(dot.getDOT(atn.ruleToStartState[r.index]));
View Full Code Here


  void checkRuleATN(Grammar g, String ruleName, String expecting) {
    DOTGenerator dot = new DOTGenerator(g);
    System.out.println(dot.getDOT(g.atn.ruleToStartState[g.getRule(ruleName).index]));

    Rule r = g.getRule(ruleName);
    ATNState startState = g.atn.ruleToStartState[r.index];
    ATNPrinter serializer = new ATNPrinter(g, startState);
    String result = serializer.asString();

    //System.out.print(result);
View Full Code Here

      attr(expr, x);
      return;
    }

    if ( node.resolver.resolveToAttribute(x.getText(), y.getText(), node)==null ) {
      Rule rref = isolatedRuleRef(x.getText());
      if ( rref!=null ) {
        if ( rref.args!=null && rref.args.get(y.getText())!=null ) {
          g.tool.errMgr.grammarError(ErrorType.INVALID_RULE_PARAMETER_REF,
                        g.fileName, y, y.getText(), rref.name, expr);
        }
View Full Code Here

    }
  }

  @Override
  public void nonLocalAttr(String expr, Token x, Token y) {
    Rule r = g.getRule(x.getText());
    if ( r==null ) {
      errMgr.grammarError(ErrorType.UNDEFINED_RULE_IN_NONLOCAL_REF,
                g.fileName, x, x.getText(), y.getText(), expr);
    }
    else if ( r.resolveToAttribute(y.getText(), null)==null ) {
      errMgr.grammarError(ErrorType.UNKNOWN_RULE_ATTRIBUTE,
                g.fileName, y, y.getText(), x.getText(), expr);

    }
  }
View Full Code Here

    }
  }

  @Override
  public void setNonLocalAttr(String expr, Token x, Token y, Token rhs) {
    Rule r = g.getRule(x.getText());
    if ( r==null ) {
      errMgr.grammarError(ErrorType.UNDEFINED_RULE_IN_NONLOCAL_REF,
                g.fileName, x, x.getText(), y.getText(), expr);
    }
    else if ( r.resolveToAttribute(y.getText(), null)==null ) {
      errMgr.grammarError(ErrorType.UNKNOWN_RULE_ATTRIBUTE,
                g.fileName, y, y.getText(), x.getText(), expr);

    }
  }
View Full Code Here

  public void checkRuleArgs(Grammar g, List<GrammarAST> rulerefs) {
    if ( rulerefs==null ) return;
    for (GrammarAST ref : rulerefs) {
      String ruleName = ref.getText();
      Rule r = g.getRule(ruleName);
      GrammarAST arg = (GrammarAST)ref.getFirstChildWithType(ANTLRParser.ARG_ACTION);
      if ( arg!=null && (r==null || r.args==null) ) {
        errMgr.grammarError(ErrorType.RULE_HAS_NO_ARGS,
                      g.fileName, ref.token, ruleName);
View Full Code Here

    int removedStates = 0;
    List<DecisionState> decisions = atn.decisionToState;
    for (DecisionState decision : decisions) {
      if (decision.ruleIndex >= 0) {
        Rule rule = g.getRule(decision.ruleIndex);
        if (Character.isLowerCase(rule.name.charAt(0))) {
          // parser codegen doesn't currently support SetTransition
          continue;
        }
      }
View Full Code Here

      AltAST altAST = (AltAST)blk.getChild(i);
      if ( altAST.altLabel!=null ) {
        String altLabel = altAST.altLabel.getText();
        // first check that label doesn't conflict with a rule
        // label X or x can't be rule x.
        Rule r = ruleCollector.rules.get(Utils.decapitalize(altLabel));
        if ( r!=null ) {
          g.tool.errMgr.grammarError(ErrorType.ALT_LABEL_CONFLICTS_WITH_RULE,
                         g.fileName, altAST.altLabel.token,
                         altLabel,
                         r.name);
View Full Code Here

   *  This will contain implicit labels etc...  From outside, though, we
   *  see only ParserRuleContext unless there are externally visible stuff
   *  like args, locals, explicit labels, etc...
   */
  public String getRuleFunctionContextStructName(RuleFunction function) {
    Rule r = function.rule;
    if ( r.g.isLexer() ) {
      return getTemplates().getInstanceOf("LexerRuleContext").render();
    }
    return Utils.capitalize(r.name)+getTemplates().getInstanceOf("RuleContextNameSuffix").render();
  }
View Full Code Here

               GrammarAST options, ActionAST locals,
               List<GrammarAST> actions,
               GrammarAST block)
  {
    int numAlts = block.getChildCount();
    Rule r;
    if ( LeftRecursiveRuleAnalyzer.hasImmediateRecursiveRuleRefs(rule, ID.getText()) ) {
      r = new LeftRecursiveRule(g, ID.getText(), rule);
    }
    else {
      r = new Rule(g, ID.getText(), rule, numAlts);
    }
    rules.put(r.name, r);

    if ( arg!=null ) {
      r.args = ScopeParser.parseTypedArgList(arg, arg.getText(), g);
View Full Code Here

TOP

Related Classes of org.antlr.v4.tool.Rule

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.