You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by ay...@apache.org on 2007/02/13 15:02:58 UTC
svn commit: r507006 [5/5] - in
/harmony/enhanced/classlib/trunk/modules/swing: ./
src/main/java/common/javax/swing/text/html/parser/
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.
Re: svn commit: r507006 [5/5] - in /harmony/enhanced/classlib/trunk/modules/swing: ./ src/main/java/common/javax/swing/text/html/parser/
Posted by Alexei Zakharov <al...@gmail.com>.
Yeah, thnx. BTW some other files also need updating. Fixed in 507035.
Regards,
2007/2/13, Alexey Petrenko <al...@gmail.com>:
> Alexei,
>
> it look like you need to add Apache header to
> trunk/modules/swing/src/main/java/common/javax/swing/text/html/parser/ParserCup.java
> file.
>
> SY, Alexey
>
> 2007/2/13, ayza@apache.org <ay...@apache.org>:
> > 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
> >
--
Alexei Zakharov,
Intel ESSD
Re: svn commit: r507006 [5/5] - in /harmony/enhanced/classlib/trunk/modules/swing: ./ src/main/java/common/javax/swing/text/html/parser/
Posted by Alexey Petrenko <al...@gmail.com>.
Alexei,
it look like you need to add Apache header to
trunk/modules/swing/src/main/java/common/javax/swing/text/html/parser/ParserCup.java
file.
SY, Alexey
2007/2/13, ayza@apache.org <ay...@apache.org>:
> 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.
>
>
>