XmlAnnotationParser.java

// *******************************************************************
// This file has been automatically generated from the grammar in file
// XmlAnnotation.grm by ilog.language.syntax.ParserGenerator on
// Thu Mar 25 18:50:31 PDT 2010 --- !!! PLEASE DO NO EDIT !!!
// *******************************************************************

package ilog.language.syntax.xml;

import java.io.Reader;
import java.io.StringReader;
import java.io.IOException;
import ilog.language.syntax.*;
import java.util.Iterator;
import ilog.language.tools.Misc;
import ilog.language.util.ArrayList;
import ilog.language.util.IntArrayList;
import ilog.language.syntax.XmlWrapper;


/* ************ */
/* PARSER CLASS */
/* ************ */

public class XmlAnnotationParser extends StaticParser
{
  /* ************************ */
  /* PARSER CLASS CONSTRUCTOR */
  /* ************************ */

  public XmlAnnotationParser (Tokenizer t)
    {
      input = t;
      xmlroot = "XmlAnnotation";
    }

  /* ************************* */
  /* PARSER CLASS DECLARATIONS */
  /* ************************* */


  
  String nsPrefix = "";
  
  String localName = null;
  
  ArrayList attributes = new ArrayList();
  
  IntArrayList children = new IntArrayList();
  
  ArrayList xmlPaths = new ArrayList();
  
  ArrayList wrapperPaths = new ArrayList();

  
  ArrayList attributeNames = new ArrayList();

  
  boolean terminalValueFlag = false;

  
  ArrayList textInfos = new ArrayList();

  
  private void reset ()
    {
      resetParser();
      nsPrefix = "";
      localName = null;
      attributes = new ArrayList();
      children = new IntArrayList();
      xmlPaths = new ArrayList();
      wrapperPaths = new ArrayList();
      attributeNames = new ArrayList();
      textInfos = new ArrayList();
      terminalValueFlag = false;
    }

  
  public final XmlAnnotationParser reset (String annotation)
    {
      reset();
      ((XmlAnnotationTokenizer)input).setInput(annotation);
      return this;
    }

    
  public final XmlInfo xmlInfo ()
    {
      return new XmlInfo(localName,
			 nsPrefix,
			 toAttributeInfoArray(attributes),
			 children.toArray(),
			 toIntArrays(xmlPaths),
			 toWrapperArrays(wrapperPaths),
			 toStringArray(attributeNames),
			 terminalValueFlag,
			 toTextInfoArrays(textInfos));
    }

    
  private XmlAttributeInfo[] toAttributeInfoArray (ArrayList list)
    {
      int i = 0;
      XmlAttributeInfo[] a = new XmlAttributeInfo[list.size()];

      for (Iterator it=list.iterator(); it.hasNext();)
	a[i++] = (XmlAttributeInfo)it.next();

      return a;
    }

  private int[][] toIntArrays (ArrayList list)
    {
      int i = 0;
      int[][] a = new int[list.size()][];

      for (Iterator it=list.iterator(); it.hasNext();)
	{
	  IntArrayList sublist = (IntArrayList)it.next();
	  a[i++] = (sublist == null ? null : sublist.toArray());
	}

      return a;
    }

  private XmlWrapper[][] toWrapperArrays (ArrayList list)
    {
      int i = 0;
      XmlWrapper[][] a = new XmlWrapper[list.size()][];

      for (Iterator it=list.iterator(); it.hasNext();)
	{
	  ArrayList sublist = (ArrayList)it.next();
	  a[i++] = (sublist == null ? null : toWrapperArray(sublist));
	}

      return a;
    }

  private String[] toStringArray (ArrayList list)
    {
      int i = 0;
      String[] a = new String[list.size()];

      for (Iterator it=list.iterator(); it.hasNext();)
	a[i++] = (String)it.next();

      return a;
    }      

  private XmlWrapper[] toWrapperArray (ArrayList list)
    {
      int i = 0;
      XmlWrapper[] a = new XmlWrapper[list.size()];

      for (Iterator it=list.iterator(); it.hasNext();)
	a[i++] = (XmlWrapper)it.next();

      return a;
    }      
      
  private XmlTextInfo[][] toTextInfoArrays (ArrayList list)
    {
      int i = 0;
      XmlTextInfo[][] a = new XmlTextInfo[list.size()][];

      for (Iterator it=list.iterator(); it.hasNext();)
	{
	  ArrayList sublist = (ArrayList)it.next();
	  a[i++] = toTextInfoArray(sublist);
	}

      return a;
    }

  private XmlTextInfo[] toTextInfoArray (ArrayList list)
    {
      if (list == null)
	return null;
      
      int i = 0;
      XmlTextInfo[] a = new XmlTextInfo[list.size()];

      for (Iterator it=list.iterator(); it.hasNext();)
	a[i++] = (XmlTextInfo)it.next();

      return a;
    }



  /* ********************** */
  /* STATIC INITIALIZATIONS */
  /* ********************** */

  static
    {
      initializeTerminals();
      initializeNonTerminals();
      initializeRules();
      initializeParserActions();
      initializeParserStates();
      initializeActionTables();
      initializeGotoTables();
      initializeStateTables();
    }

  /* ********************* */
  /* PARTIAL PARSE METHODS */
  /* ********************* */

  final static ParseNode $XMLANNOTATION_SWITCH$ = new ParseNode(terminals[3]);

  public final void parseXmlAnnotation (String s) throws IOException
    {
      parseXmlAnnotation(new StringReader(s));
    }

  public final void parseXmlAnnotation (Reader r) throws IOException
    {
      input.setReader(r);
      errorManager().recoverFromErrors(false);
      setSwitchToken($XMLANNOTATION_SWITCH$);
      parse();
    }

  /* **************** */
  /* SEMANTIC ACTIONS */
  /* **************** */

