Package net.sourceforge.chaperon.model.extended

Examples of net.sourceforge.chaperon.model.extended.Pattern


    {
      StringBuffer buffer = new StringBuffer();
      buffer.append("Successors:\n");
      for(PatternIterator i=grammar.getAllPattern().getPattern(); i.hasNext();)
      {
        Pattern pattern = i.next();
        if (pattern.getSuccessors().hasNext())
        {
          buffer.append(pattern+"->{");
          for(PatternIterator j=pattern.getSuccessors(); j.hasNext();)
          {
            buffer.append(j.next());
            if (j.hasNext())
              buffer.append(",");
          }
          buffer.append("}\n");
        }
      }

      buffer.append("\nAscending successors:\n");
      for(PatternIterator i=grammar.getAllPattern().getPattern(); i.hasNext();)
      {
        Pattern pattern = i.next();
        if (pattern.getAscendingSuccessors().hasNext())
        {
          buffer.append(pattern+"->{");
          for(PatternIterator j=pattern.getAscendingSuccessors(); j.hasNext();)
          {
            buffer.append(j.next());
            if (j.hasNext())
              buffer.append(",");
          }
          buffer.append("}\n");
        }
      }

      buffer.append("\nDescending successors:\n");
      for(PatternIterator i=grammar.getAllPattern().getPattern(); i.hasNext();)
      {
        Pattern pattern = i.next();
        if (pattern.getDescendingSuccessors().hasNext())
        {
          buffer.append(pattern+"->{");
          for(PatternIterator j=pattern.getDescendingSuccessors(); j.hasNext();)
          {
            buffer.append(j.next());
            if (j.hasNext())
              buffer.append(",");
          }
View Full Code Here


    if ((log!=null) && (log.isDebugEnabled()))
      log.debug("===================================\nProcess end of text");

    root = null;

    Pattern eot = grammar.getEndPattern();

    while (!current.isEmpty())
    {
      StackNode node = current.pop();
View Full Code Here

  private void shift(StackNode node, char[] text, int position)
  {
    for (PatternIterator i = node.pattern.getSuccessors(); i.hasNext();)
    {
      Pattern nextPattern = i.next();

      if (nextPattern.contains(text[position]))
      {
        if (node instanceof NonterminalStackNode)
        {
          for (PatternIterator j = node.last.pattern.getSuccessors(); j.hasNext();)
            if (j.next().contains(text[position]))
              return;

          for (PatternIterator j = node.last.pattern.getAscendingSuccessors(); j.hasNext();)
            if (j.next().contains(text[position]))
              return;
        }

        StackNode newNode = new TerminalStackNode(text, position, nextPattern, node);

        if ((log!=null) && (log.isDebugEnabled()))
          log.debug("shift "+newNode);

        next.push(newNode);
      }
    }

    for (PatternIterator i = node.pattern.getAscendingSuccessors(); i.hasNext();)
    {
      Pattern firstPattern = i.next();

      if (firstPattern.contains(text[position]))
      {
        if (node instanceof NonterminalStackNode)
        {
          for (PatternIterator j = node.last.pattern.getSuccessors(); j.hasNext();)
            if (j.next().contains(text[position]))
View Full Code Here

      list = new StackNodeList(node, list);
    }

    for (PatternIterator i = node.ancestor.pattern.getSuccessors(); i.hasNext();)
    {
      Pattern nextPattern = i.next();
      if (symbol.equals(nextPattern.getSymbol()))
      {
        StackNode newNode = new NonterminalStackNode(list, nextPattern, node.ancestor);
                                                                                                                                                            
        if ((log!=null) && (log.isDebugEnabled()))
          log.debug("reduce "+newNode+" with "+list);
                                                                                                                                                            
        current.push(newNode);
      }
    }
                                                                                                                                                            
    for (PatternIterator i = node.ancestor.pattern.getAscendingSuccessors(); i.hasNext();)
    {
      Pattern firstPattern = i.next();
      if (symbol.equals(firstPattern.getSymbol()))
      {
        StackNode newNode = new NonterminalStackNode(list, firstPattern, node.ancestor);
                                                                                                                                                            
        if ((log!=null) && (log.isDebugEnabled()))
          log.debug("reduce "+newNode+" with "+list);
View Full Code Here

  private void reduceEmpty(StackNode node)
  {
    for (PatternIterator i = node.pattern.getSuccessors(); i.hasNext();)
    {
      Pattern nextPattern = i.next();
      if ((nextPattern.getSymbol()!=null) && (grammar.isNullable(nextPattern.getSymbol())))
      {
        StackNode newNode = new NonterminalStackNode(null, nextPattern, node);

        if ((log!=null) && (log.isDebugEnabled()))
          log.debug("reduce "+newNode);

        current.push(newNode);
      }
    }

    for (PatternIterator i = node.pattern.getAscendingSuccessors(); i.hasNext();)
    {
      Pattern firstPattern = i.next();
      if ((firstPattern.getSymbol()!=null) && (grammar.isNullable(firstPattern.getSymbol())))
      {
        // TODO: check for empty elements, which can occur in the ascending successors
        if (firstPattern==node.pattern)
        {
          //System.out.println("prevent empty element "+firstPattern);
View Full Code Here

    State state = new State(grammar);

    for (PatternIterator pattern = firstSet.getPattern(); pattern.hasNext();)
    {
      Pattern firstPattern = pattern.next();
      Item item =
        new Item(((Definition)definitions.get(firstPattern)).getSymbol(), firstPattern, Item.SHIFT,
                 null);

      //item.end = true;
View Full Code Here

        Definition definition = ((Definition)definitions.get(item.pattern));
        PatternSet firstSet = grammar.getFirstSet(symbol);
        for (PatternIterator pattern = firstSet.getPattern(); pattern.hasNext();)
        {
          Pattern firstPattern = pattern.next();

          //Definition definition = ((Definition)definitions.get(firstSet.getPattern(l)));
          if (definition.getLastSet().contains(item.pattern))
            state.addItem(new Item(symbol, firstPattern, Item.SHIFT, item.lookahead));

          for (PatternIterator lookaheads = item.pattern.getSuccessors(); lookaheads.hasNext();)
          {
            Pattern lookahead = lookaheads.next();
            if (!(lookahead instanceof Element))
              state.addItem(new Item(symbol, firstPattern, Item.SHIFT, lookahead));
          }

          for (PatternIterator lookaheads = item.pattern.getAscendingSuccessors();
               lookaheads.hasNext();)
          {
            Pattern lookahead = lookaheads.next();
            if (!(lookahead instanceof Element))
              state.addItem(new Item(symbol, firstPattern, Item.SHIFT, lookahead));
          }
        }
      }
View Full Code Here

TOP

Related Classes of net.sourceforge.chaperon.model.extended.Pattern

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.