Package org.antlr.analysis

Examples of org.antlr.analysis.DFA


                "lexer grammar t;\n"+
                "A : (DIGIT)+ '.' DIGIT | (DIGIT)+ ;\n" +
                "fragment DIGIT : '0'..'9' ;\n");
    g.buildNFA();
        g.createLookaheadDFAs(false);
        DFA dfa = g.getLookaheadDFA(3);
        checkPrediction(dfa,"32",2);
        checkPrediction(dfa,"999.2",1);
        checkPrediction(dfa,".2", NFA.INVALID_ALT_NUMBER);
    }
View Full Code Here


    // This is ok because we've already verified there are no problems
    // with the enter/exit decision
    DFAOptimizer optimizer = new DFAOptimizer(g);
    optimizer.optimize();
    FASerializer serializer = new FASerializer(g);
    DFA dfa = g.getLookaheadDFA(1);
    String result = serializer.serialize(dfa.startState);
    expecting = ".s0-'x'->:s1=>1\n";
    assertEquals(expecting, result);
  }
View Full Code Here

      g.setCodeGenerator(generator);
      g.buildNFA();
      g.createLookaheadDFAs(false);
    }

    DFA dfa = g.getLookaheadDFA(decision);
    assertNotNull("unknown decision #"+decision, dfa);
    FASerializer serializer = new FASerializer(g);
    String result = serializer.serialize(dfa.startState);
    //System.out.print(result);
    List nonDetAlts = dfa.getUnreachableAlts();
    //System.out.println("alts w/o predict state="+nonDetAlts);

    // first make sure nondeterministic alts are as expected
    if ( expectingUnreachableAlts==null ) {
      if ( nonDetAlts!=null && nonDetAlts.size()!=0 ) {
View Full Code Here

        s.nfa.grammar.getTokenDisplayName(t));
        */
      // CASE 1: decision state
      if ( s.getDecisionNumber()>0 && s.nfa.grammar.getNumberOfAltsForDecisionNFA(s)>1 ) {
        // decision point, must predict and jump to alt
        DFA dfa = s.nfa.grammar.getLookaheadDFA(s.getDecisionNumber());
        /*
        if ( s.nfa.grammar.type!=Grammar.LEXER ) {
          System.out.println("decision: "+
                   dfa.getNFADecisionStartState().getDescription()+
                   " input="+s.nfa.grammar.getTokenDisplayName(t));
        }
        */
        int m = input.mark();
        int predictedAlt = predict(dfa);
        if ( predictedAlt == NFA.INVALID_ALT_NUMBER ) {
          String description = dfa.getNFADecisionStartState().getDescription();
          NoViableAltException nvae =
            new NoViableAltException(description,
                            dfa.getDecisionNumber(),
                            s.stateNumber,
                            input);
          if ( actions!=null ) {
            actions.recognitionException(nvae);
          }
View Full Code Here

    }

    assertEquals("unexpected number of expected problems",
           expectingNumWarnings, equeue.size());

    DFA dfa = g.getLookaheadDFA(decision);
    assertNotNull("no DFA for decision "+decision, dfa);
    FASerializer serializer = new FASerializer(g);
    String result = serializer.serialize(dfa.startState);

    List unreachableAlts = dfa.getUnreachableAlts();

    // make sure unreachable alts are as expected
    if ( expectingUnreachableAlts!=null ) {
      BitSet s = new BitSet();
      s.addAll(expectingUnreachableAlts);
View Full Code Here

    if ( g.getNumberOfDecisions()==0 ) {
      g.buildNFA();
      g.createLookaheadDFAs(false);
    }

    DFA dfa = g.getLookaheadDFA(1);
    assertEquals(null, dfa); // can't analyze.

    /*
    String result = serializer.serialize(dfa.startState);
    assertEquals(expecting, result);
View Full Code Here

    }

    assertEquals("unexpected number of expected problems",
           expectingNumWarnings, equeue.size());

    DFA dfa = g.getLookaheadDFA(decision);
    FASerializer serializer = new FASerializer(g);
    String result = serializer.serialize(dfa.startState);
    //System.out.print(result);
    List unreachableAlts = dfa.getUnreachableAlts();

    // make sure unreachable alts are as expected
    if ( expectingUnreachableAlts!=null ) {
      BitSet s = new BitSet();
      s.addAll(expectingUnreachableAlts);
View Full Code Here

  protected String getDFALocations(Set dfas) {
    Set decisions = new HashSet();
    StringBuffer buf = new StringBuffer();
    Iterator it = dfas.iterator();
    while ( it.hasNext() ) {
      DFA dfa = (DFA) it.next();
      // if we aborted a DFA and redid with k=1, the backtrackin
      if ( decisions.contains(Utils.integer(dfa.decisionNumber)) ) {
        continue;
      }
      decisions.add(Utils.integer(dfa.decisionNumber));
View Full Code Here

TOP

Related Classes of org.antlr.analysis.DFA

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.