  protected ParseNode semanticAction(ParserRule $rule$) throws IOException
    {
      ParseNode $head$ = new ParseNode($rule$.head);

      switch($rule$.index())
        {
          case 2:
            {
            $head$ = $head$.copy(node($rule$,2));
            break;
            }
          case 12:
            {
            nsPrefix = node($rule$,1).svalue();
            break;
            }
          case 15:
            {
            localName = node($rule$,1).svalue();
            break;
            }
          case 21:
            {
            $AttributeValue$ $node3$;
                if (node($rule$,3) instanceof $AttributeValue$)
                   $node3$ = ($AttributeValue$)node($rule$,3);
                 else
                 {
                     $node3$ = new $AttributeValue$(node($rule$,3));
                     replaceStackNode($rule$,3,$node3$);
                   }

      XmlAttributeInfo info = null;
      String key = node($rule$,1).svalue();
      
      if ($node3$.hasLiteralValueContent)
        info = XmlAttributeInfo.literalXmlAttributeInfo(key,$node3$.value);
      else
        if ($node3$.hasTerminalValueContent)
  	  info = new XmlAttributeInfo(key);
        else
  	  if ($node3$.textInfo != null)
  	    info = new XmlAttributeInfo(key,
  	  	  	  	        new XmlSpecialForm($node3$.textInfo));
  	  else
  	    info = new XmlAttributeInfo(key,
  	  	  	  	        $node3$.cstChildPosition,
  	  	  	  	        $node3$.xmlPath,
  	  	  	  	        $node3$.attributeName);
      
      attributes.add(info);
            break;
            }
          case 22:
            {
            $AttributeValue$ $node0$ = new $AttributeValue$($head$);
                 $head$ = ($AttributeValue$)$node0$;
    $SpecialForm$ $node1$;
                if (node($rule$,1) instanceof $SpecialForm$)
                   $node1$ = ($SpecialForm$)node($rule$,1);
                 else
                 {
                     $node1$ = new $SpecialForm$(node($rule$,1));
                     replaceStackNode($rule$,1,$node1$);
                   }

      $node0$.hasTerminalValueContent = $node1$.hasTerminalValueContent;
      $node0$.textInfo = $node1$.textInfo;
            break;
            }
          case 23:
            {
            $AttributeValue$ $node0$ = new $AttributeValue$($head$);
                 $head$ = ($AttributeValue$)$node0$;

      $node0$.value = node($rule$,1).svalue();
      $node0$.hasLiteralValueContent = true;
            break;
            }
          case 24:
            {
            $AttributeValue$ $node0$ = new $AttributeValue$($head$);
                 $head$ = ($AttributeValue$)$node0$;
    $XmlPath_opt$ $node2$;
                if (node($rule$,2) instanceof $XmlPath_opt$)
                   $node2$ = ($XmlPath_opt$)node($rule$,2);
                 else
                 {
                     $node2$ = new $XmlPath_opt$(node($rule$,2));
                     replaceStackNode($rule$,2,$node2$);
                   }
    $AttributeName_opt$ $node3$;
                if (node($rule$,3) instanceof $AttributeName_opt$)
                   $node3$ = ($AttributeName_opt$)node($rule$,3);
                 else
                 {
                     $node3$ = new $AttributeName_opt$(node($rule$,3));
                     replaceStackNode($rule$,3,$node3$);
                   }

      $node0$.cstChildPosition = (int)node($rule$,1).nvalue();
      $node0$.xmlPath = $node2$.xmlPath;
      $node0$.attributeName = $node3$.attributeName;
            break;
            }
          case 25:
            {
            $SpecialForm$ $node0$ = new $SpecialForm$($head$);
                 $head$ = ($SpecialForm$)$node0$;

      $node0$.hasTerminalValueContent = true;
            break;
            }
          case 26:
            {
            $SpecialForm$ $node0$ = new $SpecialForm$($head$);
                 $head$ = ($SpecialForm$)$node0$;
    $TextArguments$ $node3$;
                if (node($rule$,3) instanceof $TextArguments$)
                   $node3$ = ($TextArguments$)node($rule$,3);
                 else
                 {
                     $node3$ = new $TextArguments$(node($rule$,3));
                     replaceStackNode($rule$,3,$node3$);
                   }

      $node0$.textInfo = $node3$.textInfo;
            break;
            }
          case 27:
            {
            $TextArguments$ $node0$ = new $TextArguments$($head$);
                 $head$ = ($TextArguments$)$node0$;
    $TextArgument$ $node1$;
                if (node($rule$,1) instanceof $TextArgument$)
                   $node1$ = ($TextArgument$)node($rule$,1);
                 else
                 {
                     $node1$ = new $TextArgument$(node($rule$,1));
                     replaceStackNode($rule$,1,$node1$);
                   }

      ($node0$.textInfo = new ArrayList()).add($node1$.info);
            break;
            }
          case 28:
            {
            $TextArguments$ $node0$ = new $TextArguments$($head$);
                 $head$ = ($TextArguments$)$node0$;
    $TextArguments$ $node1$;
                if (node($rule$,1) instanceof $TextArguments$)
                   $node1$ = ($TextArguments$)node($rule$,1);
                 else
                 {
                     $node1$ = new $TextArguments$(node($rule$,1));
                     replaceStackNode($rule$,1,$node1$);
                   }
    $TextArgument$ $node3$;
                if (node($rule$,3) instanceof $TextArgument$)
                   $node3$ = ($TextArgument$)node($rule$,3);
                 else
                 {
                     $node3$ = new $TextArgument$(node($rule$,3));
                     replaceStackNode($rule$,3,$node3$);
                   }

      ($node0$.textInfo = $node1$.textInfo).add($node3$.info);
            break;
            }
          case 29:
            {
            $TextArgument$ $node0$ = new $TextArgument$($head$);
                 $head$ = ($TextArgument$)$node0$;

      ($node0$.info = new XmlTextInfoArg()).setText(node($rule$,1).svalue());
            break;
            }
          case 30:
            {
            $TextArgument$ $node0$ = new $TextArgument$($head$);
                 $head$ = ($TextArgument$)$node0$;
    $TextRef$ $node1$;
                if (node($rule$,1) instanceof $TextRef$)
                   $node1$ = ($TextRef$)node($rule$,1);
                 else
                 {
                     $node1$ = new $TextRef$(node($rule$,1));
                     replaceStackNode($rule$,1,$node1$);
                   }

      $node0$.info = $node1$.info;
            break;
            }
          case 31:
            {
            $TextRef$ $node0$ = new $TextRef$($head$);
                 $head$ = ($TextRef$)$node0$;
    $ChildXmlTree$ $node1$;
                if (node($rule$,1) instanceof $ChildXmlTree$)
                   $node1$ = ($ChildXmlTree$)node($rule$,1);
                 else
                 {
                     $node1$ = new $ChildXmlTree$(node($rule$,1));
                     replaceStackNode($rule$,1,$node1$);
                   }
    $AttributeName_opt$ $node2$;
                if (node($rule$,2) instanceof $AttributeName_opt$)
                   $node2$ = ($AttributeName_opt$)node($rule$,2);
                 else
                 {
                     $node2$ = new $AttributeName_opt$(node($rule$,2));
                     replaceStackNode($rule$,2,$node2$);
                   }

      $node0$.info = new XmlTextInfoArg($node1$.cstChildPosition,
  	  	  	  	   $node1$.xmlPath,
  	  	  	  	   $node2$.attributeName);
            break;
            }
          case 32:
            {
            $AttributeName$ $node0$ = new $AttributeName$($head$);
                 $head$ = ($AttributeName$)$node0$;

      $node0$.attributeName = node($rule$,2).svalue();
            break;
            }
          case 33:
            {
            $XmlChildSpec$ $node0$ = new $XmlChildSpec$($head$);
                 $head$ = ($XmlChildSpec$)$node0$;
    $WrapperPath_opt$ $node1$;
                if (node($rule$,1) instanceof $WrapperPath_opt$)
                   $node1$ = ($WrapperPath_opt$)node($rule$,1);
                 else
                 {
                     $node1$ = new $WrapperPath_opt$(node($rule$,1));
                     replaceStackNode($rule$,1,$node1$);
                   }
    $ChildXmlTree$ $node2$;
                if (node($rule$,2) instanceof $ChildXmlTree$)
                   $node2$ = ($ChildXmlTree$)node($rule$,2);
                 else
                 {
                     $node2$ = new $ChildXmlTree$(node($rule$,2));
                     replaceStackNode($rule$,2,$node2$);
                   }

      $node0$.wrapperPath = $node1$.wrapperPath;    
      $node0$.cstChildPosition = $node2$.cstChildPosition;
      $node0$.xmlPath = $node2$.xmlPath;
      $node0$.hasTerminalValueContent = $node2$.hasTerminalValueContent;
      $node0$.textInfo = $node2$.textInfo;
            break;
            }
          case 34:
            {
            $ChildXmlTree$ $node0$ = new $ChildXmlTree$($head$);
                 $head$ = ($ChildXmlTree$)$node0$;
    $SpecialForm$ $node1$;
                if (node($rule$,1) instanceof $SpecialForm$)
                   $node1$ = ($SpecialForm$)node($rule$,1);
                 else
                 {
                     $node1$ = new $SpecialForm$(node($rule$,1));
                     replaceStackNode($rule$,1,$node1$);
                   }

      $node0$.hasTerminalValueContent = $node1$.hasTerminalValueContent;
      $node0$.textInfo = $node1$.textInfo;
            break;
            }
          case 35:
            {
            $ChildXmlTree$ $node0$ = new $ChildXmlTree$($head$);
                 $head$ = ($ChildXmlTree$)$node0$;
    $XmlPath_opt$ $node2$;
                if (node($rule$,2) instanceof $XmlPath_opt$)
                   $node2$ = ($XmlPath_opt$)node($rule$,2);
                 else
                 {
                     $node2$ = new $XmlPath_opt$(node($rule$,2));
                     replaceStackNode($rule$,2,$node2$);
                   }

      $node0$.cstChildPosition = (int)node($rule$,1).nvalue();
      $node0$.xmlPath = $node2$.xmlPath;
            break;
            }
          case 37:
            {
            $WrapperPath_opt$ $node0$ = new $WrapperPath_opt$($head$);
                 $head$ = ($WrapperPath_opt$)$node0$;
    $WrapperPath$ $node1$;
                if (node($rule$,1) instanceof $WrapperPath$)
                   $node1$ = ($WrapperPath$)node($rule$,1);
                 else
                 {
                     $node1$ = new $WrapperPath$(node($rule$,1));
                     replaceStackNode($rule$,1,$node1$);
                   }

      $node0$.wrapperPath = $node1$.wrapperPath;
            break;
            }
          case 38:
            {
            $WrapperPath$ $node0$ = new $WrapperPath$($head$);
                 $head$ = ($WrapperPath$)$node0$;
    $DotOrStar$ $node2$;
                if (node($rule$,2) instanceof $DotOrStar$)
                   $node2$ = ($DotOrStar$)node($rule$,2);
                 else
                 {
                     $node2$ = new $DotOrStar$(node($rule$,2));
                     replaceStackNode($rule$,2,$node2$);
                   }
 $node0$.add(node($rule$,1).svalue(),$node2$.isStarred);
            break;
            }
          case 39:
            {
            $WrapperPath$ $node0$ = new $WrapperPath$($head$);
                 $head$ = ($WrapperPath$)$node0$;
    $WrapperPath$ $node1$;
                if (node($rule$,1) instanceof $WrapperPath$)
                   $node1$ = ($WrapperPath$)node($rule$,1);
                 else
                 {
                     $node1$ = new $WrapperPath$(node($rule$,1));
                     replaceStackNode($rule$,1,$node1$);
                   }
    $DotOrStar$ $node3$;
                if (node($rule$,3) instanceof $DotOrStar$)
                   $node3$ = ($DotOrStar$)node($rule$,3);
                 else
                 {
                     $node3$ = new $DotOrStar$(node($rule$,3));
                     replaceStackNode($rule$,3,$node3$);
                   }
 $node0$.addTo($node1$.wrapperPath,node($rule$,2).svalue(),$node3$.isStarred);
            break;
            }
          case 41:
            {
            $DotOrStar$ $node0$ = new $DotOrStar$($head$);
                 $head$ = ($DotOrStar$)$node0$;
 $node0$.isStarred = true;
            break;
            }
          case 43:
            {
            $XmlPath_opt$ $node0$ = new $XmlPath_opt$($head$);
                 $head$ = ($XmlPath_opt$)$node0$;
    $XmlPath$ $node2$;
                if (node($rule$,2) instanceof $XmlPath$)
                   $node2$ = ($XmlPath$)node($rule$,2);
                 else
                 {
                     $node2$ = new $XmlPath$(node($rule$,2));
                     replaceStackNode($rule$,2,$node2$);
                   }
 $node0$.xmlPath = $node2$.xmlPath;
            break;
            }
          case 44:
            {
            $XmlPath$ $node0$ = new $XmlPath$($head$);
                 $head$ = ($XmlPath$)$node0$;
 $node0$.add((int)node($rule$,1).nvalue());
            break;
            }
          case 45:
            {
            $XmlPath$ $node0$ = new $XmlPath$($head$);
                 $head$ = ($XmlPath$)$node0$;
    $XmlPath$ $node1$;
                if (node($rule$,1) instanceof $XmlPath$)
                   $node1$ = ($XmlPath$)node($rule$,1);
                 else
                 {
                     $node1$ = new $XmlPath$(node($rule$,1));
                     replaceStackNode($rule$,1,$node1$);
                   }
 $node0$.addTo($node1$.xmlPath,(int)node($rule$,3).nvalue());
            break;
            }
          case 49:
            {
            $XmlTreeRef$ $node1$;
                if (node($rule$,1) instanceof $XmlTreeRef$)
                   $node1$ = ($XmlTreeRef$)node($rule$,1);
                 else
                 {
                     $node1$ = new $XmlTreeRef$(node($rule$,1));
                     replaceStackNode($rule$,1,$node1$);
                   }

      children.add($node1$.cstChildPosition);
      xmlPaths.add($node1$.xmlPath);
      wrapperPaths.add($node1$.wrapperPath);
      attributeNames.add($node1$.attributeName);
      terminalValueFlag = $node1$.hasTerminalValueContent;
      textInfos.add($node1$.textInfo);
            break;
            }
          case 50:
            {
            $XmlTreeRef$ $node3$;
                if (node($rule$,3) instanceof $XmlTreeRef$)
                   $node3$ = ($XmlTreeRef$)node($rule$,3);
                 else
                 {
                     $node3$ = new $XmlTreeRef$(node($rule$,3));
                     replaceStackNode($rule$,3,$node3$);
                   }

      children.add($node3$.cstChildPosition);
      xmlPaths.add($node3$.xmlPath);
      wrapperPaths.add($node3$.wrapperPath);
      attributeNames.add($node3$.attributeName);
      terminalValueFlag = $node3$.hasTerminalValueContent;
      textInfos.add($node3$.textInfo);
            break;
            }
          case 51:
            {
            $XmlTreeRef$ $node0$ = new $XmlTreeRef$($head$);
                 $head$ = ($XmlTreeRef$)$node0$;
    $XmlChildSpec$ $node1$;
                if (node($rule$,1) instanceof $XmlChildSpec$)
                   $node1$ = ($XmlChildSpec$)node($rule$,1);
                 else
                 {
                     $node1$ = new $XmlChildSpec$(node($rule$,1));
                     replaceStackNode($rule$,1,$node1$);
                   }
    $AttributeName_opt$ $node2$;
                if (node($rule$,2) instanceof $AttributeName_opt$)
                   $node2$ = ($AttributeName_opt$)node($rule$,2);
                 else
                 {
                     $node2$ = new $AttributeName_opt$(node($rule$,2));
                     replaceStackNode($rule$,2,$node2$);
                   }

      $node0$.cstChildPosition = $node1$.cstChildPosition;
      $node0$.xmlPath = $node1$.xmlPath;
      $node0$.wrapperPath = $node1$.wrapperPath;
      $node0$.attributeName = $node2$.attributeName;
      $node0$.hasTerminalValueContent = $node1$.hasTerminalValueContent;
      $node0$.textInfo = $node1$.textInfo;
            break;
            }
          case 53:
            {
            $AttributeName_opt$ $node0$ = new $AttributeName_opt$($head$);
                 $head$ = ($AttributeName_opt$)$node0$;
    $AttributeName$ $node1$;
                if (node($rule$,1) instanceof $AttributeName$)
                   $node1$ = ($AttributeName$)node($rule$,1);
                 else
                 {
                     $node1$ = new $AttributeName$(node($rule$,1));
                     replaceStackNode($rule$,1,$node1$);
                   }

      $node0$.attributeName = $node1$.attributeName;
            break;
            }
          case 0: case 1: case 4: case 36: case 42: case 52: case 54: case 56: 
            break;
          default:
            $head$ = $head$.copy(node($rule$,1));
            break;
        }
      return $head$;
    }

