Package net.sourceforge.chaperon.model.symbol

Examples of net.sourceforge.chaperon.model.symbol.SymbolList


  public SymbolSet getNextTerminals()
  {
    SymbolSet set = new SymbolSet();

    SymbolList productiondefinition;
    for (int item = 0; item<productions.length; item++)
      if ((positions[item]<((productiondefinition = productions[item].getDefinition()).getSymbolCount())) &&
          (productiondefinition.getSymbol(positions[item]) instanceof Terminal))
        set.addSymbol(productiondefinition.getSymbol(positions[item]));

    return set;
  }
View Full Code Here


  public SymbolSet getNextNonterminals()
  {
    SymbolSet set = new SymbolSet();

    SymbolList productiondefinition;
    for (int item = 0; item<productions.length; item++)
      if ((positions[item]<((productiondefinition = productions[item].getDefinition()).getSymbolCount())) &&
          (productiondefinition.getSymbol(positions[item]) instanceof Nonterminal))
        set.addSymbol(productiondefinition.getSymbol(positions[item]));

    return set;
  }
View Full Code Here

   */
  public String toString()
  {
    StringBuffer buffer = new StringBuffer();

    SymbolList list;

    for (int productionindex = 0; productionindex<grammar.getProductionCount();
         productionindex++)
    {
      list = grammar.getProduction(productionindex).getDefinition();

      for (int position = 0; position<=list.getSymbolCount(); position++)
      {
        for (int item = 0; item<productions.length; item++)
          if ((productions[item]==grammar.getProduction(productionindex)) &&
              (positions[item]==position))
          {
            buffer.append(productions[item].getSymbol());
            buffer.append(" := ");

            for (int i = 0; i<list.getSymbolCount(); i++)
            {
              if (i==position)
                buffer.append(".");

              buffer.append(list.getSymbol(i)+" ");
            }

            if (position==list.getSymbolCount())
              buffer.append(".");

            buffer.append("\n");
            break;
          }
View Full Code Here

    }
  }

  public void runTest() throws Throwable
  {
    SymbolList list = new SymbolList();

    assertEquals("Test if list is empty", 0, list.getSymbolCount());
    assertEquals("Test if list is empty", true, list.isEmpty());

    list.addSymbol(a);

    assertEquals("Test if list is not empty", 1, list.getSymbolCount());
    assertEquals("Test if list is not empty", false, list.isEmpty());

    assertEquals("Test if symbols are equal", a, list.getSymbol(0));

    list.addSymbol(a);
    list.addSymbol(A);
    list.addSymbol(b);
    list.addSymbol(B);
    list.addSymbol(c);
    list.addSymbol(C);

    assertEquals("Test if list is not empty", 7, list.getSymbolCount());
    assertEquals("Test if list is not empty", false, list.isEmpty());

    assertEquals("Test if symbols are equal", a, list.getSymbol(0));
    assertEquals("Test if symbols are equal", a, list.getSymbol(1));
    assertEquals("Test if symbols are equal", B, list.getSymbol(4));
    assertEquals("Test if symbols are equal", C, list.getSymbol(6));

    assertEquals("Test if indices are equal", 0, list.indexOf(a));
    assertEquals("Test if indices are equal", 5, list.indexOf(c));

    SymbolList list2 = new SymbolList();

    list2.addSymbol(a);
    list2.addSymbol(a);
    list2.addSymbol(A);
    list2.addSymbol(b);

    assertNotEquals("Test if lists are not equal", list, list2);

    list2.addSymbol(B);
    list2.addSymbol(c);
    list2.addSymbol(C);

    assertEquals("Test if lists are equal", list, list2);

    SymbolList list3 = new SymbolList();

    list3.addSymbol(a);
    list3.addSymbol(A);
    list3.addSymbol(b);
    list3.addSymbol(B);
    list3.addSymbol(c);
    list3.addSymbol(C);
    list3.addSymbol(a);

    assertNotEquals("Test if lists are not equal", list, list3);
  }
View Full Code Here

      return 0;

    if (production.getPrecedence() != null)
      return getPriority(production.getPrecedence());

    SymbolList definition = production.getDefinition();
    for (int i = definition.getSymbolCount() - 1; i >= 0; i--)
      if (definition.getSymbol(i) instanceof Terminal)
      {
        int priority =  getPriority((Terminal)definition.getSymbol(i));
        if (priority==0)
          return getProductionCount()-indexOf(production);
        return priority;
      }
View Full Code Here

      return Associativity.NONASSOC;

    if (production.getPrecedence() != null)
      return getAssociativity(production.getPrecedence());

    SymbolList definition = production.getDefinition();
    for (int i = definition.getSymbolCount() - 1; i >= 0; i--)
      if (definition.getSymbol(i) instanceof Terminal)
        return getAssociativity((Terminal)definition.getSymbol(i));

    return Associativity.NONASSOC;
  }
View Full Code Here

      return 0;

    if (production.getPrecedence()!=null)
      return getPriority(production.getPrecedence());

    SymbolList definition = production.getDefinition();

    for (int i = definition.getSymbolCount()-1; i>=0; i--)
      if (definition.getSymbol(i) instanceof Terminal)
      {
        int priority = getPriority((Terminal)definition.getSymbol(i));

        return priority;
      }

    //return getProductionCount()-indexOf(production);
View Full Code Here

      return Associativity.NONASSOC;

    if (production.getPrecedence()!=null)
      return getAssociativity(production.getPrecedence());

    SymbolList definition = production.getDefinition();

    for (int i = definition.getSymbolCount()-1; i>=0; i--)
      if (definition.getSymbol(i) instanceof Terminal)
        return getAssociativity((Terminal)definition.getSymbol(i));

    return Associativity.NONASSOC;
  }
View Full Code Here

  public void testFirstOfASymbolList()
  {
    FirstSetCollection sets = new FirstSetCollection(grammar)/*, new ConsoleLogger());*/

    SymbolList list = new SymbolList();
    list.addSymbol(Eprime);

    SymbolSet result = new SymbolSet();
    result.addSymbol(plus);
    result.addSymbol(emptylist);
    assertEquals("Test if sets are equal", result, sets.getFirstSet(list));

    list = new SymbolList();
    list.addSymbol(Eprime);
    list.addSymbol(id);
    list.addSymbol(Tprime);

    result = new SymbolSet();
    result.addSymbol(plus);
    result.addSymbol(id);
    assertEquals("Test if sets are equal", result, sets.getFirstSet(list));

    list = new SymbolList();
    list.addSymbol(Eprime);
    list.addSymbol(Tprime);

    result = new SymbolSet();
    result.addSymbol(plus);
    result.addSymbol(mult);
    result.addSymbol(emptylist);
    assertEquals("Test if sets are equal", result, sets.getFirstSet(list));

    list = new SymbolList();

    result = new SymbolSet();
    result.addSymbol(emptylist);
    assertEquals("Test if sets are equal", result, sets.getFirstSet(list));
  }
View Full Code Here

      return 0;

    if (production.getPrecedence()!=null)
      return getPriority(production.getPrecedence());

    SymbolList definition = production.getDefinition();

    for (int i = definition.getSymbolCount()-1; i>=0; i--)
      if (definition.getSymbol(i) instanceof Terminal)
      {
        int priority = getPriority((Terminal) definition.getSymbol(i));

        return priority;
      }

    return getProductionCount()-indexOf(production);
View Full Code Here

TOP

Related Classes of net.sourceforge.chaperon.model.symbol.SymbolList

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.