harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From a...@apache.org
Subject svn commit: r507006 [5/5] - in /harmony/enhanced/classlib/trunk/modules/swing: ./ src/main/java/common/javax/swing/text/html/parser/
Date Tue, 13 Feb 2007 14:02:58 GMT
Added: harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/html/parser/ParserCup.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/html/parser/ParserCup.java?view=auto&rev=507006
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/html/parser/ParserCup.java (added)
+++ harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/html/parser/ParserCup.java Tue Feb 13 06:02:55 2007
@@ -0,0 +1,1137 @@
+
+//----------------------------------------------------
+// The following code was generated by CUP v0.11a beta 20060102
+// Wed Dec 20 21:02:26 ART 2006
+//----------------------------------------------------
+
+package javax.swing.text.html.parser;
+
+import java_cup.runtime.*;
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.List;
+import java.math.BigInteger;
+
+/** CUP v0.11a beta 20060102 generated parser.
+  * @version Wed Dec 20 21:02:26 ART 2006
+  */
+class ParserCup extends java_cup.runtime.lr_parser {
+
+  /** Default constructor. */
+  public ParserCup() {super();}
+
+  /** Constructor which sets the default scanner. */
+  public ParserCup(java_cup.runtime.Scanner s) {super(s);}
+
+  /** Production table. */
+  protected static final short _production_table[][] = 
+    unpackFromStrings(new String[] {
+    "\000\070\000\002\002\004\000\002\002\004\000\002\002" +
+    "\003\000\002\003\003\000\002\003\003\000\002\003\003" +
+    "\000\002\003\003\000\002\003\003\000\002\003\003\000" +
+    "\002\003\003\000\002\003\003\000\002\003\003\000\002" +
+    "\004\003\000\002\004\003\000\002\004\003\000\002\005" +
+    "\004\000\002\032\004\000\002\006\004\000\002\013\003" +
+    "\000\002\013\004\000\002\031\004\000\002\007\005\000" +
+    "\002\007\004\000\002\011\005\000\002\012\004\000\002" +
+    "\012\003\000\002\012\002\000\002\010\006\000\002\014" +
+    "\003\000\002\014\004\000\002\021\004\000\002\021\004" +
+    "\000\002\021\004\000\002\022\003\000\002\022\003\000" +
+    "\002\015\003\000\002\015\005\000\002\015\010\000\002" +
+    "\026\004\000\002\020\003\000\002\020\004\000\002\016" +
+    "\003\000\002\016\005\000\002\024\003\000\002\024\005" +
+    "\000\002\017\004\000\002\017\002\000\002\023\004\000" +
+    "\002\030\003\000\002\030\003\000\002\030\002\000\002" +
+    "\027\003\000\002\034\002\000\002\027\005\000\002\025" +
+    "\003\000\002\025\003" });
+
+  /** Access to production table. */
+  public short[][] production_table() {return _production_table;}
+
+  /** Parse-action table. */
+  protected static final short[][] _action_table = 
+    unpackFromStrings(new String[] {
+    "\000\104\000\024\003\015\004\016\016\025\017\013\020" +
+    "\014\022\022\033\005\034\024\035\011\001\002\000\026" +
+    "\002\ufffa\003\ufffa\004\ufffa\016\ufffa\017\ufffa\020\ufffa\022" +
+    "\ufffa\033\ufffa\034\ufffa\035\ufffa\001\002\000\026\002\ufff6" +
+    "\003\ufff6\004\ufff6\016\ufff6\017\ufff6\020\ufff6\022\ufff6\033" +
+    "\ufff6\034\ufff6\035\ufff6\001\002\000\026\002\ufff3\003\ufff3" +
+    "\004\ufff3\016\ufff3\017\ufff3\020\ufff3\022\ufff3\033\ufff3\034" +
+    "\ufff3\035\ufff3\001\002\000\026\002\ufff5\003\ufff5\004\ufff5" +
+    "\016\ufff5\017\ufff5\020\ufff5\022\ufff5\033\ufff5\034\ufff5\035" +
+    "\ufff5\001\002\000\026\002\ufffd\003\ufffd\004\ufffd\016\ufffd" +
+    "\017\ufffd\020\ufffd\022\ufffd\033\ufffd\034\ufffd\035\ufffd\001" +
+    "\002\000\026\002\ufff7\003\ufff7\004\ufff7\016\ufff7\017\ufff7" +
+    "\020\ufff7\022\ufff7\033\ufff7\034\ufff7\035\ufff7\001\002\000" +
+    "\026\002\ufff4\003\ufff4\004\ufff4\016\ufff4\017\ufff4\020\ufff4" +
+    "\022\ufff4\033\ufff4\034\ufff4\035\ufff4\001\002\000\010\006" +
+    "\uffcf\032\050\033\046\001\002\000\014\006\uffcf\013\uffcf" +
+    "\023\uffcf\032\050\033\046\001\002\000\004\006\103\001" +
+    "\002\000\026\002\ufff8\003\ufff8\004\ufff8\016\ufff8\017\ufff8" +
+    "\020\ufff8\022\ufff8\033\ufff8\034\ufff8\035\ufff8\001\002\000" +
+    "\006\006\101\013\102\001\002\000\026\002\ufffe\003\ufffe" +
+    "\004\ufffe\016\ufffe\017\ufffe\020\ufffe\022\ufffe\033\ufffe\034" +
+    "\ufffe\035\ufffe\001\002\000\026\002\ufffb\003\ufffb\004\ufffb" +
+    "\016\ufffb\017\ufffb\020\ufffb\022\ufffb\033\ufffb\034\ufffb\035" +
+    "\ufffb\001\002\000\026\002\ufffc\003\ufffc\004\ufffc\016\ufffc" +
+    "\017\ufffc\020\ufffc\022\ufffc\033\ufffc\034\ufffc\035\ufffc\001" +
+    "\002\000\010\006\uffef\013\uffef\023\044\001\002\000\026" +
+    "\002\ufff9\003\ufff9\004\ufff9\016\ufff9\017\ufff9\020\ufff9\022" +
+    "\ufff9\033\ufff9\034\ufff9\035\ufff9\001\002\000\010\006\uffe7" +
+    "\012\034\030\032\001\002\000\026\002\uffff\003\uffff\004" +
+    "\uffff\016\uffff\017\uffff\020\uffff\022\uffff\033\uffff\034\uffff" +
+    "\035\uffff\001\002\000\026\002\030\003\015\004\016\016" +
+    "\025\017\013\020\014\022\022\033\005\034\024\035\011" +
+    "\001\002\000\004\002\001\001\002\000\026\002\000\003" +
+    "\000\004\000\016\000\017\000\020\000\022\000\033\000" +
+    "\034\000\035\000\001\002\000\006\006\uffe8\031\040\001" +
+    "\002\000\004\006\037\001\002\000\004\021\035\001\002" +
+    "\000\004\014\036\001\002\000\026\002\uffe6\003\uffe6\004" +
+    "\uffe6\016\uffe6\017\uffe6\020\uffe6\022\uffe6\033\uffe6\034\uffe6" +
+    "\035\uffe6\001\002\000\026\002\uffea\003\uffea\004\uffea\016" +
+    "\uffea\017\uffea\020\uffea\022\uffea\033\uffea\034\uffea\035\uffea" +
+    "\001\002\000\004\006\uffe9\001\002\000\012\006\uffde\007" +
+    "\055\013\uffde\023\uffd8\001\002\000\004\023\044\001\002" +
+    "\000\006\006\uffe5\013\uffe5\001\002\000\016\006\uffcf\007" +
+    "\uffcf\013\uffcf\023\uffcf\032\050\033\046\001\002\000\006" +
+    "\006\uffee\013\uffee\001\002\000\024\006\uffd0\007\uffd0\010" +
+    "\uffd0\011\uffd0\013\uffd0\023\uffd0\025\uffd0\026\uffd0\027\uffd0" +
+    "\001\002\000\024\006\uffd1\007\uffd1\010\uffd1\011\uffd1\013" +
+    "\uffd1\023\uffd1\025\uffd1\026\uffd1\027\uffd1\001\002\000\026" +
+    "\006\uffce\007\uffce\010\uffce\011\uffce\013\uffce\023\uffce\025" +
+    "\uffce\026\uffce\027\uffce\032\uffcd\001\002\000\012\006\uffdb" +
+    "\007\uffdb\013\uffdb\023\uffdb\001\002\000\004\032\050\001" +
+    "\002\000\024\006\uffcc\007\uffcc\010\uffcc\011\uffcc\013\uffcc" +
+    "\023\uffcc\025\uffcc\026\uffcc\027\uffcc\001\002\000\006\006" +
+    "\uffe4\013\uffe4\001\002\000\014\010\060\011\064\025\061" +
+    "\026\056\027\062\001\002\000\026\006\uffcf\010\uffcf\011" +
+    "\uffcf\013\uffcf\023\uffcf\025\uffcf\026\uffcf\027\uffcf\032\050" +
+    "\033\046\001\002\000\022\006\uffdd\010\060\011\064\013" +
+    "\uffdd\023\uffd6\025\061\026\056\027\062\001\002\000\030" +
+    "\006\uffcb\010\uffcb\011\uffcb\013\uffcb\023\uffcb\024\uffcb\025" +
+    "\uffcb\026\uffcb\027\uffcb\032\uffcb\033\uffcb\001\002\000\026" +
+    "\006\uffcf\010\uffcf\011\uffcf\013\uffcf\023\uffcf\025\uffcf\026" +
+    "\uffcf\027\uffcf\032\050\033\046\001\002\000\026\006\uffcf" +
+    "\010\uffcf\011\uffcf\013\uffcf\023\uffcf\025\uffcf\026\uffcf\027" +
+    "\uffcf\032\050\033\046\001\002\000\022\006\uffda\010\uffda" +
+    "\011\uffda\013\uffda\023\uffda\025\uffda\026\uffda\027\uffda\001" +
+    "\002\000\030\006\uffca\010\uffca\011\uffca\013\uffca\023\uffca" +
+    "\024\uffca\025\uffca\026\uffca\027\uffca\032\uffca\033\uffca\001" +
+    "\002\000\004\023\uffd7\001\002\000\010\010\uffd3\011\uffd3" +
+    "\024\uffd3\001\002\000\010\010\060\011\064\024\071\001" +
+    "\002\000\014\006\uffcf\013\uffcf\023\uffd5\032\050\033\046" +
+    "\001\002\000\010\010\uffd4\011\uffd4\024\uffd4\001\002\000" +
+    "\006\006\uffdc\013\uffdc\001\002\000\022\006\uffe1\010\uffe1" +
+    "\011\uffe1\013\uffe1\023\uffe1\025\uffe1\026\uffe1\027\uffe1\001" +
+    "\002\000\022\006\uffe2\010\uffe2\011\uffe2\013\uffe2\023\uffe2" +
+    "\025\uffe2\026\uffe2\027\uffe2\001\002\000\022\006\uffd9\010" +
+    "\uffd9\011\uffd9\013\uffd9\023\uffd9\025\uffd9\026\uffd9\027\uffd9" +
+    "\001\002\000\022\006\uffdf\010\uffdf\011\uffdf\013\uffdf\023" +
+    "\uffdf\025\uffdf\026\uffdf\027\uffdf\001\002\000\022\006\uffe0" +
+    "\010\uffe0\011\uffe0\013\uffe0\023\uffe0\025\uffe0\026\uffe0\027" +
+    "\uffe0\001\002\000\022\006\uffe3\010\uffe3\011\uffe3\013\uffe3" +
+    "\023\uffe3\025\uffe3\026\uffe3\027\uffe3\001\002\000\026\002" +
+    "\ufff2\003\ufff2\004\ufff2\016\ufff2\017\ufff2\020\ufff2\022\ufff2" +
+    "\033\ufff2\034\ufff2\035\ufff2\001\002\000\026\002\ufff0\003" +
+    "\ufff0\004\ufff0\016\ufff0\017\ufff0\020\ufff0\022\ufff0\033\ufff0" +
+    "\034\ufff0\035\ufff0\001\002\000\026\002\uffeb\003\uffeb\004" +
+    "\uffeb\016\uffeb\017\uffeb\020\uffeb\022\uffeb\033\uffeb\034\uffeb" +
+    "\035\uffeb\001\002\000\010\006\uffed\013\uffed\023\uffed\001" +
+    "\002\000\004\006\106\001\002\000\026\002\uffec\003\uffec" +
+    "\004\uffec\016\uffec\017\uffec\020\uffec\022\uffec\033\uffec\034" +
+    "\uffec\035\uffec\001\002" });
+
+  /** Access to parse-action table. */
+  public short[][] action_table() {return _action_table;}
+
+  /** <code>reduce_goto</code> table. */
+  protected static final short[][] _reduce_table = 
+    unpackFromStrings(new String[] {
+    "\000\104\000\030\002\026\003\025\004\017\005\006\006" +
+    "\011\007\007\010\003\011\020\013\016\031\022\033\005" +
+    "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
+    "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
+    "\000\002\001\001\000\006\027\046\030\104\001\001\000" +
+    "\006\027\046\030\103\001\001\000\002\001\001\000\002" +
+    "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
+    "\001\000\002\001\001\000\012\014\044\015\042\016\041" +
+    "\026\040\001\001\000\002\001\001\000\004\012\032\001" +
+    "\001\000\002\001\001\000\026\003\030\004\017\005\006" +
+    "\006\011\007\007\010\003\011\020\013\016\031\022\033" +
+    "\005\001\001\000\002\001\001\000\002\001\001\000\002" +
+    "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
+    "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
+    "\000\002\001\001\000\012\014\053\015\042\016\041\026" +
+    "\040\001\001\000\002\001\001\000\006\027\046\030\050" +
+    "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
+    "\001\000\004\034\051\001\001\000\002\001\001\000\004" +
+    "\027\052\001\001\000\002\001\001\000\002\001\001\000" +
+    "\012\020\056\021\062\024\064\025\065\001\001\000\006" +
+    "\027\046\030\077\001\001\000\010\021\076\022\074\025" +
+    "\075\001\001\000\002\001\001\000\006\027\046\030\073" +
+    "\001\001\000\006\027\046\030\072\001\001\000\002\001" +
+    "\001\000\002\001\001\000\002\001\001\000\004\017\066" +
+    "\001\001\000\004\025\067\001\001\000\006\027\046\030" +
+    "\071\001\001\000\002\001\001\000\002\001\001\000\002" +
+    "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
+    "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
+    "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
+    "\002\001\001\000\002\001\001" });
+
+  /** Access to <code>reduce_goto</code> table. */
+  public short[][] reduce_table() {return _reduce_table;}
+
+  /** Instance of action encapsulation class. */
+  protected CUP$ParserCup$actions action_obj;
+
+  /** Action encapsulation object initializer. */
+  protected void init_actions()
+    {
+      action_obj = new CUP$ParserCup$actions(this);
+    }
+
+  /** Invoke a user supplied parse action. */
+  public java_cup.runtime.Symbol do_action(
+    int                        act_num,
+    java_cup.runtime.lr_parser parser,
+    java.util.Stack            stack,
+    int                        top)
+    throws java.lang.Exception
+  {
+    /* call code in generated class */
+    return action_obj.CUP$ParserCup$do_action(act_num, parser, stack, top);
+  }
+
+  /** Indicates start state. */
+  public int start_state() {return 0;}
+  /** Indicates start production. */
+  public int start_production() {return 0;}
+
+  /** <code>EOF</code> Symbol index. */
+  public int EOF_sym() {return 0;}
+
+  /** <code>error</code> Symbol index. */
+  public int error_sym() {return 1;}
+
+
+
+
+	/**
+	 * A local reference to the ParserHandler.
+	 */
+	private ParserHandler ph;
+	
+	/**
+	 * Receives the ParserHandler were the callback methods will be invoked.
+	 */
+	public void setCallBack (ParserHandler ph) {
+		this.ph = ph;
+	}
+
+	/**
+	 * Sets the ParserHandler of the action manager before processing any symbol.
+	 */
+	public void user_init() {
+		action_obj.setHandler(ph);	
+	}
+	
+	
+	public void	report_fatal_error(final String message, final Object info){
+		ph.reportRemainingElements();		
+	}
+	
+	public void	report_error(final String message, final Object info){
+
+	}
+	
+
+
+}
+
+/** Cup generated class to encapsulate user supplied action code.*/
+class CUP$ParserCup$actions {
+
+    
+
+	/**
+	 * A local reference of the ParserHandler in the action manager.
+	 */
+	private ParserHandler ph; 
+	
+	/**
+	 * It sets the ParserHandler for this action manager.
+	 */
+	public void setHandler (final ParserHandler ph) {
+		this.ph = ph;
+	}
+	
+	/**
+	 * This idicates whether the las tag was successfully created or not
+	 */	
+	private static boolean lastStartTagCreatedOk;
+	
+	public boolean isLastStartTagCreatedOk(){
+		return lastStartTagCreatedOk;
+	}
+
+  private final ParserCup parser;
+
+  /** Constructor */
+  CUP$ParserCup$actions(ParserCup parser) {
+    this.parser = parser;
+  }
+
+  /** Method with the actual generated action code. */
+  public final java_cup.runtime.Symbol CUP$ParserCup$do_action(
+    int                        CUP$ParserCup$act_num,
+    java_cup.runtime.lr_parser CUP$ParserCup$parser,
+    java.util.Stack            CUP$ParserCup$stack,
+    int                        CUP$ParserCup$top)
+    throws java.lang.Exception
+    {
+      /* Symbol object for return from actions */
+      java_cup.runtime.Symbol CUP$ParserCup$result;
+
+      /* select the action based on the action number */
+      switch (CUP$ParserCup$act_num)
+        {
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 55: // qm ::= SQM 
+            {
+              Character RESULT = null;
+		int quotemarkleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
+		int quotemarkright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
+		Character quotemark = (Character)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
+		
+					RESULT = quotemark;
+				
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(19/*qm*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 54: // qm ::= DQM 
+            {
+              Character RESULT = null;
+		int quotemarkleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
+		int quotemarkright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
+		Character quotemark = (Character)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
+		
+					RESULT = quotemark;
+
+				
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(19/*qm*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 53: // lexicalerrors ::= LEXERR NT$0 lexicalerrors 
+            {
+              List<String> RESULT = null;
+              // propagate RESULT from NT$0
+              if ( ((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value != null )
+                RESULT = (List<String>) ((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value;
+		int error1left = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).left;
+		int error1right = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).right;
+		String error1 = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).value;
+		int error2left = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
+		int error2right = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
+		List<String> error2 = (List<String>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
+		
+			  			RESULT.addAll(error2);
+			  		
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(21/*lexicalerrors*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 52: // NT$0 ::= 
+            {
+              Object RESULT = null;
+		int error1left = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
+		int error1right = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
+		String error1 = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
+
+				  		List<String> list = new ArrayList<String>();
+						list.add(error1);
+						RESULT = list;
+					
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(26/*NT$0*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 51: // lexicalerrors ::= LEXERR 
+            {
+              List<String> RESULT = null;
+		int error1left = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
+		int error1right = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
+		String error1 = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
+							
+						List<String> list = new ArrayList<String>();
+						list.add(error1);
+						RESULT = list;
+					
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(21/*lexicalerrors*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 50: // optional_lexicalerrors ::= 
+            {
+              List<String> RESULT = null;
+
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(22/*optional_lexicalerrors*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 49: // optional_lexicalerrors ::= EOFTK 
+            {
+              List<String> RESULT = null;
+		int tokenleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
+		int tokenright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
+		String token = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
+
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(22/*optional_lexicalerrors*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 48: // optional_lexicalerrors ::= lexicalerrors 
+            {
+              List<String> RESULT = null;
+		int error2left = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
+		int error2right = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
+		List<String> error2 = (List<String>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
+														
+								RESULT = error2;
+							
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(22/*optional_lexicalerrors*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 47: // attrval_lit ::= ATTRVAL_LIT optional_lexicalerrors 
+            {
+              Pair<Object,List<String>> RESULT = null;
+		int nextLitleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left;
+		int nextLitright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).right;
+		String nextLit = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value;
+		int error1left = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
+		int error1right = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
+		List<String> error1 = (List<String>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
+
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(17/*attrval_lit*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 46: // literal ::= 
+            {
+              String RESULT = null;
+		 RESULT = new String (""); 
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(13/*literal*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 45: // literal ::= literal ATTRVAL_LIT 
+            {
+              String RESULT = null;
+		int prevLitleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left;
+		int prevLitright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).right;
+		String prevLit = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value;
+		int nextLitleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
+		int nextLitright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
+		String nextLit = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
+		 RESULT = prevLit + nextLit; 
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(13/*literal*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 44: // mult_attr_value ::= qm literal qm 
+            {
+              Pair<Object,List<String>> RESULT = null;
+		int attrValueleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left;
+		int attrValueright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).right;
+		String attrValue = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value;
+		 
+					  	
+					  	RESULT = new Pair(attrValue, new ArrayList());
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(18/*mult_attr_value*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 43: // mult_attr_value ::= single_attr_value 
+            {
+              Pair<Object,List<String>> RESULT = null;
+		int attrValueleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
+		int attrValueright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
+		Pair<Object,List<String>> attrValue = (Pair<Object,List<String>>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
+		 RESULT = attrValue; 
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(18/*mult_attr_value*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 42: // mult_attr ::= attribute_name EQUALS mult_attr_value 
+            {
+              HTMLAttributeList RESULT = null;
+		int attrNameleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).left;
+		int attrNameright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).right;
+		Pair<String,List<String>> attrName = (Pair<String,List<String>>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).value;
+		int attrValueleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
+		int attrValueright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
+		Pair<Object,List<String>> attrValue = (Pair<Object,List<String>>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
+			
+					List<String> array= new ArrayList<String>();
+					
+						if(attrName.getSecond()!=null)
+							array.addAll(attrName.getSecond());
+						if(attrValue.getSecond()!=null)
+							array.addAll(attrValue.getSecond());					 	
+					 RESULT = new HTMLAttributeList (attrName.getFirst(), attrValue.getFirst(), attrNameright, attrValueright, null,attrName.getSecond()); 
+
+					
+					
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(12/*mult_attr*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 41: // mult_attr ::= attribute_name 
+            {
+              HTMLAttributeList RESULT = null;
+		int attrNameleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
+		int attrNameright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
+		Pair<String,List<String>> attrName = (Pair<String,List<String>>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
+		 RESULT = new HTMLAttributeList (attrName.getFirst(), null, attrNameleft, attrNameright, null,attrName.getSecond()); 
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(12/*mult_attr*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 40: // single_attr_value ::= single_attr_value any_value 
+            {
+              Pair<Object,List<String>> RESULT = null;
+		int prevAttrValueleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left;
+		int prevAttrValueright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).right;
+		Pair<Object,List<String>> prevAttrValue = (Pair<Object,List<String>>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value;
+		int newAttrValueleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
+		int newAttrValueright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
+		Pair<Object,List<String>> newAttrValue = (Pair<Object,List<String>>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
+		 
+					  	List<String> array= new ArrayList<String>();					
+						if(prevAttrValue!=null && prevAttrValue.getSecond()!=null) {
+							array.addAll(prevAttrValue.getSecond());
+						}
+						if(newAttrValue!=null && newAttrValue.getSecond()!=null) {
+							array.addAll(newAttrValue.getSecond());					
+						}	  	
+					  	Pair<Object,List<String>> pair = new Pair<Object,List<String>>((prevAttrValue !=null ?prevAttrValue.getFirst().toString() : "") + (newAttrValue!=null ? newAttrValue.getFirst().toString() : ""),array);
+					  	RESULT = pair;
+					  	
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(14/*single_attr_value*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 39: // single_attr_value ::= any_no_lit 
+            {
+              Pair<Object,List<String>> RESULT = null;
+		int attrValueleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
+		int attrValueright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
+		Pair<Object,List<String>> attrValue = (Pair<Object,List<String>>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
+		 RESULT = attrValue; 
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(14/*single_attr_value*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 38: // attribute_name ::= ATTR_NAME optional_lexicalerrors 
+            {
+              Pair<String,List<String>> RESULT = null;
+		int attrNameTkleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left;
+		int attrNameTkright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).right;
+		String attrNameTk = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value;
+		int error1left = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
+		int error1right = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
+		List<String> error1 = (List<String>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
+		 					
+						RESULT = new Pair(attrNameTk,error1 );
+					
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(20/*attribute_name*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 37: // single_attr ::= attribute_name EQUALS qm literal qm optional_lexicalerrors 
+            {
+              HTMLAttributeList RESULT = null;
+		int attrNameleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-5)).left;
+		int attrNameright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-5)).right;
+		Pair<String,List<String>> attrName = (Pair<String,List<String>>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-5)).value;
+		int attrValueleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).left;
+		int attrValueright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).right;
+		String attrValue = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).value;
+		int error1left = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
+		int error1right = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
+		List<String> error1 = (List<String>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
+		 
+				  		List<String> array= new ArrayList<String>();
+						
+						if(attrName.getSecond()!=null) {
+							array.addAll(attrName.getSecond()); 
+						}
+						if(error1!=null) {
+							array.addAll(error1);				  		
+						}
+				  		RESULT = new HTMLAttributeList (attrName.getFirst(), attrValue, attrNameleft, attrValueright, null,array);
+				  		 
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(11/*single_attr*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-5)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 36: // single_attr ::= attribute_name EQUALS single_attr_value 
+            {
+              HTMLAttributeList RESULT = null;
+		int attrNameleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).left;
+		int attrNameright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).right;
+		Pair<String,List<String>> attrName = (Pair<String,List<String>>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).value;
+		int attrValueleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
+		int attrValueright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
+		Pair<Object,List<String>> attrValue = (Pair<Object,List<String>>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
+		  			  		  				  		
+						List<String> array= new ArrayList<String>();
+						
+						if(attrName.getSecond()!=null) {
+							array.addAll(attrName.getSecond());
+						}
+						if(attrValue.getSecond()!=null) {
+							array.addAll(attrValue.getSecond());
+						}
+  				  		RESULT = new HTMLAttributeList (attrName.getFirst(), attrValue.getFirst(), attrNameleft, attrValueright, null,array);
+  				  		
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(11/*single_attr*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 35: // single_attr ::= attribute_name 
+            {
+              HTMLAttributeList RESULT = null;
+		int attrNameleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
+		int attrNameright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
+		Pair<String,List<String>> attrName = (Pair<String,List<String>>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
+		 RESULT = new HTMLAttributeList (attrName.getFirst(), null, attrNameleft, attrNameright, null,attrName.getSecond()); 
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(11/*single_attr*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 34: // any_value ::= qm 
+            {
+              Pair<Object,List<String>> RESULT = null;
+
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(16/*any_value*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 33: // any_value ::= any_no_lit 
+            {
+              Pair<Object,List<String>> RESULT = null;
+		int anyValueleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
+		int anyValueright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
+		Pair<Object,List<String>> anyValue = (Pair<Object,List<String>>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
+		 RESULT = anyValue; 
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(16/*any_value*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 32: // any_no_lit ::= ATTRVAL_NUM optional_lexicalerrors 
+            {
+              Pair<Object,List<String>> RESULT = null;
+		int attrValueTokenleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left;
+		int attrValueTokenright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).right;
+		String attrValueToken = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value;
+		int error1left = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
+		int error1right = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
+		List<String> error1 = (List<String>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
+			
+						RESULT = new Pair(attrValueToken,error1); 
+					 
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(15/*any_no_lit*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 31: // any_no_lit ::= ATTRVAL_NMTK optional_lexicalerrors 
+            {
+              Pair<Object,List<String>> RESULT = null;
+		int attrValueTokenleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left;
+		int attrValueTokenright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).right;
+		String attrValueToken = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value;
+		int error1left = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
+		int error1right = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
+		List<String> error1 = (List<String>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
+		  						
+ 						RESULT = new Pair(attrValueToken,error1);
+ 					
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(15/*any_no_lit*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 30: // any_no_lit ::= ATTRVAL_NUMTK optional_lexicalerrors 
+            {
+              Pair<Object,List<String>> RESULT = null;
+		int attrValueTokenleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left;
+		int attrValueTokenright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).right;
+		String attrValueToken = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value;
+		int error1left = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
+		int error1right = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
+		List<String> error1 = (List<String>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
+		 
+						RESULT = new Pair(attrValueToken,error1);
+					
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(15/*any_no_lit*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 29: // atts ::= mult_attr atts 
+            {
+              HTMLAttributeList RESULT = null;
+		int attrleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left;
+		int attrright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).right;
+		HTMLAttributeList attr = (HTMLAttributeList)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value;
+		int attrListleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
+		int attrListright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
+		HTMLAttributeList attrList = (HTMLAttributeList)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
+		 attr.setNext (attrList);
+					   RESULT =  attr;
+				 	
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(10/*atts*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 28: // atts ::= single_attr 
+            {
+              HTMLAttributeList RESULT = null;
+		int attrleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
+		int attrright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
+		HTMLAttributeList attr = (HTMLAttributeList)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
+		 RESULT = attr; 
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(10/*atts*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 27: // comment ::= TAG_OPEN_EXM COMM COMM_CONTENT TAG_COMM_CLOSE 
+            {
+              Object RESULT = null;
+		int initTagleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-3)).left;
+		int initTagright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-3)).right;
+		String initTag = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-3)).value;
+		int commleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).left;
+		int commright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).right;
+		String comm = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).value;
+		int commTextleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left;
+		int commTextright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).right;
+		String commText = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value;
+		int closeTokenleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
+		int closeTokenright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
+		String closeToken = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
+		 ph.iHaveNewComment(new HTMLComment(
+											commText, 
+											initTagleft,
+											initTagright));	
+					
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(6/*comment*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-3)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 26: // markup_content ::= 
+            {
+              Pair<String,String> RESULT = null;
+		 RESULT = new Pair<String, String> (null, null); 
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(8/*markup_content*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 25: // markup_content ::= MUDECL 
+            {
+              Pair<String,String> RESULT = null;
+		int mkDeclleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
+		int mkDeclright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
+		String mkDecl = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
+		 RESULT = new Pair<String, String> (mkDecl, null); 
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(8/*markup_content*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 24: // markup_content ::= MUDECL MUDECL_CONTENT 
+            {
+              Pair<String,String> RESULT = null;
+		int mkDeclleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left;
+		int mkDeclright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).right;
+		String mkDecl = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value;
+		int mkContleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
+		int mkContright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
+		String mkCont = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
+		 RESULT = new Pair<String, String> (mkDecl, mkCont); 
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(8/*markup_content*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 23: // markup ::= TAG_OPEN_EXM markup_content TAG_CLOSE 
+            {
+              Object RESULT = null;
+		int initTokenleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).left;
+		int initTokenright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).right;
+		String initToken = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).value;
+		int mkContentleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left;
+		int mkContentright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).right;
+		Pair<String,String> mkContent = (Pair<String,String>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value;
+		int closeTokenleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
+		int closeTokenright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
+		Character closeToken = (Character)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
+		 ph.iHaveNewMarkup (new HTMLMarkup(
+											mkContent.getFirst(),
+											mkContent.getSecond(),
+											initTokenleft));
+					
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(7/*markup*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 22: // eelem ::= error TAG_CLOSE 
+            {
+              Object RESULT = null;
+
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(5/*eelem*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 21: // eelem ::= END_TAG_NAME optional_lexicalerrors TAG_CLOSE 
+            {
+              Object RESULT = null;
+		int initTokenleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).left;
+		int initTokenright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).right;
+		String initToken = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).value;
+		int error1left = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left;
+		int error1right = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).right;
+		List<String> error1 = (List<String>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value;
+		int closeTokenleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
+		int closeTokenright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
+		Character closeToken = (Character)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
+		 
+					if(error1!=null){
+						ph.iHaveNewError(HTMLErrorType.ERR_EXPECTED,"\'>\'",null,null);					
+					} 
+					ph.iHaveNewEndTag(new HTMLTag(HTMLTagType.END, initToken, null, initTokenleft, closeTokenleft,  initTokenleft));
+				   
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(5/*eelem*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-2)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 20: // tag_name ::= TAG_NAME optional_lexicalerrors 
+            {
+              String RESULT = null;
+		int startElemTokenleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left;
+		int startElemTokenright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).right;
+		String startElemToken = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value;
+		int error1left = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
+		int error1right = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
+		List<String> error1 = (List<String>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
+		 
+					if(error1!=null){
+					for(String s:error1){
+						ph.iHaveNewError(HTMLErrorType.ERR_INVALID_TAG_CHAR,s,startElemToken,null);				
+					}							
+				}
+				RESULT = startElemToken;
+				
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(23/*tag_name*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 19: // tag_info ::= tag_name atts 
+            {
+              Pair<String,HTMLAttributeList> RESULT = null;
+		int startElemTokenleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left;
+		int startElemTokenright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).right;
+		String startElemToken = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value;
+		int attributesleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
+		int attributesright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
+		HTMLAttributeList attributes = (HTMLAttributeList)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
+		
+					if(attributes.getError() != null){
+						for(String s:attributes.getError()){
+							ph.iHaveNewError(HTMLErrorType.ERR_INVALID_TAG_CHAR,s,startElemToken,null);							
+						}
+						/*if(attributes.getAttributeValue()!=null)
+								ph.iHaveNewError(HTMLErrorType.ERR_ATTVALERR,null,null,null);*/
+					}
+
+					RESULT = new Pair<String, HTMLAttributeList> (startElemToken, attributes); 
+					
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(9/*tag_info*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 18: // tag_info ::= tag_name 
+            {
+              Pair<String,HTMLAttributeList> RESULT = null;
+		int startElemTokenleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
+		int startElemTokenright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
+		String startElemToken = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
+		 	RESULT = new Pair<String, HTMLAttributeList> (startElemToken, null); 
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(9/*tag_info*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 17: // simple_tag ::= tag_info TAG_SLASH_CLOSE 
+            {
+              Object RESULT = null;
+		int tagInfoleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left;
+		int tagInforight = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).right;
+		Pair<String,HTMLAttributeList> tagInfo = (Pair<String,HTMLAttributeList>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value;
+		int closeTokenleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
+		int closeTokenright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
+		String closeToken = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
+		 ph.iHaveNewStartTag(new HTMLTag(HTMLTagType.SIMPLE, tagInfo.getFirst(), tagInfo.getSecond(), tagInfoleft, closeTokenleft, tagInforight)); 
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(4/*simple_tag*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 16: // tag_open ::= TAG_OPEN optional_lexicalerrors 
+            {
+              Character RESULT = null;
+		int initTokenleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left;
+		int initTokenright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).right;
+		Character initToken = (Character)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value;
+		int error1left = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
+		int error1right = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
+		List<String> error1 = (List<String>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
+		
+					if(error1 != null){
+						for(String s:error1){
+							ph.iHaveNewError(HTMLErrorType.ERR_EXPECTED_TAGNAME,null,null,null);
+						}
+					}
+					
+					RESULT = initToken;
+				
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(24/*tag_open*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 15: // start_tag ::= tag_info TAG_CLOSE 
+            {
+              Object RESULT = null;
+		int tagInfoleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left;
+		int tagInforight = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).right;
+		Pair<String,HTMLAttributeList> tagInfo = (Pair<String,HTMLAttributeList>)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value;
+		int closeTokenleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
+		int closeTokenright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
+		Character closeToken = (Character)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
+		 					
+					lastStartTagCreatedOk=true;								// So that the lexer can ask if this was true. Curently, it will always be so, we should write															
+					lastStartTagCreatedOk=true;								// So that the lexer can ask if this was true. Curently, it will always be so, we should write
+					ph.iHaveNewStartTag(new HTMLTag(HTMLTagType.START, tagInfo.getFirst(), tagInfo.getSecond(), tagInfoleft, closeTokenleft, tagInforight)); 
+					
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(3/*start_tag*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 14: // selem ::= bad_tag_open 
+            {
+              Object RESULT = null;
+
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(2/*selem*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 13: // selem ::= simple_tag 
+            {
+              Object RESULT = null;
+
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(2/*selem*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 12: // selem ::= start_tag 
+            {
+              Object RESULT = null;
+
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(2/*selem*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 11: // data ::= EOFTK 
+            {
+              Object RESULT = null;
+		int eofTokenleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
+		int eofTokenright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
+		String eofToken = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
+		  
+					/* finalize the parsing "by hand" */
+					try {
+						parser.done_parsing();
+					} catch (Throwable e) {			
+						ph.iHaveNewError(HTMLErrorType.ERR_THROWABLE, eofToken,null,null);
+					} 
+				  
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(1/*data*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 10: // data ::= LEXERR_EXPECTED_TAG_NAME 
+            {
+              Object RESULT = null;
+		int error1left = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
+		int error1right = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
+		String error1 = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
+		
+				  	ph.iHaveNewError(HTMLErrorType.ERR_EXPECTED_TAGNAME,null,null,null);
+				  
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(1/*data*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 9: // data ::= SYNC 
+            {
+              Object RESULT = null;
+
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(1/*data*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 8: // data ::= EOF_LITERAL 
+            {
+              Object RESULT = null;
+		int textoleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
+		int textoright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
+		String texto = (String)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
+		ph.iHaveNewError(HTMLErrorType.ERR_EOF_LITERAL,texto,null,null);
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(1/*data*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 7: // data ::= comment 
+            {
+              Object RESULT = null;
+
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(1/*data*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 6: // data ::= markup 
+            {
+              Object RESULT = null;
+
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(1/*data*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 5: // data ::= TEXT 
+            {
+              Object RESULT = null;
+		int textTokenleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left;
+		int textTokenright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right;
+		HTMLText textToken = (HTMLText)((java_cup.runtime.Symbol) CUP$ParserCup$stack.peek()).value;
+		 ph.iHaveNewText(textToken); 
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(1/*data*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 4: // data ::= eelem 
+            {
+              Object RESULT = null;
+
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(1/*data*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 3: // data ::= selem 
+            {
+              Object RESULT = null;
+
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(1/*data*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 2: // doc ::= data 
+            {
+              Object RESULT = null;
+
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(0/*doc*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 1: // doc ::= doc data 
+            {
+              Object RESULT = null;
+
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(0/*doc*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          return CUP$ParserCup$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 0: // $START ::= doc EOF 
+            {
+              Object RESULT = null;
+		int start_valleft = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left;
+		int start_valright = ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).right;
+		Object start_val = (Object)((java_cup.runtime.Symbol) CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).value;
+		RESULT = start_val;
+              CUP$ParserCup$result = new java_cup.runtime.Symbol(0/*$START*/, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.elementAt(CUP$ParserCup$top-1)).left, ((java_cup.runtime.Symbol)CUP$ParserCup$stack.peek()).right, RESULT);
+            }
+          /* ACCEPT */
+          CUP$ParserCup$parser.done_parsing();
+          return CUP$ParserCup$result;
+
+          /* . . . . . .*/
+          default:
+            throw new Exception(
+               "Invalid action number found in internal parse table");
+
+        }
+    }
+}
+