  /* **************** */
  /* TERMINAL SYMBOLS */
  /* **************** */

  static void initializeTerminals ()
    {
      terminals = new ParserTerminal[23];

      newTerminal(0,"$EMPTY$",1,2);
      newTerminal(1,"$E_O_I$",1,2);
      newTerminal(2,"error",1,2);
      newTerminal(3,"$XmlAnnotation_switch$",1,2);
      newTerminal(4,"DOT",1,2);
      newTerminal(5,"STAR",1,2);
      newTerminal(6,"SLASH",1,2);
      newTerminal(7,"POSITION",11,2);
      newTerminal(8,"SYMBOL",11,2);
      newTerminal(9,"TEXT",11,2);
      newTerminal(10,"VALUE",11,2);
      newTerminal(11,"NSPREFIX",11,2);
      newTerminal(12,"LOCALNAME",11,2);
      newTerminal(13,"ATTRIBUTES",11,2);
      newTerminal(14,"CHILDREN",11,2);
      newTerminal(15,"LISTSEP",11,2);
      newTerminal(16,"KEYVALSEP",11,2);
      newTerminal(17,"{",1,2);
      newTerminal(18,"}",1,2);
      newTerminal(19,"(",1,2);
      newTerminal(20,")",1,2);
      newTerminal(21,"[",1,2);
      newTerminal(22,"]",1,2);
    }

