Package net.sourceforge.chaperon.model.grammar

Examples of net.sourceforge.chaperon.model.grammar.Production


      if (reduceactions.length>0)
      {
        for (int i = 0; i<reduceactions.length; i++)
        {
          Production production = reduceactions[i].production;

          if ((log!=null) && (log.isDebugEnabled()))
            log.debug(
            /*"State "+node.state+*/
            " reduce "+production.getSymbol());

          /*+
                                   " ("+production+")");*/
          ProductionNode productionnode = new ProductionNode(production);
          TreeNode[] descendants = new TreeNode[production.getDefinition().getSymbolCount()];

          StateNode ancestor = statenode;

          for (int j = production.getDefinition().getSymbolCount()-1; j>=0; j--)
          {
            descendants[j] = ancestor.treenode;
            ancestor = ancestor.ancestor;
          }

View Full Code Here


      if (reduceactions.length>0)
      {
        for (int i = 0; i<reduceactions.length; i++)
        {
          Production production = reduceactions[i].production;

          ProductionNode productionnode = new ProductionNode(production);
          TreeNode[] descendants = new TreeNode[production.getDefinition().getSymbolCount()];

          StateNode ancestor = statenode;

          for (int j = production.getDefinition().getSymbolCount()-1; j>=0; j--)
          {
            descendants[j] = ancestor.treenode;
            ancestor = ancestor.ancestor;
          }

          productionnode.descendants = descendants;

          ShiftAction shiftaction = ancestor.state.getShiftAction(productionnode.symbol);

          //System.out.println("current state:\n"+ancestor.state+"\ntransition for "+productionnode.symbol+" = "+shiftaction);
          if ((automaton.getState(0)==ancestor.state) &&
              (productionnode.symbol.equals(grammar.getStartSymbol())))
          {
            if ((log!=null) && (log.isDebugEnabled()))
              log.debug("State "+state+" accept");

            StateNode newstatenode = getStateNode(next, null, ancestor);

            if (newstatenode==null)
            {
              newstatenode = new StateNode(null, ancestor, productionnode);
              next.push(newstatenode);
            }
            else
            {
              System.out.println("merging state node");

              ProductionNode oldproductionnode = (ProductionNode)newstatenode.treenode;

              if (grammar.getPriority(oldproductionnode.production)>grammar.getPriority(production))
              {
                System.out.println("priority("+production+") < priority("+
                                   oldproductionnode.production+")");
                newstatenode.treenode = productionnode;
              }
              else
                System.out.println("priority("+production+") >= priority("+
                                   oldproductionnode.production+")");
            }
          }
          else
          {
            if ((log!=null) && (log.isDebugEnabled()))
              log.debug(
              /*"State "+node.state+*/
              " reduce "+production.getSymbol()+" ("+production+")");

            /*          StateNode newstatenode = new
            StateNode(ancestor.state.getShiftAction(productionnode.symbol).state, ancestor, productionnode);

                      current.push(newstatenode);*/
 
View Full Code Here

    F = new Nonterminal("F");

    grammar = new Grammar();

    // E -> E + T
    Production production = new Production(E);
    production.getDefinition().addSymbol(E);
    production.getDefinition().addSymbol(plus);
    production.getDefinition().addSymbol(T);
    grammar.addProduction(production);

    // E -> T
    production = new Production(E);
    production.getDefinition().addSymbol(T);
    grammar.addProduction(production);

    // T -> T * F
    production = new Production(T);
    production.getDefinition().addSymbol(T);
    production.getDefinition().addSymbol(mult);
    production.getDefinition().addSymbol(F);
    grammar.addProduction(production);

    // T -> F
    production = new Production(T);
    production.getDefinition().addSymbol(F);
    grammar.addProduction(production);

    // F -> ( E )
    production = new Production(F);
    production.getDefinition().addSymbol(bopen);
    production.getDefinition().addSymbol(E);
    production.getDefinition().addSymbol(bclose);
    grammar.addProduction(production);

    production = new Production(F);
    production.getDefinition().addSymbol(id);
    grammar.addProduction(production);

    grammar.setStartSymbol(E);
  }
View Full Code Here

  public boolean contains(State state)
  {
    int i;
    int j;
    int position;
    Production production;
    boolean found;

    for (i = 0; i<state.productions.length; i++)
    {
      production = state.productions[i];
View Full Code Here

    grammar = new Grammar();

    grammar.setStartSymbol(E);

    // E -> T E'
    Production production = new Production(E);
    production.getDefinition().addSymbol(T);
    production.getDefinition().addSymbol(Eprime);
    grammar.addProduction(production);

    // E' -> + T E'
    production = new Production(Eprime);
    production.getDefinition().addSymbol(plus);
    production.getDefinition().addSymbol(T);
    production.getDefinition().addSymbol(Eprime);
    grammar.addProduction(production);

    // E' ->
    production = new Production(Eprime);
    grammar.addProduction(production);

    // T -> F T'
    production = new Production(T);
    production.getDefinition().addSymbol(F);
    production.getDefinition().addSymbol(Tprime);
    grammar.addProduction(production);

    // T' -> * F T'
    production = new Production(Tprime);
    production.getDefinition().addSymbol(mult);
    production.getDefinition().addSymbol(F);
    production.getDefinition().addSymbol(Tprime);
    grammar.addProduction(production);

    // T' ->
    production = new Production(Tprime);
    grammar.addProduction(production);

    // F -> bopen E bclose
    production = new Production(F);
    production.getDefinition().addSymbol(bopen);
    production.getDefinition().addSymbol(E);
    production.getDefinition().addSymbol(bclose);
    grammar.addProduction(production);

    // F -> id
    production = new Production(F);
    production.getDefinition().addSymbol(id);
    grammar.addProduction(production);
  }
View Full Code Here

    F = new Nonterminal("F");
    G = new Nonterminal("G");

    grammar = new Grammar();

    p1 = new Production(F);
    p1.getDefinition().addSymbol(E);
    p1.getDefinition().addSymbol(a);
    p1.getDefinition().addSymbol(E);
    grammar.addProduction(p1);

    p2 = new Production(F);
    p2.getDefinition().addSymbol(E);
    p2.getDefinition().addSymbol(b);
    p2.getDefinition().addSymbol(E);
    grammar.addProduction(p2);

    p3 = new Production(G);
    p3.getDefinition().addSymbol(E);
    p3.getDefinition().addSymbol(F);
    grammar.addProduction(p3);
  }
View Full Code Here

    assertTrue("Test if grammar contains productions", grammar.contains(p1));
    assertTrue("Test if grammar contains productions", grammar.contains(p2));

    assertTrue("Test if production are not equal", !p1.equals(p2));

    Production p3 = new Production(F);
    p3.getDefinition().addSymbol(E);
    p3.getDefinition().addSymbol(a);
    p3.getDefinition().addSymbol(E);

    assertEquals("Test if production are equal", p1, p3);
    assertTrue("Test if grammar contains productions", grammar.contains(p3));

    assertEquals("Test production indices", 0, grammar.indexOf(p1));
View Full Code Here

    S = new Nonterminal("S");
    C = new Nonterminal("C");

    grammar = new Grammar();

    Production production = new Production(S);
    production.getDefinition().addSymbol(C);
    production.getDefinition().addSymbol(C);
    grammar.addProduction(production);

    production = new Production(C);
    production.getDefinition().addSymbol(c);
    production.getDefinition().addSymbol(C);
    grammar.addProduction(production);

    production = new Production(C);
    production.getDefinition().addSymbol(d);
    grammar.addProduction(production);

    grammar.setStartSymbol(S);

    firstsets = new FirstSetCollection(grammar);
View Full Code Here

    Nonterminal C = new Nonterminal("C");
    Nonterminal D = new Nonterminal("D");

    grammar = new Grammar();

    Production production = new Production(A);
    production.getDefinition().addSymbol(B);
    production.getDefinition().addSymbol(a);
    grammar.addProduction(production);

    production = new Production(B);
    production.getDefinition().addSymbol(b);
    grammar.addProduction(production);

    production = new Production(C);
    production.getDefinition().addSymbol(B);
    production.getDefinition().addSymbol(D);
    grammar.addProduction(production);

    production = new Production(D);

    // empty
    grammar.addProduction(production);

    firstsets = new FirstSetCollection(grammar);

    set = new ItemSet(grammar, firstsets);
    set.addItem(0, 0, c);

    result = new ItemSet(grammar, firstsets);
    result.addItem(0, 0, c);
    result.addItem(1, 0, a);

    assertEquals("Test if sets are equal", result, set.closure());

    set = new ItemSet(grammar, firstsets);
    set.addItem(2, 0, a);

    result = new ItemSet(grammar, firstsets);
    result.addItem(2, 0, a);
    result.addItem(1, 0, a);

    assertEquals("Test if sets are equal", result, set.closure());

    // ---- Case 3 ----
    grammar = new Grammar();

    production = new Production(A);
    production.getDefinition().addSymbol(B);
    production.getDefinition().addSymbol(D);
    grammar.addProduction(production);

    production = new Production(B);
    production.getDefinition().addSymbol(C);
    grammar.addProduction(production);

    production = new Production(C);
    production.getDefinition().addSymbol(d);
    grammar.addProduction(production);

    production = new Production(D);
    production.getDefinition().addSymbol(b);
    grammar.addProduction(production);

    firstsets = new FirstSetCollection(grammar);

    set = new ItemSet(grammar, firstsets);
View Full Code Here

    F = new Nonterminal("F");

    grammar = new Grammar();

    // E -> T E'
    Production production = new Production(E);
    production.getDefinition().addSymbol(T);
    production.getDefinition().addSymbol(Eprime);
    grammar.addProduction(production);

    // E' -> + T E'
    production = new Production(Eprime);
    production.getDefinition().addSymbol(plus);
    production.getDefinition().addSymbol(T);
    production.getDefinition().addSymbol(Eprime);
    grammar.addProduction(production);

    // E' ->
    production = new Production(Eprime);
    grammar.addProduction(production);

    // T -> F T'
    production = new Production(T);
    production.getDefinition().addSymbol(F);
    production.getDefinition().addSymbol(Tprime);
    grammar.addProduction(production);

    // T' -> * F T'
    production = new Production(Tprime);
    production.getDefinition().addSymbol(mult);
    production.getDefinition().addSymbol(F);
    production.getDefinition().addSymbol(Tprime);
    grammar.addProduction(production);

    // T' ->
    production = new Production(Tprime);
    grammar.addProduction(production);

    // F -> bopen E bclose
    production = new Production(F);
    production.getDefinition().addSymbol(bopen);
    production.getDefinition().addSymbol(E);
    production.getDefinition().addSymbol(bclose);
    grammar.addProduction(production);

    // F -> id
    production = new Production(F);
    production.getDefinition().addSymbol(id);
    grammar.addProduction(production);
  }
View Full Code Here

TOP

Related Classes of net.sourceforge.chaperon.model.grammar.Production

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.