Propchange: harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/html/parser/ParserCup.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/html/parser/ParserDelegator.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/html/parser/ParserDelegator.java?view=diff&rev=507006&r1=507005&r2=507006
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/html/parser/ParserDelegator.java (original)
+++ harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/html/parser/ParserDelegator.java Tue Feb 13 06:02:55 2007
@@ -14,43 +14,131 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-/**
- * @author Evgeniya G. Maenkova
- * @version $Revision$
- */
 package javax.swing.text.html.parser;
 
+import java.io.DataInputStream;
+import java.io.File;
+import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.Reader;
 import java.io.Serializable;
+import java.net.URL;
 
 import javax.swing.text.html.HTMLEditorKit;
 
-public class ParserDelegator extends HTMLEditorKit.Parser implements Serializable {
-
-
+/**
+ * This class is a wrapper of {@link DocumentParser}. <br>
+ * <br>
+ * Internally stores a reference to a DTD ({@link ParserDelegator#defaultDTD})
+ * which is filled with <code>html32.bdtd</code>, a file located at the classpath
+ * with the default DTD content (HTML 3.2) in ASN1 format. Then, instances
+ * a {@link DocumentParser} with this dtd. <br>
+ * <br>
+ * So, when the method
+ * {@link ParserDelegator#parse(Reader, javax.swing.text.html.HTMLEditorKit.ParserCallback, boolean) parse(Reader, HTMLEditorKit.ParserCallback, boolean)}
+ * is invoked, its <em>"delegates"</em> to a {@link DocumentParser}.
+ * 
+ * @author Diego Raúl Mercado
+ * @author Alejandro Sánchez
+ * @author Alejandro Barturen
+ * @version $Revision: 1.12 $
+ */
+public class ParserDelegator extends HTMLEditorKit.Parser implements
+        Serializable {
 
+    /**
+     * The name of the default dtd.
+     */
+    private static final String DEFAULT_DTD_NAME = "html32";
+
+    /**
+     * Stores the default DTD (the content of the file <code>html32.bdtd</code>).
+     */
+    private static DTD defaultDTD;
+
+    /**
+     * Sets {@link ParserDelegator#defaultDTD} with the <code>html32.bdtd</code>
+     * file by calling the method {@link ParserDelegator#setDefaultDTD()}.
+     */
     public ParserDelegator() {
-        throw new UnsupportedOperationException("Not implemented");
+        setDefaultDTD();
     }
 
-
-    public void parse(final Reader a0, final HTMLEditorKit.ParserCallback a1, final boolean a2) throws IOException {
-        throw new UnsupportedOperationException("Not implemented");
-
+    /**
+     * Simply calls the method
+     * {@link javax.swing.text.html.parser.DocumentParser#parse(Reader, javax.swing.text.html.HTMLEditorKit.ParserCallback, boolean) parse(Reader, HTMLEditorKit.ParserCallback, boolean)}
+     * of the wrapped {@link javax.swing.text.html.parser.DocumentParser} with
+     * the same arguments
+     * 
+     * @param r
+     *            the reader
+     * @param cb
+     *            the callback
+     * @param ignoreCharSet
+     *            the ignoreCharSet
+     * @throws IOException
+     *             if the {@link DocumentParser} propagates it
+     */
+    public void parse(final Reader r, final HTMLEditorKit.ParserCallback cb,
+            final boolean ignoreCharSet) throws IOException {
+        DocumentParser dp = new DocumentParser(defaultDTD); 
+        dp.parse(r, cb, ignoreCharSet);
     }
 
-
-    protected static DTD createDTD(final DTD a0, final String a1) {
-        throw new UnsupportedOperationException("Not implemented");
-
+    /**
+     * Reads the DTD content from the file called <code>name</code> + "bdtd"
+     * located in the classpath (if there is any) and fills the <code>dtd</code>
+     * with it. Then, returns <code>dtd</code>. <br>
+     * <br>
+     * The complete behavior is the following:
+     * <ol>
+     * <li> Finds the resource (the ASN1 binary file) in the classpath by
+     * appending ".bdtd" to <code>name</code>.
+     * <li> Creates an stream from this file and adds the information contained
+     * into <code>dtd</code> by calling its {@link DTD#read(DataInputStream)}
+     * method
+     * <li> Returns the <code>dtd</code>
+     * </ol>
+     * <br>
+     * Notice that this method catches any {@link Exception} and ignores it.
+     * It's the same behavior as the reference implementation.
+     * 
+     * @param dtd
+     *            the dtd to be filled
+     * @param name
+     *            the name of the file located in the classpath (without .bdtd)
+     * @return the <code>dtd</code>
+     */
+    protected static DTD createDTD(final DTD dtd, final String name) {
+        try {
+            String oldName = dtd.name;
+            // gets the location of the harcoded file that is located in the
+            // classpath ...
+            URL bdtdURL = ParserDelegator.class.getResource(name + ".bdtd");
+            // fills the DTD ...
+            dtd.read(new DataInputStream(
+                    new FileInputStream(new File(bdtdURL.toURI()))));
+            dtd.name = oldName;
+            DTD.putDTDHash(name, dtd);
+        } catch (Exception e) {
+            // ignores any exception (same as Reference Implementation)
+        }
+        return dtd;
     }
 
-
+    /**
+     * Sets the content of {@link ParserDelegator#defaultDTD}. Internally,
+     * calls {@link ParserDelegator#createDTD(DTD, String)} with
+     * {@link ParserDelegator#defaultDTD} and
+     * {@link ParserDelegator#DEFAULT_DTD_NAME} as arguments.
+     * 
+     * Notice that {@link ParserDelegator#defaultDTD} is cached. It means that
+     * it's filled only once.
+     */
     protected static synchronized void setDefaultDTD() {
-        throw new UnsupportedOperationException("Not implemented");
-
+        if (defaultDTD == null) {
+            defaultDTD = new DTD(DEFAULT_DTD_NAME);
+            createDTD(defaultDTD, DEFAULT_DTD_NAME);
+        }
     }
-
-}
-
+}
\ No newline at end of file

Added: harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/html/parser/ParserHandler.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/html/parser/ParserHandler.java?view=auto&rev=507006
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/html/parser/ParserHandler.java (added)
+++ harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/html/parser/ParserHandler.java Tue Feb 13 06:02:55 2007
@@ -0,0 +1,50 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package javax.swing.text.html.parser;
+
+import java.io.IOException;
+import java.io.Reader;
+
+import javax.swing.text.ChangedCharSetException;
+
+/**
+ * @author Diego Raúl Mercado
+ * @author Alejandro Sánchez
+ * @author Alejandro Barturen
+ * @version $Revision: 1.23 $
+ */
+interface ParserHandler {
+    void parse(Reader in) throws IOException;
+    
+    // called by DocumentParser at the end
+    String getEOLString();
+    
+    void iHaveNewStartTag(final HTMLTag htmlTag) throws ChangedCharSetException;
+        
+    void iHaveNewMarkup(final HTMLMarkup htmlMarkup) throws IOException;
+    
+    void iHaveNewEndTag(final HTMLTag htmlTag);
+    
+    void iHaveNewText(final HTMLText htmlText);
+    
+    void iHaveNewComment(final HTMLComment htmlComment); 
+    
+    void iHaveNewError(final HTMLErrorType errMsgType, final String attr1,final String attr2,final String attr3);
+    
+    void reportRemainingElements();
+}
\ No newline at end of file

Propchange: harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/html/parser/ParserHandler.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/html/parser/ParserSym.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/html/parser/ParserSym.java?view=auto&rev=507006
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/html/parser/ParserSym.java (added)
+++ harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/html/parser/ParserSym.java Tue Feb 13 06:02:55 2007
@@ -0,0 +1,41 @@
+
+//----------------------------------------------------
+// The following code was generated by CUP v0.11a beta 20060102
+// Wed Dec 20 21:02:26 ART 2006
+//----------------------------------------------------
+
+package javax.swing.text.html.parser;
+
+/** CUP generated interface containing symbol constants. */
+interface ParserSym {
+  /* terminals */
+  public static final int TAG_CLOSE = 4;
+  public static final int TAG_COMM_CLOSE = 10;
+  public static final int EOFTK = 25;
+  public static final int TAG_SLASH_CLOSE = 9;
+  public static final int ATTR_NAME = 17;
+  public static final int LEXERR = 24;
+  public static final int MUDECL = 22;
+  public static final int TAG_OPEN = 3;
+  public static final int COMM = 8;
+  public static final int ATTRVAL_NMTK = 19;
+  public static final int ATTRVAL_NUM = 21;
+  public static final int EMPTY_TAG = 11;
+  public static final int MUDECL_CONTENT = 23;
+  public static final int LEXERR_EXPECTED_TAG_NAME = 27;
+  public static final int EQUALS = 5;
+  public static final int END_TAG_NAME = 13;
+  public static final int DQM = 6;
+  public static final int EOF = 0;
+  public static final int TAG_NAME = 14;
+  public static final int error = 1;
+  public static final int SYNC = 2;
+  public static final int ATTRVAL_NUMTK = 20;
+  public static final int TEXT = 16;
+  public static final int SQM = 7;
+  public static final int EOF_LITERAL = 26;
+  public static final int COMM_CONTENT = 15;
+  public static final int ATTRVAL_LIT = 18;
+  public static final int TAG_OPEN_EXM = 12;
+}
+

Propchange: harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/html/parser/ParserSym.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/html/parser/TagElement.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/html/parser/TagElement.java?view=diff&rev=507006&r1=507005&r2=507006
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/html/parser/TagElement.java (original)
+++ harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/html/parser/TagElement.java Tue Feb 13 06:02:55 2007
@@ -16,12 +16,19 @@
  */
 /**
  * @author Evgeniya G. Maenkova
- * @version $Revision$
+ * @version $Revision: 1.6 $
  */
 package javax.swing.text.html.parser;
 
 import javax.swing.text.html.HTML;
+import javax.swing.text.html.HTML.Tag;
 
+/**
+ * @author Diego Raúl Mercado
+ * @author Alejandro Sánchez
+ * @author Alejandro Barturen
+ * @version $Revision: 1.6 $
+ */
 public class TagElement {
     private HTML.Tag tag;
     private Element element;
@@ -31,9 +38,19 @@
                       final boolean fictional) {
         this.element = element;
         isFictional = fictional;
-        tag = HTML.getTag(element.name.toLowerCase());
-        if (tag == null) {
-            tag = new HTML.UnknownTag(element.name.toLowerCase());
+        
+        // HTML.getTag() creates an element if it is not defined in 
+        // HTML.getAllTags(). Because of this we have to look up at Tag[] array 
+        Tag[] tags = HTML.getAllTags();
+        boolean found = false;
+        for (int i = 0; i < tags.length; i++) {
+            if (tags[i].toString().equals(element.name)) {
+                tag = HTML.getTag(element.name);
+                found = true;
+            }
+        }
+        if (!found) {
+            tag = new HTML.UnknownTag(element.name);
         }
     }
 

Added: harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/html/parser/html32.bdtd
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/html/parser/html32.bdtd?view=auto&rev=507006
==============================================================================
Binary file - no diff available.

Propchange: harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/html/parser/html32.bdtd
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Modified: harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/html/parser/transitional401.bdtd
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/html/parser/transitional401.bdtd?view=diff&rev=507006&r1=507005&r2=507006
==============================================================================
Binary files - no diff available.



Mime
View raw message