  /* ******************** */
  /* NON-TERMINAL SYMBOLS */
  /* ******************** */

  static void initializeNonTerminals ()
    {
      nonterminals = new ParserNonTerminal[37];

      newNonTerminal(0,"$START$");
      newNonTerminal(1,"$ROOTS$");
      newNonTerminal(2,"WrapperPath_opt");
      newNonTerminal(3,"WrapperPath");
      newNonTerminal(4,"ChildXmlTree");
      newNonTerminal(5,"XmlChildSpec");
      newNonTerminal(6,"XmlTreeRef");
      newNonTerminal(7,"AttributeName_opt");
      newNonTerminal(8,"AttributeName");
      newNonTerminal(9,"AttributeValue");
      newNonTerminal(10,"XmlPath_opt");
      newNonTerminal(11,"XmlPath");
      newNonTerminal(12,"DotOrStar");
      newNonTerminal(13,"TextArgument");
      newNonTerminal(14,"TextRef");
      newNonTerminal(15,"TextArguments");
      newNonTerminal(16,"SpecialForm");
      newNonTerminal(17,"XmlAnnotation");
      newNonTerminal(18,"AnnotationPairs");
      newNonTerminal(19,"AnnotationPair");
      newNonTerminal(20,"NSPrefixPair");
      newNonTerminal(21,"LocalNamePair");
      newNonTerminal(22,"AttributesPair");
      newNonTerminal(23,"ChildrenPair");
      newNonTerminal(24,"NSPrefixKey");
      newNonTerminal(25,"NSPrefixValue");
      newNonTerminal(26,"KeyValSep_opt");
      newNonTerminal(27,"LocalNameKey");
      newNonTerminal(28,"LocalNameValue");
      newNonTerminal(29,"AttributesKey");
      newNonTerminal(30,"AttributesValue");
      newNonTerminal(31,"Attributes");
      newNonTerminal(32,"Attribute");
      newNonTerminal(33,"ListSep_opt");
      newNonTerminal(34,"ChildrenKey");
      newNonTerminal(35,"ChildrenValue");
      newNonTerminal(36,"XmlTreeRefs");
    }

  /* **************** */
  /* PRODUCTION RULES */
  /* **************** */

  static void initializeRules ()
    {
      rules = new ParserRule[58];

      rules[0] = new ParserRule(0,1,0,1,2);
      rules[1] = new ParserRule(1,1,1,1,2);
      rules[2] = new ParserRule(1,2,2,1,2);
      rules[3] = new ParserRule(17,1,3,1,2);
      rules[4] = new ParserRule(18,0,4,1,2);
      rules[5] = new ParserRule(18,2,5,1,2);
      rules[6] = new ParserRule(19,1,6,1,2);
      rules[7] = new ParserRule(19,1,7,1,2);
      rules[8] = new ParserRule(19,1,8,1,2);
      rules[9] = new ParserRule(19,1,9,1,2);
      rules[10] = new ParserRule(20,2,10,1,2);
      rules[11] = new ParserRule(24,2,11,11,2);
      rules[12] = new ParserRule(25,1,12,11,2);
      rules[13] = new ParserRule(21,2,13,1,2);
      rules[14] = new ParserRule(27,2,14,11,2);
      rules[15] = new ParserRule(28,1,15,11,2);
      rules[16] = new ParserRule(22,2,16,1,2);
      rules[17] = new ParserRule(29,2,17,11,2);
      rules[18] = new ParserRule(30,3,18,1,2);
      rules[19] = new ParserRule(31,1,19,1,2);
      rules[20] = new ParserRule(31,3,20,1,2);
      rules[21] = new ParserRule(32,3,21,11,2);
      rules[22] = new ParserRule(9,1,22,1,2);
      rules[23] = new ParserRule(9,1,23,11,2);
      rules[24] = new ParserRule(9,3,24,11,2);
      rules[25] = new ParserRule(16,1,25,11,2);
      rules[26] = new ParserRule(16,4,26,1,2);
      rules[27] = new ParserRule(15,1,27,1,2);
      rules[28] = new ParserRule(15,3,28,1,2);
      rules[29] = new ParserRule(13,1,29,11,2);
      rules[30] = new ParserRule(13,1,30,1,2);
      rules[31] = new ParserRule(14,2,31,1,2);
      rules[32] = new ParserRule(8,2,32,11,2);
      rules[33] = new ParserRule(5,2,33,1,2);
      rules[34] = new ParserRule(4,1,34,1,2);
      rules[35] = new ParserRule(4,2,35,11,2);
      rules[36] = new ParserRule(2,0,36,1,2);
      rules[37] = new ParserRule(2,1,37,1,2);
      rules[38] = new ParserRule(3,2,38,11,2);
      rules[39] = new ParserRule(3,3,39,11,2);
      rules[40] = new ParserRule(12,1,40,1,2);
      rules[41] = new ParserRule(12,1,41,1,2);
      rules[42] = new ParserRule(10,0,42,1,2);
      rules[43] = new ParserRule(10,3,43,1,2);
      rules[44] = new ParserRule(11,1,44,11,2);
      rules[45] = new ParserRule(11,3,45,11,2);
      rules[46] = new ParserRule(23,2,46,1,2);
      rules[47] = new ParserRule(34,2,47,11,2);
      rules[48] = new ParserRule(35,3,48,1,2);
      rules[49] = new ParserRule(36,1,49,1,2);
      rules[50] = new ParserRule(36,3,50,1,2);
      rules[51] = new ParserRule(6,2,51,1,2);
      rules[52] = new ParserRule(7,0,52,1,2);
      rules[53] = new ParserRule(7,1,53,1,2);
      rules[54] = new ParserRule(26,0,54,1,2);
      rules[55] = new ParserRule(26,1,55,11,2);
      rules[56] = new ParserRule(33,0,56,1,2);
      rules[57] = new ParserRule(33,1,57,11,2);
    }

  /* ************** */
  /* PARSER ACTIONS */
  /* ************** */

  static void initializeParserActions ()
    {
      actions = new ParserAction[346];

      newAction(0,5,0);
      newAction(1,2,0);
      newAction(2,0,3);
      newAction(3,1,4);
      newAction(4,1,4);
      newAction(5,1,4);
      newAction(6,1,4);
      newAction(7,1,4);
      newAction(8,1,1);
      newAction(9,1,4);
      newAction(10,1,4);
      newAction(11,1,4);
      newAction(12,1,4);
      newAction(13,1,4);
      newAction(14,1,3);
      newAction(15,0,14);
      newAction(16,0,15);
      newAction(17,0,16);
      newAction(18,0,17);
      newAction(19,1,5);
      newAction(20,1,5);
      newAction(21,1,5);
      newAction(22,1,5);
      newAction(23,1,5);
      newAction(24,1,6);
      newAction(25,1,6);
      newAction(26,1,6);
      newAction(27,1,6);
      newAction(28,1,6);
      newAction(29,1,7);
      newAction(30,1,7);
      newAction(31,1,7);
      newAction(32,1,7);
      newAction(33,1,7);
      newAction(34,1,8);
      newAction(35,1,8);
      newAction(36,1,8);
      newAction(37,1,8);
      newAction(38,1,8);
      newAction(39,1,9);
      newAction(40,1,9);
      newAction(41,1,9);
      newAction(42,1,9);
      newAction(43,1,9);
      newAction(44,0,84);
      newAction(45,0,82);
      newAction(46,0,67);
      newAction(47,0,24);
      newAction(48,1,54);
      newAction(49,0,19);
      newAction(50,1,54);
      newAction(51,0,19);
      newAction(52,1,54);
      newAction(53,0,19);
      newAction(54,1,54);
      newAction(55,0,19);
      newAction(56,1,47);
      newAction(57,1,55);
      newAction(58,1,55);
      newAction(59,1,55);
      newAction(60,1,55);
      newAction(61,1,55);
      newAction(62,1,55);
      newAction(63,1,17);
      newAction(64,1,14);
      newAction(65,1,11);
      newAction(66,1,46);
      newAction(67,1,46);
      newAction(68,1,46);
      newAction(69,1,46);
      newAction(70,1,46);
      newAction(71,1,36);
      newAction(72,1,36);
      newAction(73,1,36);
      newAction(74,0,27);
      newAction(75,0,63);
      newAction(76,1,56);
      newAction(77,1,56);
      newAction(78,1,56);
      newAction(79,1,56);
      newAction(80,0,49);
      newAction(81,1,37);
      newAction(82,1,37);
      newAction(83,1,37);
      newAction(84,0,61);
      newAction(85,0,59);
      newAction(86,0,60);
      newAction(87,0,37);
      newAction(88,0,38);
      newAction(89,0,39);
      newAction(90,1,52);
      newAction(91,1,52);
      newAction(92,1,52);
      newAction(93,1,52);
      newAction(94,1,52);
      newAction(95,1,52);
      newAction(96,0,33);
      newAction(97,1,49);
      newAction(98,1,49);
      newAction(99,1,49);
      newAction(100,1,49);
      newAction(101,1,49);
      newAction(102,1,49);
      newAction(103,1,51);
      newAction(104,1,51);
      newAction(105,1,51);
      newAction(106,1,51);
      newAction(107,1,51);
      newAction(108,1,51);
      newAction(109,1,53);
      newAction(110,1,53);
      newAction(111,1,53);
      newAction(112,1,53);
      newAction(113,1,53);
      newAction(114,1,53);
      newAction(115,1,53);
      newAction(116,0,34);
      newAction(117,1,32);
      newAction(118,1,32);
      newAction(119,1,32);
      newAction(120,1,32);
      newAction(121,1,32);
      newAction(122,1,32);
      newAction(123,1,32);
      newAction(124,1,33);
      newAction(125,1,33);
      newAction(126,1,33);
      newAction(127,1,33);
      newAction(128,1,33);
      newAction(129,1,33);
      newAction(130,1,33);
      newAction(131,1,34);
      newAction(132,1,34);
      newAction(133,1,34);
      newAction(134,1,34);
      newAction(135,1,34);
      newAction(136,1,34);
      newAction(137,1,34);
      newAction(138,1,42);
      newAction(139,1,42);
      newAction(140,1,42);
      newAction(141,1,42);
      newAction(142,1,42);
      newAction(143,1,42);
      newAction(144,1,42);
      newAction(145,0,52);
      newAction(146,1,25);
      newAction(147,1,25);
      newAction(148,1,25);
      newAction(149,1,25);
      newAction(150,1,25);
      newAction(151,1,25);
      newAction(152,1,25);
      newAction(153,1,25);
      newAction(154,0,40);
      newAction(155,0,37);
      newAction(156,0,42);
      newAction(157,0,38);
      newAction(158,0,39);
      newAction(159,0,47);
      newAction(160,1,56);
      newAction(161,1,56);
      newAction(162,1,56);
      newAction(163,1,56);
      newAction(164,0,49);
      newAction(165,1,29);
      newAction(166,1,29);
      newAction(167,1,29);
      newAction(168,1,29);
      newAction(169,1,29);
      newAction(170,1,29);
      newAction(171,1,30);
      newAction(172,1,30);
      newAction(173,1,30);
      newAction(174,1,30);
      newAction(175,1,30);
      newAction(176,1,30);
      newAction(177,1,52);
      newAction(178,1,52);
      newAction(179,1,52);
      newAction(180,1,52);
      newAction(181,1,52);
      newAction(182,1,52);
      newAction(183,0,33);
      newAction(184,1,27);
      newAction(185,1,27);
      newAction(186,1,27);
      newAction(187,1,27);
      newAction(188,1,27);
      newAction(189,1,27);
      newAction(190,1,31);
      newAction(191,1,31);
      newAction(192,1,31);
      newAction(193,1,31);
      newAction(194,1,31);
      newAction(195,1,31);
      newAction(196,1,26);
      newAction(197,1,26);
      newAction(198,1,26);
      newAction(199,1,26);
      newAction(200,1,26);
      newAction(201,1,26);
      newAction(202,1,26);
      newAction(203,1,26);
      newAction(204,0,37);
      newAction(205,0,42);
      newAction(206,0,38);
      newAction(207,0,39);
      newAction(208,1,57);
      newAction(209,1,57);
      newAction(210,1,57);
      newAction(211,1,57);
      newAction(212,1,28);
      newAction(213,1,28);
      newAction(214,1,28);
      newAction(215,1,28);
      newAction(216,1,28);
      newAction(217,1,28);
      newAction(218,1,35);
      newAction(219,1,35);
      newAction(220,1,35);
      newAction(221,1,35);
      newAction(222,1,35);
      newAction(223,1,35);
      newAction(224,1,35);
      newAction(225,0,54);
      newAction(226,0,55);
      newAction(227,0,56);
      newAction(228,1,44);
      newAction(229,1,44);
      newAction(230,1,43);
      newAction(231,1,43);
      newAction(232,1,43);
      newAction(233,1,43);
      newAction(234,1,43);
      newAction(235,1,43);
      newAction(236,1,43);
      newAction(237,1,43);
      newAction(238,0,57);
      newAction(239,1,45);
      newAction(240,1,45);
      newAction(241,1,38);
      newAction(242,1,38);
      newAction(243,1,38);
      newAction(244,1,38);
      newAction(245,1,40);
      newAction(246,1,40);
      newAction(247,1,40);
      newAction(248,1,40);
      newAction(249,1,41);
      newAction(250,1,41);
      newAction(251,1,41);
      newAction(252,1,41);
      newAction(253,0,59);
      newAction(254,0,60);
      newAction(255,1,39);
      newAction(256,1,39);
      newAction(257,1,39);
      newAction(258,1,39);
      newAction(259,1,48);
      newAction(260,1,48);
      newAction(261,1,48);
      newAction(262,1,48);
      newAction(263,1,48);
      newAction(264,1,36);
      newAction(265,1,36);
      newAction(266,1,36);
      newAction(267,0,27);
      newAction(268,1,50);
      newAction(269,1,50);
      newAction(270,1,50);
      newAction(271,1,50);
      newAction(272,1,50);
      newAction(273,1,50);
      newAction(274,1,16);
      newAction(275,1,16);
      newAction(276,1,16);
      newAction(277,1,16);
      newAction(278,1,16);
      newAction(279,0,70);
      newAction(280,0,78);
      newAction(281,1,56);
      newAction(282,0,49);
      newAction(283,1,19);
      newAction(284,1,19);
      newAction(285,1,19);
      newAction(286,1,54);
      newAction(287,1,54);
      newAction(288,1,54);
      newAction(289,1,54);
      newAction(290,0,19);
      newAction(291,0,74);
      newAction(292,0,75);
      newAction(293,0,38);
      newAction(294,0,39);
      newAction(295,1,21);
      newAction(296,1,21);
      newAction(297,1,21);
      newAction(298,1,22);
      newAction(299,1,22);
      newAction(300,1,22);
      newAction(301,1,23);
      newAction(302,1,23);
      newAction(303,1,23);
      newAction(304,1,42);
      newAction(305,1,42);
      newAction(306,1,42);
      newAction(307,1,42);
      newAction(308,0,52);
      newAction(309,1,52);
      newAction(310,1,52);
      newAction(311,1,52);
      newAction(312,0,33);
      newAction(313,1,24);
      newAction(314,1,24);
      newAction(315,1,24);
      newAction(316,1,18);
      newAction(317,1,18);
      newAction(318,1,18);
      newAction(319,1,18);
      newAction(320,1,18);
      newAction(321,0,70);
      newAction(322,1,20);
      newAction(323,1,20);
      newAction(324,1,20);
      newAction(325,1,13);
      newAction(326,1,13);
      newAction(327,1,13);
      newAction(328,1,13);
      newAction(329,1,13);
      newAction(330,1,15);
      newAction(331,1,15);
      newAction(332,1,15);
      newAction(333,1,15);
      newAction(334,1,15);
      newAction(335,1,10);
      newAction(336,1,10);
      newAction(337,1,10);
      newAction(338,1,10);
      newAction(339,1,10);
      newAction(340,1,12);
      newAction(341,1,12);
      newAction(342,1,12);
      newAction(343,1,12);
      newAction(344,1,12);
      newAction(345,1,2);
    }

  /* ************* */
  /* PARSER STATES */
  /* ************* */

  static void initializeParserStates ()
    {
      states = new ParserState[86];

      for (int i=0; i<86; i++) newState(i);
    }

  /* ************* */
  /* ACTION TABLES */
  /* ************* */

  static void initializeActionTables ()
    {
      newActionTables(80);

      newActionTable(0,6);
	setAction(0,13,6);
	setAction(0,11,4);
	setAction(0,1,3);
	setAction(0,14,7);
	setAction(0,3,2);
	setAction(0,12,5);

      newActionTable(1,1);
	setAction(1,1,1);

      newActionTable(2,1);
	setAction(2,1,8);

      newActionTable(3,5);
	setAction(3,13,12);
	setAction(3,11,10);
	setAction(3,1,9);
	setAction(3,14,13);
	setAction(3,12,11);

      newActionTable(4,5);
	setAction(4,13,17);
	setAction(4,11,15);
	setAction(4,1,14);
	setAction(4,14,18);
	setAction(4,12,16);

      newActionTable(5,5);
	setAction(5,13,22);
	setAction(5,11,20);
	setAction(5,1,19);
	setAction(5,14,23);
	setAction(5,12,21);

      newActionTable(6,5);
	setAction(6,13,27);
	setAction(6,11,25);
	setAction(6,1,24);
	setAction(6,14,28);
	setAction(6,12,26);

      newActionTable(7,5);
	setAction(7,13,32);
	setAction(7,11,30);
	setAction(7,1,29);
	setAction(7,14,33);
	setAction(7,12,31);

      newActionTable(8,5);
	setAction(8,13,37);
	setAction(8,11,35);
	setAction(8,1,34);
	setAction(8,14,38);
	setAction(8,12,36);

      newActionTable(9,5);
	setAction(9,13,42);
	setAction(9,11,40);
	setAction(9,1,39);
	setAction(9,14,43);
	setAction(9,12,41);

      newActionTable(10,1);
	setAction(10,8,44);

      newActionTable(11,1);
	setAction(11,8,45);

      newActionTable(12,1);
	setAction(12,17,46);

      newActionTable(13,1);
	setAction(13,19,47);

      newActionTable(14,2);
	setAction(14,8,48);
	setAction(14,16,49);

      newActionTable(15,2);
	setAction(15,17,52);
	setAction(15,16,53);

      newActionTable(16,2);
	setAction(16,19,54);
	setAction(16,16,55);

      newActionTable(17,1);
	setAction(17,19,56);

      newActionTable(18,6);
	setAction(18,17,61);
	setAction(18,19,62);
	setAction(18,9,59);
	setAction(18,8,58);
	setAction(18,10,60);
	setAction(18,7,57);

      newActionTable(19,1);
	setAction(19,17,63);

      newActionTable(20,1);
	setAction(20,8,64);

      newActionTable(21,1);
	setAction(21,8,65);

      newActionTable(22,5);
	setAction(22,13,69);
	setAction(22,11,67);
	setAction(22,1,66);
	setAction(22,14,70);
	setAction(22,12,68);

      newActionTable(23,4);
	setAction(23,8,74);
	setAction(23,9,72);
	setAction(23,10,73);
	setAction(23,7,71);

      newActionTable(24,6);
	setAction(24,15,80);
	setAction(24,9,78);
	setAction(24,8,77);
	setAction(24,20,75);
	setAction(24,10,79);
	setAction(24,7,76);

      newActionTable(25,4);
	setAction(25,8,84);
	setAction(25,9,82);
	setAction(25,10,83);
	setAction(25,7,81);

      newActionTable(26,2);
	setAction(26,4,85);
	setAction(26,5,86);

      newActionTable(27,3);
	setAction(27,9,89);
	setAction(27,10,88);
	setAction(27,7,87);

      newActionTable(28,7);
	setAction(28,15,94);
	setAction(28,9,92);
	setAction(28,8,91);
	setAction(28,6,96);
	setAction(28,20,95);
	setAction(28,10,93);
	setAction(28,7,90);

      newActionTable(29,6);
	setAction(29,15,101);
	setAction(29,9,99);
	setAction(29,8,98);
	setAction(29,20,102);
	setAction(29,10,100);
	setAction(29,7,97);

      newActionTable(30,6);
	setAction(30,15,107);
	setAction(30,9,105);
	setAction(30,8,104);
	setAction(30,20,108);
	setAction(30,10,106);
	setAction(30,7,103);

      newActionTable(31,7);
	setAction(31,15,113);
	setAction(31,9,111);
	setAction(31,8,110);
	setAction(31,18,114);
	setAction(31,20,115);
	setAction(31,10,112);
	setAction(31,7,109);

      newActionTable(32,1);
	setAction(32,8,116);

      newActionTable(33,7);
	setAction(33,15,121);
	setAction(33,9,119);
	setAction(33,8,118);
	setAction(33,18,122);
	setAction(33,20,123);
	setAction(33,10,120);
	setAction(33,7,117);

      newActionTable(34,7);
	setAction(34,15,129);
	setAction(34,9,127);
	setAction(34,8,126);
	setAction(34,6,124);
	setAction(34,20,130);
	setAction(34,10,128);
	setAction(34,7,125);

      newActionTable(35,7);
	setAction(35,15,136);
	setAction(35,9,134);
	setAction(35,8,133);
	setAction(35,6,131);
	setAction(35,20,137);
	setAction(35,10,135);
	setAction(35,7,132);

      newActionTable(36,8);
	setAction(36,15,143);
	setAction(36,9,141);
	setAction(36,8,140);
	setAction(36,21,145);
	setAction(36,6,138);
	setAction(36,20,144);
	setAction(36,10,142);
	setAction(36,7,139);

      newActionTable(37,8);
	setAction(37,15,151);
	setAction(37,9,149);
	setAction(37,8,148);
	setAction(37,6,146);
	setAction(37,18,152);
	setAction(37,20,153);
	setAction(37,10,150);
	setAction(37,7,147);

      newActionTable(38,1);
	setAction(38,19,154);

      newActionTable(39,4);
	setAction(39,9,158);
	setAction(39,8,156);
	setAction(39,10,157);
	setAction(39,7,155);

      newActionTable(40,6);
	setAction(40,15,164);
	setAction(40,9,162);
	setAction(40,8,161);
	setAction(40,20,159);
	setAction(40,10,163);
	setAction(40,7,160);

      newActionTable(41,6);
	setAction(41,15,169);
	setAction(41,9,167);
	setAction(41,8,166);
	setAction(41,20,170);
	setAction(41,10,168);
	setAction(41,7,165);

      newActionTable(42,6);
	setAction(42,15,175);
	setAction(42,9,173);
	setAction(42,8,172);
	setAction(42,20,176);
	setAction(42,10,174);
	setAction(42,7,171);

      newActionTable(43,6);
	setAction(43,15,188);
	setAction(43,9,186);
	setAction(43,8,185);
	setAction(43,20,189);
	setAction(43,10,187);
	setAction(43,7,184);

      newActionTable(44,6);
	setAction(44,15,194);
	setAction(44,9,192);
	setAction(44,8,191);
	setAction(44,20,195);
	setAction(44,10,193);
	setAction(44,7,190);

      newActionTable(45,8);
	setAction(45,15,201);
	setAction(45,9,199);
	setAction(45,8,198);
	setAction(45,6,196);
	setAction(45,18,202);
	setAction(45,20,203);
	setAction(45,10,200);
	setAction(45,7,197);

      newActionTable(46,4);
	setAction(46,9,210);
	setAction(46,8,209);
	setAction(46,10,211);
	setAction(46,7,208);

      newActionTable(47,6);
	setAction(47,15,216);
	setAction(47,9,214);
	setAction(47,8,213);
	setAction(47,20,217);
	setAction(47,10,215);
	setAction(47,7,212);

      newActionTable(48,7);
	setAction(48,15,223);
	setAction(48,9,221);
	setAction(48,8,220);
	setAction(48,6,218);
	setAction(48,20,224);
	setAction(48,10,222);
	setAction(48,7,219);

      newActionTable(49,1);
	setAction(49,7,225);

      newActionTable(50,2);
	setAction(50,4,227);
	setAction(50,22,226);

      newActionTable(51,2);
	setAction(51,4,228);
	setAction(51,22,229);

      newActionTable(52,8);
	setAction(52,15,235);
	setAction(52,9,233);
	setAction(52,8,232);
	setAction(52,6,230);
	setAction(52,18,236);
	setAction(52,20,237);
	setAction(52,10,234);
	setAction(52,7,231);

      newActionTable(53,1);
	setAction(53,7,238);

      newActionTable(54,2);
	setAction(54,4,239);
	setAction(54,22,240);

      newActionTable(55,4);
	setAction(55,9,243);
	setAction(55,8,242);
	setAction(55,10,244);
	setAction(55,7,241);

      newActionTable(56,4);
	setAction(56,9,247);
	setAction(56,8,246);
	setAction(56,10,248);
	setAction(56,7,245);

      newActionTable(57,4);
	setAction(57,9,251);
	setAction(57,8,250);
	setAction(57,10,252);
	setAction(57,7,249);

      newActionTable(58,4);
	setAction(58,9,257);
	setAction(58,8,256);
	setAction(58,10,258);
	setAction(58,7,255);

      newActionTable(59,5);
	setAction(59,13,262);
	setAction(59,11,260);
	setAction(59,1,259);
	setAction(59,14,263);
	setAction(59,12,261);

      newActionTable(60,6);
	setAction(60,15,272);
	setAction(60,9,270);
	setAction(60,8,269);
	setAction(60,20,273);
	setAction(60,10,271);
	setAction(60,7,268);

      newActionTable(61,5);
	setAction(61,13,277);
	setAction(61,11,275);
	setAction(61,1,274);
	setAction(61,14,278);
	setAction(61,12,276);

      newActionTable(62,1);
	setAction(62,8,279);

      newActionTable(63,3);
	setAction(63,15,282);
	setAction(63,8,281);
	setAction(63,18,280);

      newActionTable(64,3);
	setAction(64,15,284);
	setAction(64,8,283);
	setAction(64,18,285);

      newActionTable(65,5);
	setAction(65,9,288);
	setAction(65,8,287);
	setAction(65,16,290);
	setAction(65,10,289);
	setAction(65,7,286);

      newActionTable(66,4);
	setAction(66,9,294);
	setAction(66,8,291);
	setAction(66,10,293);
	setAction(66,7,292);

      newActionTable(67,3);
	setAction(67,15,296);
	setAction(67,8,295);
	setAction(67,18,297);

      newActionTable(68,3);
	setAction(68,15,299);
	setAction(68,8,298);
	setAction(68,18,300);

      newActionTable(69,3);
	setAction(69,15,302);
	setAction(69,8,301);
	setAction(69,18,303);

      newActionTable(70,5);
	setAction(70,15,306);
	setAction(70,8,305);
	setAction(70,21,308);
	setAction(70,6,304);
	setAction(70,18,307);

      newActionTable(71,4);
	setAction(71,15,310);
	setAction(71,8,309);
	setAction(71,6,312);
	setAction(71,18,311);

      newActionTable(72,3);
	setAction(72,15,314);
	setAction(72,8,313);
	setAction(72,18,315);

      newActionTable(73,5);
	setAction(73,13,319);
	setAction(73,11,317);
	setAction(73,1,316);
	setAction(73,14,320);
	setAction(73,12,318);

      newActionTable(74,3);
	setAction(74,15,323);
	setAction(74,8,322);
	setAction(74,18,324);

      newActionTable(75,5);
	setAction(75,13,328);
	setAction(75,11,326);
	setAction(75,1,325);
	setAction(75,14,329);
	setAction(75,12,327);

      newActionTable(76,5);
	setAction(76,13,333);
	setAction(76,11,331);
	setAction(76,1,330);
	setAction(76,14,334);
	setAction(76,12,332);

      newActionTable(77,5);
	setAction(77,13,338);
	setAction(77,11,336);
	setAction(77,1,335);
	setAction(77,14,339);
	setAction(77,12,337);

      newActionTable(78,5);
	setAction(78,13,343);
	setAction(78,11,341);
	setAction(78,1,340);
	setAction(78,14,344);
	setAction(78,12,342);

      newActionTable(79,1);
	setAction(79,1,345);

    }

  /* *********** */
  /* GOTO TABLES */
  /* *********** */

  static void initializeGotoTables ()
    {
      newGotoTables(32);

      newGotoTable(0,3);
	setGoto(0,17,2);
	setGoto(0,1,1);
	setGoto(0,18,4);

      newGotoTable(1,0);

      newGotoTable(2,2);
	setGoto(2,17,85);
	setGoto(2,18,4);

      newGotoTable(3,9);
	setGoto(3,34,13);
	setGoto(3,19,5);
	setGoto(3,23,9);
	setGoto(3,21,7);
	setGoto(3,29,12);
	setGoto(3,20,6);
	setGoto(3,24,10);
	setGoto(3,27,11);
	setGoto(3,22,8);

      newGotoTable(4,1);
	setGoto(4,25,83);

      newGotoTable(5,1);
	setGoto(5,28,81);

      newGotoTable(6,1);
	setGoto(6,30,66);

      newGotoTable(7,1);
	setGoto(7,35,23);

      newGotoTable(8,1);
	setGoto(8,26,22);

      newGotoTable(9,1);
	setGoto(9,26,21);

      newGotoTable(10,1);
	setGoto(10,26,20);

      newGotoTable(11,1);
	setGoto(11,26,18);

      newGotoTable(12,5);
	setGoto(12,2,28);
	setGoto(12,36,25);
	setGoto(12,6,30);
	setGoto(12,3,26);
	setGoto(12,5,29);

      newGotoTable(13,1);
	setGoto(13,33,64);

      newGotoTable(14,1);
	setGoto(14,12,58);

      newGotoTable(15,2);
	setGoto(15,4,35);
	setGoto(15,16,36);

      newGotoTable(16,2);
	setGoto(16,8,32);
	setGoto(16,7,31);

      newGotoTable(17,1);
	setGoto(17,10,51);

      newGotoTable(18,5);
	setGoto(18,15,41);
	setGoto(18,13,45);
	setGoto(18,4,44);
	setGoto(18,16,36);
	setGoto(18,14,43);

      newGotoTable(19,1);
	setGoto(19,33,48);

      newGotoTable(20,2);
	setGoto(20,8,32);
	setGoto(20,7,46);

      newGotoTable(21,4);
	setGoto(21,4,44);
	setGoto(21,13,50);
	setGoto(21,16,36);
	setGoto(21,14,43);

      newGotoTable(22,1);
	setGoto(22,11,53);

      newGotoTable(23,1);
	setGoto(23,12,62);

      newGotoTable(24,4);
	setGoto(24,2,28);
	setGoto(24,6,65);
	setGoto(24,3,26);
	setGoto(24,5,29);

      newGotoTable(25,2);
	setGoto(25,32,69);
	setGoto(25,31,68);

      newGotoTable(26,1);
	setGoto(26,33,79);

      newGotoTable(27,1);
	setGoto(27,26,71);

      newGotoTable(28,2);
	setGoto(28,9,72);
	setGoto(28,16,73);

      newGotoTable(29,1);
	setGoto(29,10,76);

      newGotoTable(30,2);
	setGoto(30,8,32);
	setGoto(30,7,77);

      newGotoTable(31,1);
	setGoto(31,32,80);

    }

  /* ************ */
  /* STATE TABLES */
  /* ************ */

  static void initializeStateTables ()
    {
      setTables(0,0,0);
      setTables(1,1,1);
      setTables(2,2,1);
      setTables(3,3,2);
      setTables(4,4,3);
      setTables(5,5,1);
      setTables(6,6,1);
      setTables(7,7,1);
      setTables(8,8,1);
      setTables(9,9,1);
      setTables(10,10,4);
      setTables(11,11,5);
      setTables(12,12,6);
      setTables(13,13,7);
      setTables(14,14,8);
      setTables(15,14,9);
      setTables(16,15,10);
      setTables(17,16,11);
      setTables(18,17,1);
      setTables(19,18,1);
      setTables(20,19,1);
      setTables(21,20,1);
      setTables(22,21,1);
      setTables(23,22,1);
      setTables(24,23,12);
      setTables(25,24,13);
      setTables(26,25,1);
      setTables(27,26,14);
      setTables(28,27,15);
      setTables(29,28,16);
      setTables(30,29,1);
      setTables(31,30,1);
      setTables(32,31,1);
      setTables(33,32,1);
      setTables(34,33,1);
      setTables(35,34,1);
      setTables(36,35,1);
      setTables(37,36,17);
      setTables(38,37,1);
      setTables(39,38,1);
      setTables(40,39,18);
      setTables(41,40,19);
      setTables(42,41,1);
      setTables(43,42,1);
      setTables(44,28,20);
      setTables(45,43,1);
      setTables(46,44,1);
      setTables(47,45,1);
      setTables(48,39,21);
      setTables(49,46,1);
      setTables(50,47,1);
      setTables(51,48,1);
      setTables(52,49,22);
      setTables(53,50,1);
      setTables(54,51,1);
      setTables(55,52,1);
      setTables(56,53,1);
      setTables(57,54,1);
      setTables(58,55,1);
      setTables(59,56,1);
      setTables(60,57,1);
      setTables(61,26,23);
      setTables(62,58,1);
      setTables(63,59,1);
      setTables(64,23,24);
      setTables(65,60,1);
      setTables(66,61,1);
      setTables(67,62,25);
      setTables(68,63,26);
      setTables(69,64,1);
      setTables(70,65,27);
      setTables(71,66,28);
      setTables(72,67,1);
      setTables(73,68,1);
      setTables(74,69,1);
      setTables(75,70,29);
      setTables(76,71,30);
      setTables(77,72,1);
      setTables(78,73,1);
      setTables(79,62,31);
      setTables(80,74,1);
      setTables(81,75,1);
      setTables(82,76,1);
      setTables(83,77,1);
      setTables(84,78,1);
      setTables(85,79,1);
    }
}

/* ***************** */
/* ANCILLARY CLASSES */
/* ***************** */

class $WrapperPath_opt$ extends ParseNode 
{
  $WrapperPath_opt$ (ParseNode node)
    {
      super(node);
    }

  ArrayList wrapperPath = null;
}

class $WrapperPath$ extends $WrapperPath_opt$ 
{
  $WrapperPath$ (ParseNode node)
    {
      super(node);
    }

  // Set wrapperPath to a new list and add to it the XML wrapper
    // (the symbol and its distribution switch):
    void add (String s, boolean b)
      {
	(wrapperPath = new ArrayList()).add(new XmlWrapper(s,b));
      }

    // Set wrapperPath to the specified path, and add to it the XML
    // wrapper (the symbol and its distribution switch):
    void addTo (ArrayList path, String s, boolean b)
      {
	(wrapperPath = path).add(new XmlWrapper(s,b));
      }
}

class $ChildXmlTree$ extends ParseNode 
{
  $ChildXmlTree$ (ParseNode node)
    {
      super(node);
    }

  int cstChildPosition;
    IntArrayList xmlPath = null;    
    boolean hasTerminalValueContent = false;
    ArrayList textInfo = null;
}

class $XmlChildSpec$ extends $ChildXmlTree$ 
{
  $XmlChildSpec$ (ParseNode node)
    {
      super(node);
    }

  ArrayList wrapperPath = null;
}

class $XmlTreeRef$ extends $XmlChildSpec$ 
{
  $XmlTreeRef$ (ParseNode node)
    {
      super(node);
    }

  String attributeName = null;
}

class $AttributeName_opt$ extends ParseNode 
{
  $AttributeName_opt$ (ParseNode node)
    {
      super(node);
    }

  String attributeName = null;
}

class $AttributeName$ extends $AttributeName_opt$ 
{
  $AttributeName$ (ParseNode node)
    {
      super(node);
    }

  
}

class $AttributeValue$ extends $XmlTreeRef$ 
{
  $AttributeValue$ (ParseNode node)
    {
      super(node);
    }

  boolean hasLiteralValueContent = false;
    String value = null;
    ArrayList textInfo = null;
}

class $XmlPath_opt$ extends ParseNode 
{
  $XmlPath_opt$ (ParseNode node)
    {
      super(node);
    }

  IntArrayList xmlPath = null;
}

class $XmlPath$ extends $XmlPath_opt$ 
{
  $XmlPath$ (ParseNode node)
    {
      super(node);
    }

  // Set xmlPath to a new list and add to it the specififed number.
    void add (int n)
      {
	(xmlPath = new IntArrayList()).add(n);
      }

    // Set xmlPath to the specified path, and add to it the specififed
    // number.
    void addTo (IntArrayList path, int n)
      {
	(xmlPath = path).add(n);
      }
}

class $DotOrStar$ extends ParseNode 
{
  $DotOrStar$ (ParseNode node)
    {
      super(node);
    }

  boolean isStarred = false;
}

class $TextArgument$ extends ParseNode 
{
  $TextArgument$ (ParseNode node)
    {
      super(node);
    }

  XmlTextInfoArg info = null;
}

class $TextRef$ extends $TextArgument$ 
{
  $TextRef$ (ParseNode node)
    {
      super(node);
    }

  
}

class $TextArguments$ extends ParseNode 
{
  $TextArguments$ (ParseNode node)
    {
      super(node);
    }

  ArrayList textInfo = null;
}

class $SpecialForm$ extends $TextArguments$ 
{
  $SpecialForm$ (ParseNode node)
    {
      super(node);
    }

  boolean hasTerminalValueContent = false;
}



This file was generated on Thu Mar 25 18:54:18 PDT 2010 from file XmlAnnotationParser.java
by the ilog.language.tools.Hilite Java tool written by Hassan Aït-Kaci