]> source.dussan.org Git - vaadin-framework.git/commitdiff
Resolved ambiguous parsing of ";" within @media block (#12923)
authorjoheriks <joheriks@vaadin.com>
Wed, 27 Nov 2013 15:47:23 +0000 (17:47 +0200)
committerVaadin Code Review <review@vaadin.com>
Thu, 30 Jan 2014 09:46:20 +0000 (09:46 +0000)
Also infer missing semicolon before EOF (required for @debug and @warn
at end of file)

Change-Id: Ib4449a3b8d79ce1b35732d4a33a1a30530bfc91a

theme-compiler/src/com/vaadin/sass/internal/parser/Parser.java
theme-compiler/src/com/vaadin/sass/internal/parser/Parser.jj

index eee53608b5403917bb7c3a0ef5ace005053082f0..6b4a03b0387ccc9406ce6748599e1f211aa87c4a 100644 (file)
@@ -4673,33 +4673,22 @@ boolean isPseudoElement = false;
 
   final public void debugDirective() throws ParseException {
     jj_consume_token(DEBUG_SYM);
-    String content = skipStatementUntil(new int[] {SEMICOLON,RBRACE});
+    String content = skipStatementUntil(new int[] {SEMICOLON,RBRACE,EOF});
     // TODO should evaluate the content expression, call documentHandler.debugDirective() etc.
     System.out.println(content);
     try {
+      jj_consume_token(SEMICOLON);
       label_141:
       while (true) {
-        jj_consume_token(SEMICOLON);
-        label_142:
-        while (true) {
-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-          case S:
-            ;
-            break;
-          default:
-            jj_la1[209] = jj_gen;
-            break label_142;
-          }
-          jj_consume_token(S);
-        }
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case SEMICOLON:
+        case S:
           ;
           break;
         default:
-          jj_la1[210] = jj_gen;
+          jj_la1[209] = jj_gen;
           break label_141;
         }
+        jj_consume_token(S);
       }
     } catch (ParseException e) {
       acceptMissingSemicolonBeforeRbrace(e);
@@ -4708,33 +4697,22 @@ boolean isPseudoElement = false;
 
   final public void warnDirective() throws ParseException {
     jj_consume_token(WARN_SYM);
-    String content = skipStatementUntil(new int[] {SEMICOLON,RBRACE});
+    String content = skipStatementUntil(new int[] {SEMICOLON,RBRACE,EOF});
     // TODO should evaluate the content expression, call documentHandler.warnDirective() etc.
     System.err.println(content);
     try {
-      label_143:
+      jj_consume_token(SEMICOLON);
+      label_142:
       while (true) {
-        jj_consume_token(SEMICOLON);
-        label_144:
-        while (true) {
-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-          case S:
-            ;
-            break;
-          default:
-            jj_la1[211] = jj_gen;
-            break label_144;
-          }
-          jj_consume_token(S);
-        }
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case SEMICOLON:
+        case S:
           ;
           break;
         default:
-          jj_la1[212] = jj_gen;
-          break label_143;
+          jj_la1[210] = jj_gen;
+          break label_142;
         }
+        jj_consume_token(S);
       }
     } catch (ParseException e) {
       acceptMissingSemicolonBeforeRbrace(e);
@@ -4761,20 +4739,20 @@ boolean isPseudoElement = false;
                        exclusive = false;
       break;
     default:
-      jj_la1[213] = jj_gen;
+      jj_la1[211] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
     to = skipStatementUntilLeftBrace();
-    label_145:
+    label_143:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[214] = jj_gen;
-        break label_145;
+        jj_la1[212] = jj_gen;
+        break label_143;
       }
       jj_consume_token(S);
     }
@@ -4795,33 +4773,33 @@ boolean isPseudoElement = false;
   final public void extendDirective() throws ParseException {
  ArrayList<String> list;
     jj_consume_token(EXTEND_SYM);
-    label_146:
+    label_144:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[215] = jj_gen;
-        break label_146;
+        jj_la1[213] = jj_gen;
+        break label_144;
       }
       jj_consume_token(S);
     }
     list = selectorList();
      documentHandler.extendDirective(list);
     try {
-      label_147:
+      label_145:
       while (true) {
         jj_consume_token(SEMICOLON);
-        label_148:
+        label_146:
         while (true) {
           switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
           case S:
             ;
             break;
           default:
-            jj_la1[216] = jj_gen;
-            break label_148;
+            jj_la1[214] = jj_gen;
+            break label_146;
           }
           jj_consume_token(S);
         }
@@ -4830,8 +4808,8 @@ boolean isPseudoElement = false;
           ;
           break;
         default:
-          jj_la1[217] = jj_gen;
-          break label_147;
+          jj_la1[215] = jj_gen;
+          break label_145;
         }
       }
     } catch (ParseException e) {
@@ -4841,31 +4819,31 @@ boolean isPseudoElement = false;
 
   final public void contentDirective() throws ParseException {
     jj_consume_token(CONTENT_SYM);
-    label_149:
+    label_147:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[218] = jj_gen;
-        break label_149;
+        jj_la1[216] = jj_gen;
+        break label_147;
       }
       jj_consume_token(S);
     }
     try {
-      label_150:
+      label_148:
       while (true) {
         jj_consume_token(SEMICOLON);
-        label_151:
+        label_149:
         while (true) {
           switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
           case S:
             ;
             break;
           default:
-            jj_la1[219] = jj_gen;
-            break label_151;
+            jj_la1[217] = jj_gen;
+            break label_149;
           }
           jj_consume_token(S);
         }
@@ -4874,8 +4852,8 @@ boolean isPseudoElement = false;
           ;
           break;
         default:
-          jj_la1[220] = jj_gen;
-          break label_150;
+          jj_la1[218] = jj_gen;
+          break label_148;
         }
       }
     } catch (ParseException e) {
@@ -4905,28 +4883,28 @@ boolean isPseudoElement = false;
 LexicalUnit exp;
     name = property();
     jj_consume_token(COLON);
-    label_152:
+    label_150:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[221] = jj_gen;
-        break label_152;
+        jj_la1[219] = jj_gen;
+        break label_150;
       }
       jj_consume_token(S);
     }
     jj_consume_token(LBRACE);
-    label_153:
+    label_151:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[222] = jj_gen;
-        break label_153;
+        jj_la1[220] = jj_gen;
+        break label_151;
       }
       jj_consume_token(S);
     }
@@ -4937,29 +4915,29 @@ LexicalUnit exp;
       declaration();
       break;
     default:
-      jj_la1[223] = jj_gen;
+      jj_la1[221] = jj_gen;
       ;
     }
-    label_154:
+    label_152:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case SEMICOLON:
         ;
         break;
       default:
-        jj_la1[224] = jj_gen;
-        break label_154;
+        jj_la1[222] = jj_gen;
+        break label_152;
       }
       jj_consume_token(SEMICOLON);
-      label_155:
+      label_153:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case S:
           ;
           break;
         default:
-          jj_la1[225] = jj_gen;
-          break label_155;
+          jj_la1[223] = jj_gen;
+          break label_153;
         }
         jj_consume_token(S);
       }
@@ -4969,21 +4947,21 @@ LexicalUnit exp;
         declaration();
         break;
       default:
-        jj_la1[226] = jj_gen;
+        jj_la1[224] = jj_gen;
         ;
       }
     }
     jj_consume_token(RBRACE);
       documentHandler.endNestedProperties(name);
-    label_156:
+    label_154:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[227] = jj_gen;
-        break label_156;
+        jj_la1[225] = jj_gen;
+        break label_154;
       }
       jj_consume_token(S);
     }
@@ -5000,7 +4978,7 @@ LexicalUnit exp;
         debuggingDirective();
         break;
       default:
-        jj_la1[228] = jj_gen;
+        jj_la1[226] = jj_gen;
         if (jj_2_6(2147483647)) {
           styleRule();
         } else if (jj_2_7(3)) {
@@ -5021,7 +4999,7 @@ LexicalUnit exp;
             styleRule();
             break;
           default:
-            jj_la1[229] = jj_gen;
+            jj_la1[227] = jj_gen;
             jj_consume_token(-1);
             throw new ParseException();
           }
@@ -5066,15 +5044,15 @@ LexicalUnit exp;
       name = property();
        save = token;
       jj_consume_token(COLON);
-      label_157:
+      label_155:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case S:
           ;
           break;
         default:
-          jj_la1[230] = jj_gen;
-          break label_157;
+          jj_la1[228] = jj_gen;
+          break label_155;
         }
         jj_consume_token(S);
       }
@@ -5118,7 +5096,7 @@ LexicalUnit exp;
           important = prio();
           break;
         default:
-          jj_la1[231] = jj_gen;
+          jj_la1[229] = jj_gen;
           ;
         }
          Token next = getToken(1);
@@ -5137,15 +5115,15 @@ LexicalUnit exp;
         break;
       case LBRACE:
         jj_consume_token(LBRACE);
-        label_158:
+        label_156:
         while (true) {
           switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
           case S:
             ;
             break;
           default:
-            jj_la1[232] = jj_gen;
-            break label_158;
+            jj_la1[230] = jj_gen;
+            break label_156;
           }
           jj_consume_token(S);
         }
@@ -5156,29 +5134,29 @@ LexicalUnit exp;
           declaration();
           break;
         default:
-          jj_la1[233] = jj_gen;
+          jj_la1[231] = jj_gen;
           ;
         }
-        label_159:
+        label_157:
         while (true) {
           switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
           case SEMICOLON:
             ;
             break;
           default:
-            jj_la1[234] = jj_gen;
-            break label_159;
+            jj_la1[232] = jj_gen;
+            break label_157;
           }
           jj_consume_token(SEMICOLON);
-          label_160:
+          label_158:
           while (true) {
             switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
             case S:
               ;
               break;
             default:
-              jj_la1[235] = jj_gen;
-              break label_160;
+              jj_la1[233] = jj_gen;
+              break label_158;
             }
             jj_consume_token(S);
           }
@@ -5188,27 +5166,27 @@ LexicalUnit exp;
             declaration();
             break;
           default:
-            jj_la1[236] = jj_gen;
+            jj_la1[234] = jj_gen;
             ;
           }
         }
         jj_consume_token(RBRACE);
-        label_161:
+        label_159:
         while (true) {
           switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
           case S:
             ;
             break;
           default:
-            jj_la1[237] = jj_gen;
-            break label_161;
+            jj_la1[235] = jj_gen;
+            break label_159;
           }
           jj_consume_token(S);
         }
          documentHandler.endNestedProperties(name);
         break;
       default:
-        jj_la1[238] = jj_gen;
+        jj_la1[236] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -5258,15 +5236,15 @@ LexicalUnit exp;
       name = property();
        save = token;
       jj_consume_token(COLON);
-      label_162:
+      label_160:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case S:
           ;
           break;
         default:
-          jj_la1[239] = jj_gen;
-          break label_162;
+          jj_la1[237] = jj_gen;
+          break label_160;
         }
         jj_consume_token(S);
       }
@@ -5276,7 +5254,7 @@ LexicalUnit exp;
         important = prio();
         break;
       default:
-        jj_la1[240] = jj_gen;
+        jj_la1[238] = jj_gen;
         ;
       }
          documentHandler.property(name, exp, important);
@@ -5319,15 +5297,15 @@ LexicalUnit exp;
  */
   final public boolean prio() throws ParseException {
     jj_consume_token(IMPORTANT_SYM);
-    label_163:
+    label_161:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[241] = jj_gen;
-        break label_163;
+        jj_la1[239] = jj_gen;
+        break label_161;
       }
       jj_consume_token(S);
     }
@@ -5337,15 +5315,15 @@ LexicalUnit exp;
 
   final public boolean guarded() throws ParseException {
     jj_consume_token(GUARDED_SYM);
-    label_164:
+    label_162:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[242] = jj_gen;
-        break label_164;
+        jj_la1[240] = jj_gen;
+        break label_162;
       }
       jj_consume_token(S);
     }
@@ -5370,15 +5348,15 @@ LexicalUnit exp;
       * 3. parenthesis is not supported now.  
       */
       n = jj_consume_token(COMMA);
-      label_165:
+      label_163:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case S:
           ;
           break;
         default:
-          jj_la1[243] = jj_gen;
-          break label_165;
+          jj_la1[241] = jj_gen;
+          break label_163;
         }
         jj_consume_token(S);
       }
@@ -5388,15 +5366,15 @@ LexicalUnit exp;
       break;
     case DIV:
       n = jj_consume_token(DIV);
-      label_166:
+      label_164:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case S:
           ;
           break;
         default:
-          jj_la1[244] = jj_gen;
-          break label_166;
+          jj_la1[242] = jj_gen;
+          break label_164;
         }
         jj_consume_token(S);
       }
@@ -5406,15 +5384,15 @@ LexicalUnit exp;
       break;
     case ANY:
       n = jj_consume_token(ANY);
-      label_167:
+      label_165:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case S:
           ;
           break;
         default:
-          jj_la1[245] = jj_gen;
-          break label_167;
+          jj_la1[243] = jj_gen;
+          break label_165;
         }
         jj_consume_token(S);
       }
@@ -5424,15 +5402,15 @@ LexicalUnit exp;
       break;
     case MOD:
       n = jj_consume_token(MOD);
-      label_168:
+      label_166:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case S:
           ;
           break;
         default:
-          jj_la1[246] = jj_gen;
-          break label_168;
+          jj_la1[244] = jj_gen;
+          break label_166;
         }
         jj_consume_token(S);
       }
@@ -5442,7 +5420,7 @@ LexicalUnit exp;
       break;
     case PLUS:
       n = jj_consume_token(PLUS);
-      label_169:
+      label_167:
       while (true) {
         jj_consume_token(S);
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -5450,8 +5428,8 @@ LexicalUnit exp;
           ;
           break;
         default:
-          jj_la1[247] = jj_gen;
-          break label_169;
+          jj_la1[245] = jj_gen;
+          break label_167;
         }
       }
                   {if (true) return LexicalUnitImpl.createAdd(n.beginLine,
@@ -5460,7 +5438,7 @@ LexicalUnit exp;
       break;
     case MINUS:
       n = jj_consume_token(MINUS);
-      label_170:
+      label_168:
       while (true) {
         jj_consume_token(S);
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -5468,8 +5446,8 @@ LexicalUnit exp;
           ;
           break;
         default:
-          jj_la1[248] = jj_gen;
-          break label_170;
+          jj_la1[246] = jj_gen;
+          break label_168;
         }
       }
                   {if (true) return LexicalUnitImpl.createMinus(n.beginLine,
@@ -5477,7 +5455,7 @@ LexicalUnit exp;
         prev);}
       break;
     default:
-      jj_la1[249] = jj_gen;
+      jj_la1[247] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5492,12 +5470,12 @@ LexicalUnit exp;
     char op;
     first = term(null);
                       res = first;
-    label_171:
+    label_169:
     while (true) {
       if (jj_2_8(2)) {
         ;
       } else {
-        break label_171;
+        break label_169;
       }
       if (jj_2_9(2)) {
         res = operator(res);
@@ -5524,7 +5502,7 @@ LexicalUnit exp;
         {if (true) return '+';}
       break;
     default:
-      jj_la1[250] = jj_gen;
+      jj_la1[248] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5577,7 +5555,7 @@ LexicalUnit exp;
       result = variableTerm(prev);
       break;
     default:
-      jj_la1[251] = jj_gen;
+      jj_la1[249] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5630,7 +5608,7 @@ LexicalUnitImpl result = null;
         op = unaryOperator();
         break;
       default:
-        jj_la1[252] = jj_gen;
+        jj_la1[250] = jj_gen;
         ;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -5746,7 +5724,7 @@ LexicalUnitImpl result = null;
         result = function(op, prev);
         break;
       default:
-        jj_la1[253] = jj_gen;
+        jj_la1[251] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -5779,7 +5757,7 @@ LexicalUnitImpl result = null;
               s+=".";
           break;
         default:
-          jj_la1[254] = jj_gen;
+          jj_la1[252] = jj_gen;
           ;
         }
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -5796,7 +5774,7 @@ LexicalUnitImpl result = null;
           n = jj_consume_token(FROM);
           break;
         default:
-          jj_la1[255] = jj_gen;
+          jj_la1[253] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
@@ -5843,25 +5821,25 @@ LexicalUnitImpl result = null;
         result = unicode(prev);
         break;
       default:
-        jj_la1[256] = jj_gen;
+        jj_la1[254] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
       break;
     default:
-      jj_la1[257] = jj_gen;
+      jj_la1[255] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
-    label_172:
+    label_170:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[258] = jj_gen;
-        break label_172;
+        jj_la1[256] = jj_gen;
+        break label_170;
       }
       jj_consume_token(S);
     }
@@ -5877,15 +5855,15 @@ LexicalUnitImpl result = null;
  Token n;
  LexicalUnit params = null;
     n = jj_consume_token(FUNCTION);
-    label_173:
+    label_171:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[259] = jj_gen;
-        break label_173;
+        jj_la1[257] = jj_gen;
+        break label_171;
       }
       jj_consume_token(S);
     }
@@ -5936,7 +5914,7 @@ LexicalUnitImpl result = null;
       params = expr();
       break;
     default:
-      jj_la1[260] = jj_gen;
+      jj_la1[258] = jj_gen;
       ;
     }
     jj_consume_token(RPARAN);
@@ -6213,27 +6191,27 @@ LexicalUnitImpl result = null;
 
   String skipStatementUntil(int[] symbols) throws ParseException {
     StringBuffer s = new StringBuffer();
-    boolean stop = false;
+    boolean found = false;
     Token tok;
-    while(!stop){
+    while(!found){
         tok = getToken(1);
-        if(tok.kind == EOF) {
-            return null;
-        }
         for(int sym : symbols){
             if(tok.kind == sym){
-                stop = true;
+                found = true;
                 break;
             }
         }
-        if(!stop){
+        if(tok.kind == EOF) {
+            break;
+        }
+        if(!found){
             if (tok.image != null) {
                 s.append(tok.image);
             }
             getNextToken();
         }
     }
-    return s.toString().trim();
+    return found ? s.toString().trim() : null;
   }
 
   String skipStatement() throws ParseException {
@@ -6393,15 +6371,15 @@ LexicalUnitImpl result = null;
 // TODO required by original parser but not used by Vaadin?
   final public void _parseRule() throws ParseException {
  String ret = null;
-    label_174:
+    label_172:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[261] = jj_gen;
-        break label_174;
+        jj_la1[259] = jj_gen;
+        break label_172;
       }
       jj_consume_token(S);
     }
@@ -6436,7 +6414,7 @@ LexicalUnitImpl result = null;
       fontFace();
       break;
     default:
-      jj_la1[262] = jj_gen;
+      jj_la1[260] = jj_gen;
       ret = skipStatement();
                     if ((ret == null) || (ret.length() == 0)) {
                         {if (true) return;}
@@ -6451,15 +6429,15 @@ LexicalUnitImpl result = null;
   }
 
   final public void _parseImportRule() throws ParseException {
-    label_175:
+    label_173:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[263] = jj_gen;
-        break label_175;
+        jj_la1[261] = jj_gen;
+        break label_173;
       }
       jj_consume_token(S);
     }
@@ -6467,15 +6445,15 @@ LexicalUnitImpl result = null;
   }
 
   final public void _parseMediaRule() throws ParseException {
-    label_176:
+    label_174:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[264] = jj_gen;
-        break label_176;
+        jj_la1[262] = jj_gen;
+        break label_174;
       }
       jj_consume_token(S);
     }
@@ -6483,15 +6461,15 @@ LexicalUnitImpl result = null;
   }
 
   final public void _parseDeclarationBlock() throws ParseException {
-    label_177:
+    label_175:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[265] = jj_gen;
-        break label_177;
+        jj_la1[263] = jj_gen;
+        break label_175;
       }
       jj_consume_token(S);
     }
@@ -6501,29 +6479,29 @@ LexicalUnitImpl result = null;
       declaration();
       break;
     default:
-      jj_la1[266] = jj_gen;
+      jj_la1[264] = jj_gen;
       ;
     }
-    label_178:
+    label_176:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case SEMICOLON:
         ;
         break;
       default:
-        jj_la1[267] = jj_gen;
-        break label_178;
+        jj_la1[265] = jj_gen;
+        break label_176;
       }
       jj_consume_token(SEMICOLON);
-      label_179:
+      label_177:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case S:
           ;
           break;
         default:
-          jj_la1[268] = jj_gen;
-          break label_179;
+          jj_la1[266] = jj_gen;
+          break label_177;
         }
         jj_consume_token(S);
       }
@@ -6533,7 +6511,7 @@ LexicalUnitImpl result = null;
         declaration();
         break;
       default:
-        jj_la1[269] = jj_gen;
+        jj_la1[267] = jj_gen;
         ;
       }
     }
@@ -6542,15 +6520,15 @@ LexicalUnitImpl result = null;
   final public ArrayList<String> _parseSelectors() throws ParseException {
   ArrayList<String> p = null;
     try {
-      label_180:
+      label_178:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case S:
           ;
           break;
         default:
-          jj_la1[270] = jj_gen;
-          break label_180;
+          jj_la1[268] = jj_gen;
+          break label_178;
         }
         jj_consume_token(S);
       }
@@ -6564,7 +6542,7 @@ LexicalUnitImpl result = null;
 
   void acceptMissingSemicolonBeforeRbrace(ParseException parseException) throws ParseException {
     Token next = getToken(1);
-    if (next.kind != RBRACE) {
+    if (next.kind != RBRACE && next.kind!=EOF) {
         throw parseException;
     }
   }
@@ -6632,7 +6610,7 @@ LexicalUnitImpl result = null;
     finally { jj_save(8, xla); }
   }
 
-  private boolean jj_3R_202() {
+  private boolean jj_3R_200() {
     if (jj_scan_token(VARIABLE)) return true;
     Token xsp;
     while (true) {
@@ -6647,15 +6625,15 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_220() {
-    if (jj_3R_219()) return true;
+  private boolean jj_3R_218() {
+    if (jj_3R_217()) return true;
     return false;
   }
 
-  private boolean jj_3R_184() {
+  private boolean jj_3R_182() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_202()) jj_scanpos = xsp;
+    if (jj_3R_200()) jj_scanpos = xsp;
     if (jj_scan_token(CONTAINS)) return true;
     while (true) {
       xsp = jj_scanpos;
@@ -6665,7 +6643,7 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_219() {
+  private boolean jj_3R_217() {
     Token xsp;
     xsp = jj_scanpos;
     if (jj_scan_token(18)) {
@@ -6682,59 +6660,59 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_181() {
-    if (jj_3R_191()) return true;
+  private boolean jj_3R_179() {
+    if (jj_3R_189()) return true;
     if (jj_scan_token(COLON)) return true;
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
       if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
     }
-    if (jj_3R_192()) return true;
+    if (jj_3R_190()) return true;
     xsp = jj_scanpos;
-    if (jj_3R_193()) jj_scanpos = xsp;
-    if (jj_3R_194()) return true;
+    if (jj_3R_191()) jj_scanpos = xsp;
+    if (jj_3R_192()) return true;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_194()) { jj_scanpos = xsp; break; }
+      if (jj_3R_192()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
-  private boolean jj_3R_196() {
+  private boolean jj_3R_194() {
     if (jj_scan_token(S)) return true;
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_220()) jj_scanpos = xsp;
+    if (jj_3R_218()) jj_scanpos = xsp;
     return false;
   }
 
-  private boolean jj_3R_195() {
-    if (jj_3R_219()) return true;
+  private boolean jj_3R_193() {
+    if (jj_3R_217()) return true;
     return false;
   }
 
-  private boolean jj_3R_182() {
+  private boolean jj_3R_180() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_195()) {
+    if (jj_3R_193()) {
     jj_scanpos = xsp;
-    if (jj_3R_196()) return true;
+    if (jj_3R_194()) return true;
     }
     return false;
   }
 
-  private boolean jj_3R_222() {
+  private boolean jj_3R_220() {
     if (jj_scan_token(HASH)) return true;
     return false;
   }
 
-  private boolean jj_3R_292() {
+  private boolean jj_3R_290() {
     if (jj_scan_token(IDENT)) return true;
     return false;
   }
 
-  private boolean jj_3R_293() {
+  private boolean jj_3R_291() {
     if (jj_scan_token(FUNCTION)) return true;
     Token xsp;
     while (true) {
@@ -6746,46 +6724,46 @@ LexicalUnitImpl result = null;
   }
 
   private boolean jj_3_7() {
-    if (jj_3R_188()) return true;
+    if (jj_3R_186()) return true;
     return false;
   }
 
-  private boolean jj_3R_291() {
+  private boolean jj_3R_289() {
     if (jj_scan_token(COLON)) return true;
     return false;
   }
 
-  private boolean jj_3R_209() {
+  private boolean jj_3R_207() {
     if (jj_scan_token(LBRACE)) return true;
     return false;
   }
 
-  private boolean jj_3R_224() {
+  private boolean jj_3R_222() {
     if (jj_scan_token(COLON)) return true;
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_291()) jj_scanpos = xsp;
+    if (jj_3R_289()) jj_scanpos = xsp;
     xsp = jj_scanpos;
-    if (jj_3R_292()) {
+    if (jj_3R_290()) {
     jj_scanpos = xsp;
-    if (jj_3R_293()) return true;
+    if (jj_3R_291()) return true;
     }
     return false;
   }
 
-  private boolean jj_3R_208() {
-    if (jj_3R_192()) return true;
+  private boolean jj_3R_206() {
+    if (jj_3R_190()) return true;
     return false;
   }
 
   private boolean jj_3_6() {
-    if (jj_3R_187()) return true;
+    if (jj_3R_185()) return true;
     if (jj_scan_token(LBRACE)) return true;
     return false;
   }
 
-  private boolean jj_3R_188() {
-    if (jj_3R_207()) return true;
+  private boolean jj_3R_186() {
+    if (jj_3R_205()) return true;
     if (jj_scan_token(COLON)) return true;
     Token xsp;
     while (true) {
@@ -6793,24 +6771,24 @@ LexicalUnitImpl result = null;
       if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
     }
     xsp = jj_scanpos;
-    if (jj_3R_208()) {
+    if (jj_3R_206()) {
     jj_scanpos = xsp;
-    if (jj_3R_209()) return true;
+    if (jj_3R_207()) return true;
     }
     return false;
   }
 
-  private boolean jj_3R_271() {
-    if (jj_3R_192()) return true;
+  private boolean jj_3R_269() {
+    if (jj_3R_190()) return true;
     return false;
   }
 
-  private boolean jj_3R_312() {
+  private boolean jj_3R_310() {
     if (jj_scan_token(STRING)) return true;
     return false;
   }
 
-  private boolean jj_3R_261() {
+  private boolean jj_3R_259() {
     if (jj_scan_token(FUNCTION)) return true;
     Token xsp;
     while (true) {
@@ -6818,65 +6796,65 @@ LexicalUnitImpl result = null;
       if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
     }
     xsp = jj_scanpos;
-    if (jj_3R_271()) jj_scanpos = xsp;
+    if (jj_3R_269()) jj_scanpos = xsp;
     if (jj_scan_token(RPARAN)) return true;
     return false;
   }
 
-  private boolean jj_3R_310() {
+  private boolean jj_3R_308() {
     if (jj_scan_token(STARMATCH)) return true;
     return false;
   }
 
-  private boolean jj_3R_311() {
+  private boolean jj_3R_309() {
     if (jj_scan_token(IDENT)) return true;
     return false;
   }
 
-  private boolean jj_3R_309() {
+  private boolean jj_3R_307() {
     if (jj_scan_token(DOLLARMATCH)) return true;
     return false;
   }
 
-  private boolean jj_3R_308() {
+  private boolean jj_3R_306() {
     if (jj_scan_token(CARETMATCH)) return true;
     return false;
   }
 
-  private boolean jj_3R_307() {
+  private boolean jj_3R_305() {
     if (jj_scan_token(DASHMATCH)) return true;
     return false;
   }
 
-  private boolean jj_3R_306() {
+  private boolean jj_3R_304() {
     if (jj_scan_token(INCLUDES)) return true;
     return false;
   }
 
-  private boolean jj_3R_273() {
+  private boolean jj_3R_271() {
     if (jj_scan_token(INTERPOLATION)) return true;
     return false;
   }
 
-  private boolean jj_3R_305() {
+  private boolean jj_3R_303() {
     if (jj_scan_token(EQ)) return true;
     return false;
   }
 
-  private boolean jj_3R_298() {
+  private boolean jj_3R_296() {
     Token xsp;
     xsp = jj_scanpos;
+    if (jj_3R_303()) {
+    jj_scanpos = xsp;
+    if (jj_3R_304()) {
+    jj_scanpos = xsp;
     if (jj_3R_305()) {
     jj_scanpos = xsp;
     if (jj_3R_306()) {
     jj_scanpos = xsp;
     if (jj_3R_307()) {
     jj_scanpos = xsp;
-    if (jj_3R_308()) {
-    jj_scanpos = xsp;
-    if (jj_3R_309()) {
-    jj_scanpos = xsp;
-    if (jj_3R_310()) return true;
+    if (jj_3R_308()) return true;
     }
     }
     }
@@ -6887,9 +6865,9 @@ LexicalUnitImpl result = null;
       if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
     }
     xsp = jj_scanpos;
-    if (jj_3R_311()) {
+    if (jj_3R_309()) {
     jj_scanpos = xsp;
-    if (jj_3R_312()) return true;
+    if (jj_3R_310()) return true;
     }
     while (true) {
       xsp = jj_scanpos;
@@ -6898,22 +6876,22 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_252() {
-    if (jj_3R_265()) return true;
+  private boolean jj_3R_250() {
+    if (jj_3R_263()) return true;
     return false;
   }
 
-  private boolean jj_3R_251() {
-    if (jj_3R_264()) return true;
+  private boolean jj_3R_249() {
+    if (jj_3R_262()) return true;
     return false;
   }
 
-  private boolean jj_3R_250() {
-    if (jj_3R_263()) return true;
+  private boolean jj_3R_248() {
+    if (jj_3R_261()) return true;
     return false;
   }
 
-  private boolean jj_3R_225() {
+  private boolean jj_3R_223() {
     if (jj_scan_token(LBRACKET)) return true;
     Token xsp;
     while (true) {
@@ -6926,65 +6904,65 @@ LexicalUnitImpl result = null;
       if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
     }
     xsp = jj_scanpos;
-    if (jj_3R_298()) jj_scanpos = xsp;
+    if (jj_3R_296()) jj_scanpos = xsp;
     if (jj_scan_token(RBRACKET)) return true;
     return false;
   }
 
-  private boolean jj_3R_304() {
+  private boolean jj_3R_302() {
     if (jj_scan_token(INTERPOLATION)) return true;
     return false;
   }
 
-  private boolean jj_3R_259() {
+  private boolean jj_3R_257() {
     if (jj_scan_token(PARENT)) return true;
     return false;
   }
 
-  private boolean jj_3R_258() {
+  private boolean jj_3R_256() {
     if (jj_scan_token(ANY)) return true;
     return false;
   }
 
-  private boolean jj_3R_268() {
+  private boolean jj_3R_266() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_272()) {
+    if (jj_3R_270()) {
     jj_scanpos = xsp;
-    if (jj_3R_273()) return true;
+    if (jj_3R_271()) return true;
     }
     return false;
   }
 
-  private boolean jj_3R_272() {
+  private boolean jj_3R_270() {
     if (jj_scan_token(IDENT)) return true;
     return false;
   }
 
-  private boolean jj_3R_221() {
+  private boolean jj_3R_219() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_257()) {
+    if (jj_3R_255()) {
     jj_scanpos = xsp;
-    if (jj_3R_258()) {
+    if (jj_3R_256()) {
     jj_scanpos = xsp;
-    if (jj_3R_259()) return true;
+    if (jj_3R_257()) return true;
     }
     }
     return false;
   }
 
-  private boolean jj_3R_257() {
+  private boolean jj_3R_255() {
     Token xsp;
-    if (jj_3R_268()) return true;
+    if (jj_3R_266()) return true;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_268()) { jj_scanpos = xsp; break; }
+      if (jj_3R_266()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
-  private boolean jj_3R_185() {
+  private boolean jj_3R_183() {
     if (jj_scan_token(COMMA)) return true;
     Token xsp;
     while (true) {
@@ -6994,30 +6972,30 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_303() {
+  private boolean jj_3R_301() {
     if (jj_scan_token(IDENT)) return true;
     return false;
   }
 
-  private boolean jj_3R_286() {
+  private boolean jj_3R_284() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_303()) {
+    if (jj_3R_301()) {
     jj_scanpos = xsp;
-    if (jj_3R_304()) return true;
+    if (jj_3R_302()) return true;
     }
     return false;
   }
 
-  private boolean jj_3R_262() {
+  private boolean jj_3R_260() {
     if (jj_scan_token(DOT)) return true;
     return false;
   }
 
-  private boolean jj_3R_249() {
+  private boolean jj_3R_247() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_262()) jj_scanpos = xsp;
+    if (jj_3R_260()) jj_scanpos = xsp;
     xsp = jj_scanpos;
     if (jj_scan_token(72)) {
     jj_scanpos = xsp;
@@ -7035,49 +7013,49 @@ LexicalUnitImpl result = null;
   private boolean jj_3_5() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_185()) jj_scanpos = xsp;
-    if (jj_3R_186()) return true;
+    if (jj_3R_183()) jj_scanpos = xsp;
+    if (jj_3R_184()) return true;
     return false;
   }
 
-  private boolean jj_3R_302() {
-    if (jj_3R_224()) return true;
+  private boolean jj_3R_300() {
+    if (jj_3R_222()) return true;
     return false;
   }
 
-  private boolean jj_3R_248() {
+  private boolean jj_3R_246() {
     if (jj_scan_token(STRING)) return true;
     return false;
   }
 
-  private boolean jj_3R_223() {
+  private boolean jj_3R_221() {
     if (jj_scan_token(DOT)) return true;
     Token xsp;
-    if (jj_3R_286()) return true;
+    if (jj_3R_284()) return true;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_286()) { jj_scanpos = xsp; break; }
+      if (jj_3R_284()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
-  private boolean jj_3R_247() {
-    if (jj_3R_261()) return true;
+  private boolean jj_3R_245() {
+    if (jj_3R_259()) return true;
     return false;
   }
 
-  private boolean jj_3R_204() {
+  private boolean jj_3R_202() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_248()) {
+    if (jj_3R_246()) {
     jj_scanpos = xsp;
-    if (jj_3R_249()) {
+    if (jj_3R_247()) {
     jj_scanpos = xsp;
-    if (jj_3R_250()) {
+    if (jj_3R_248()) {
     jj_scanpos = xsp;
-    if (jj_3R_251()) {
+    if (jj_3R_249()) {
     jj_scanpos = xsp;
-    if (jj_3R_252()) return true;
+    if (jj_3R_250()) return true;
     }
     }
     }
@@ -7085,305 +7063,305 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_300() {
-    if (jj_3R_223()) return true;
+  private boolean jj_3R_298() {
+    if (jj_3R_221()) return true;
     return false;
   }
 
-  private boolean jj_3R_295() {
-    if (jj_3R_223()) return true;
+  private boolean jj_3R_293() {
+    if (jj_3R_221()) return true;
     return false;
   }
 
-  private boolean jj_3R_297() {
-    if (jj_3R_224()) return true;
+  private boolean jj_3R_295() {
+    if (jj_3R_222()) return true;
     return false;
   }
 
-  private boolean jj_3R_285() {
-    if (jj_3R_224()) return true;
+  private boolean jj_3R_283() {
+    if (jj_3R_222()) return true;
     return false;
   }
 
-  private boolean jj_3R_288() {
-    if (jj_3R_223()) return true;
+  private boolean jj_3R_286() {
+    if (jj_3R_221()) return true;
     return false;
   }
 
-  private boolean jj_3R_290() {
-    if (jj_3R_224()) return true;
+  private boolean jj_3R_288() {
+    if (jj_3R_222()) return true;
     return false;
   }
 
-  private boolean jj_3R_246() {
+  private boolean jj_3R_244() {
     if (jj_scan_token(DIMEN)) return true;
     return false;
   }
 
-  private boolean jj_3R_245() {
+  private boolean jj_3R_243() {
     if (jj_scan_token(KHZ)) return true;
     return false;
   }
 
-  private boolean jj_3R_301() {
-    if (jj_3R_225()) return true;
+  private boolean jj_3R_299() {
+    if (jj_3R_223()) return true;
     return false;
   }
 
-  private boolean jj_3R_244() {
+  private boolean jj_3R_242() {
     if (jj_scan_token(HZ)) return true;
     return false;
   }
 
-  private boolean jj_3R_278() {
+  private boolean jj_3R_276() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_299()) {
+    if (jj_3R_297()) {
     jj_scanpos = xsp;
-    if (jj_3R_300()) {
+    if (jj_3R_298()) {
     jj_scanpos = xsp;
-    if (jj_3R_301()) {
+    if (jj_3R_299()) {
     jj_scanpos = xsp;
-    if (jj_3R_302()) return true;
+    if (jj_3R_300()) return true;
     }
     }
     }
     return false;
   }
 
-  private boolean jj_3R_299() {
-    if (jj_3R_222()) return true;
+  private boolean jj_3R_297() {
+    if (jj_3R_220()) return true;
     return false;
   }
 
-  private boolean jj_3R_277() {
+  private boolean jj_3R_275() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_294()) {
+    if (jj_3R_292()) {
     jj_scanpos = xsp;
-    if (jj_3R_295()) {
+    if (jj_3R_293()) {
     jj_scanpos = xsp;
-    if (jj_3R_296()) {
+    if (jj_3R_294()) {
     jj_scanpos = xsp;
-    if (jj_3R_297()) return true;
+    if (jj_3R_295()) return true;
     }
     }
     }
     return false;
   }
 
-  private boolean jj_3R_294() {
-    if (jj_3R_222()) return true;
+  private boolean jj_3R_292() {
+    if (jj_3R_220()) return true;
     return false;
   }
 
-  private boolean jj_3R_243() {
+  private boolean jj_3R_241() {
     if (jj_scan_token(MS)) return true;
     return false;
   }
 
-  private boolean jj_3R_282() {
-    if (jj_3R_224()) return true;
+  private boolean jj_3R_280() {
+    if (jj_3R_222()) return true;
     return false;
   }
 
-  private boolean jj_3R_276() {
+  private boolean jj_3R_274() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_287()) {
+    if (jj_3R_285()) {
     jj_scanpos = xsp;
-    if (jj_3R_288()) {
+    if (jj_3R_286()) {
     jj_scanpos = xsp;
-    if (jj_3R_289()) {
+    if (jj_3R_287()) {
     jj_scanpos = xsp;
-    if (jj_3R_290()) return true;
+    if (jj_3R_288()) return true;
     }
     }
     }
     return false;
   }
 
-  private boolean jj_3R_287() {
-    if (jj_3R_222()) return true;
+  private boolean jj_3R_285() {
+    if (jj_3R_220()) return true;
     return false;
   }
 
-  private boolean jj_3R_296() {
-    if (jj_3R_225()) return true;
+  private boolean jj_3R_294() {
+    if (jj_3R_223()) return true;
     return false;
   }
 
-  private boolean jj_3R_284() {
-    if (jj_3R_225()) return true;
+  private boolean jj_3R_282() {
+    if (jj_3R_223()) return true;
     return false;
   }
 
-  private boolean jj_3R_242() {
+  private boolean jj_3R_240() {
     if (jj_scan_token(SECOND)) return true;
     return false;
   }
 
-  private boolean jj_3R_289() {
-    if (jj_3R_225()) return true;
+  private boolean jj_3R_287() {
+    if (jj_3R_223()) return true;
     return false;
   }
 
-  private boolean jj_3R_275() {
+  private boolean jj_3R_273() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_283()) {
+    if (jj_3R_281()) {
     jj_scanpos = xsp;
-    if (jj_3R_284()) {
+    if (jj_3R_282()) {
     jj_scanpos = xsp;
-    if (jj_3R_285()) return true;
+    if (jj_3R_283()) return true;
     }
     }
     return false;
   }
 
-  private boolean jj_3R_280() {
-    if (jj_3R_223()) return true;
+  private boolean jj_3R_278() {
+    if (jj_3R_221()) return true;
     return false;
   }
 
-  private boolean jj_3R_283() {
-    if (jj_3R_223()) return true;
+  private boolean jj_3R_281() {
+    if (jj_3R_221()) return true;
     return false;
   }
 
-  private boolean jj_3R_241() {
+  private boolean jj_3R_239() {
     if (jj_scan_token(GRAD)) return true;
     return false;
   }
 
-  private boolean jj_3R_240() {
+  private boolean jj_3R_238() {
     if (jj_scan_token(RAD)) return true;
     return false;
   }
 
-  private boolean jj_3R_239() {
+  private boolean jj_3R_237() {
     if (jj_scan_token(DEG)) return true;
     return false;
   }
 
-  private boolean jj_3R_238() {
+  private boolean jj_3R_236() {
     if (jj_scan_token(EXS)) return true;
     return false;
   }
 
-  private boolean jj_3R_201() {
-    if (jj_3R_225()) return true;
+  private boolean jj_3R_199() {
+    if (jj_3R_223()) return true;
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_278()) { jj_scanpos = xsp; break; }
+      if (jj_3R_276()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
-  private boolean jj_3R_237() {
+  private boolean jj_3R_235() {
     if (jj_scan_token(REM)) return true;
     return false;
   }
 
-  private boolean jj_3R_200() {
-    if (jj_3R_224()) return true;
+  private boolean jj_3R_198() {
+    if (jj_3R_222()) return true;
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_277()) { jj_scanpos = xsp; break; }
+      if (jj_3R_275()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
-  private boolean jj_3R_281() {
-    if (jj_3R_225()) return true;
+  private boolean jj_3R_279() {
+    if (jj_3R_223()) return true;
     return false;
   }
 
-  private boolean jj_3R_236() {
+  private boolean jj_3R_234() {
     if (jj_scan_token(LEM)) return true;
     return false;
   }
 
-  private boolean jj_3R_199() {
-    if (jj_3R_223()) return true;
+  private boolean jj_3R_197() {
+    if (jj_3R_221()) return true;
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_276()) { jj_scanpos = xsp; break; }
+      if (jj_3R_274()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
-  private boolean jj_3R_198() {
-    if (jj_3R_222()) return true;
+  private boolean jj_3R_196() {
+    if (jj_3R_220()) return true;
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_275()) { jj_scanpos = xsp; break; }
+      if (jj_3R_273()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
-  private boolean jj_3R_274() {
+  private boolean jj_3R_272() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_279()) {
+    if (jj_3R_277()) {
     jj_scanpos = xsp;
-    if (jj_3R_280()) {
+    if (jj_3R_278()) {
     jj_scanpos = xsp;
-    if (jj_3R_281()) {
+    if (jj_3R_279()) {
     jj_scanpos = xsp;
-    if (jj_3R_282()) return true;
+    if (jj_3R_280()) return true;
     }
     }
     }
     return false;
   }
 
-  private boolean jj_3R_279() {
-    if (jj_3R_222()) return true;
+  private boolean jj_3R_277() {
+    if (jj_3R_220()) return true;
     return false;
   }
 
-  private boolean jj_3R_235() {
+  private boolean jj_3R_233() {
     if (jj_scan_token(EMS)) return true;
     return false;
   }
 
-  private boolean jj_3R_234() {
+  private boolean jj_3R_232() {
     if (jj_scan_token(PX)) return true;
     return false;
   }
 
-  private boolean jj_3R_197() {
-    if (jj_3R_221()) return true;
+  private boolean jj_3R_195() {
+    if (jj_3R_219()) return true;
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_274()) { jj_scanpos = xsp; break; }
+      if (jj_3R_272()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
-  private boolean jj_3R_233() {
+  private boolean jj_3R_231() {
     if (jj_scan_token(IN)) return true;
     return false;
   }
 
-  private boolean jj_3R_183() {
+  private boolean jj_3R_181() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_197()) {
+    if (jj_3R_195()) {
     jj_scanpos = xsp;
-    if (jj_3R_198()) {
+    if (jj_3R_196()) {
     jj_scanpos = xsp;
-    if (jj_3R_199()) {
+    if (jj_3R_197()) {
     jj_scanpos = xsp;
-    if (jj_3R_200()) {
+    if (jj_3R_198()) {
     jj_scanpos = xsp;
-    if (jj_3R_201()) return true;
+    if (jj_3R_199()) return true;
     }
     }
     }
@@ -7391,57 +7369,61 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_232() {
+  private boolean jj_3R_230() {
     if (jj_scan_token(PC)) return true;
     return false;
   }
 
-  private boolean jj_3R_254() {
-    if (jj_3R_219()) return true;
-    if (jj_3R_183()) return true;
+  private boolean jj_3R_252() {
+    if (jj_3R_217()) return true;
+    if (jj_3R_181()) return true;
     return false;
   }
 
-  private boolean jj_3R_231() {
+  private boolean jj_3R_229() {
     if (jj_scan_token(MM)) return true;
     return false;
   }
 
-  private boolean jj_3R_230() {
+  private boolean jj_3R_228() {
     if (jj_scan_token(CM)) return true;
     return false;
   }
 
-  private boolean jj_3R_229() {
+  private boolean jj_3R_227() {
     if (jj_scan_token(PT)) return true;
     return false;
   }
 
-  private boolean jj_3R_228() {
+  private boolean jj_3R_226() {
     if (jj_scan_token(PERCENTAGE)) return true;
     return false;
   }
 
-  private boolean jj_3R_211() {
-    if (jj_3R_256()) return true;
+  private boolean jj_3R_209() {
+    if (jj_3R_254()) return true;
     return false;
   }
 
-  private boolean jj_3R_227() {
+  private boolean jj_3R_225() {
     if (jj_scan_token(NUMBER)) return true;
     return false;
   }
 
-  private boolean jj_3R_226() {
-    if (jj_3R_260()) return true;
+  private boolean jj_3R_224() {
+    if (jj_3R_258()) return true;
     return false;
   }
 
-  private boolean jj_3R_203() {
+  private boolean jj_3R_201() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_226()) jj_scanpos = xsp;
+    if (jj_3R_224()) jj_scanpos = xsp;
     xsp = jj_scanpos;
+    if (jj_3R_225()) {
+    jj_scanpos = xsp;
+    if (jj_3R_226()) {
+    jj_scanpos = xsp;
     if (jj_3R_227()) {
     jj_scanpos = xsp;
     if (jj_3R_228()) {
@@ -7478,11 +7460,7 @@ LexicalUnitImpl result = null;
     jj_scanpos = xsp;
     if (jj_3R_244()) {
     jj_scanpos = xsp;
-    if (jj_3R_245()) {
-    jj_scanpos = xsp;
-    if (jj_3R_246()) {
-    jj_scanpos = xsp;
-    if (jj_3R_247()) return true;
+    if (jj_3R_245()) return true;
     }
     }
     }
@@ -7506,12 +7484,12 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_186() {
+  private boolean jj_3R_184() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_203()) {
+    if (jj_3R_201()) {
     jj_scanpos = xsp;
-    if (jj_3R_204()) return true;
+    if (jj_3R_202()) return true;
     }
     while (true) {
       xsp = jj_scanpos;
@@ -7520,49 +7498,49 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_263() {
+  private boolean jj_3R_261() {
     if (jj_scan_token(HASH)) return true;
     return false;
   }
 
   private boolean jj_3_2() {
-    if (jj_3R_182()) return true;
-    if (jj_3R_183()) return true;
+    if (jj_3R_180()) return true;
+    if (jj_3R_181()) return true;
     return false;
   }
 
-  private boolean jj_3R_256() {
-    if (jj_3R_191()) return true;
+  private boolean jj_3R_254() {
+    if (jj_3R_189()) return true;
     return false;
   }
 
-  private boolean jj_3R_264() {
+  private boolean jj_3R_262() {
     if (jj_scan_token(URL)) return true;
     return false;
   }
 
-  private boolean jj_3R_206() {
+  private boolean jj_3R_204() {
     if (jj_scan_token(COMMA)) return true;
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
       if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
     }
-    if (jj_3R_205()) return true;
+    if (jj_3R_203()) return true;
     return false;
   }
 
-  private boolean jj_3R_253() {
-    if (jj_3R_183()) return true;
+  private boolean jj_3R_251() {
+    if (jj_3R_181()) return true;
     return false;
   }
 
-  private boolean jj_3R_205() {
+  private boolean jj_3R_203() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_253()) {
+    if (jj_3R_251()) {
     jj_scanpos = xsp;
-    if (jj_3R_254()) return true;
+    if (jj_3R_252()) return true;
     }
     while (true) {
       xsp = jj_scanpos;
@@ -7575,62 +7553,62 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_210() {
-    if (jj_3R_186()) return true;
+  private boolean jj_3R_208() {
+    if (jj_3R_184()) return true;
     return false;
   }
 
-  private boolean jj_3R_189() {
+  private boolean jj_3R_187() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_210()) {
+    if (jj_3R_208()) {
     jj_scanpos = xsp;
-    if (jj_3R_211()) return true;
+    if (jj_3R_209()) return true;
     }
     return false;
   }
 
   private boolean jj_3_9() {
-    if (jj_3R_190()) return true;
+    if (jj_3R_188()) return true;
     return false;
   }
 
-  private boolean jj_3R_270() {
+  private boolean jj_3R_268() {
     if (jj_scan_token(PLUS)) return true;
     return false;
   }
 
-  private boolean jj_3R_260() {
+  private boolean jj_3R_258() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_269()) {
+    if (jj_3R_267()) {
     jj_scanpos = xsp;
-    if (jj_3R_270()) return true;
+    if (jj_3R_268()) return true;
     }
     return false;
   }
 
-  private boolean jj_3R_269() {
+  private boolean jj_3R_267() {
     if (jj_scan_token(MINUS)) return true;
     return false;
   }
 
   private boolean jj_3_1() {
-    if (jj_3R_181()) return true;
+    if (jj_3R_179()) return true;
     return false;
   }
 
-  private boolean jj_3R_187() {
-    if (jj_3R_205()) return true;
+  private boolean jj_3R_185() {
+    if (jj_3R_203()) return true;
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_206()) { jj_scanpos = xsp; break; }
+      if (jj_3R_204()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
-  private boolean jj_3R_265() {
+  private boolean jj_3R_263() {
     if (jj_scan_token(UNICODERANGE)) return true;
     return false;
   }
@@ -7639,17 +7617,17 @@ LexicalUnitImpl result = null;
     Token xsp;
     xsp = jj_scanpos;
     if (jj_3_9()) jj_scanpos = xsp;
-    if (jj_3R_189()) return true;
+    if (jj_3R_187()) return true;
     return false;
   }
 
   private boolean jj_3_4() {
-    if (jj_3R_184()) return true;
+    if (jj_3R_182()) return true;
     return false;
   }
 
-  private boolean jj_3R_192() {
-    if (jj_3R_189()) return true;
+  private boolean jj_3R_190() {
+    if (jj_3R_187()) return true;
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
@@ -7658,7 +7636,7 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_217() {
+  private boolean jj_3R_215() {
     if (jj_scan_token(MINUS)) return true;
     Token xsp;
     if (jj_scan_token(1)) return true;
@@ -7669,7 +7647,7 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_216() {
+  private boolean jj_3R_214() {
     if (jj_scan_token(PLUS)) return true;
     Token xsp;
     if (jj_scan_token(1)) return true;
@@ -7680,17 +7658,17 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_267() {
+  private boolean jj_3R_265() {
     if (jj_scan_token(INTERPOLATION)) return true;
     return false;
   }
 
   private boolean jj_3_3() {
-    if (jj_3R_181()) return true;
+    if (jj_3R_179()) return true;
     return false;
   }
 
-  private boolean jj_3R_215() {
+  private boolean jj_3R_213() {
     if (jj_scan_token(MOD)) return true;
     Token xsp;
     while (true) {
@@ -7700,7 +7678,7 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_214() {
+  private boolean jj_3R_212() {
     if (jj_scan_token(ANY)) return true;
     Token xsp;
     while (true) {
@@ -7710,7 +7688,7 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_213() {
+  private boolean jj_3R_211() {
     if (jj_scan_token(DIV)) return true;
     Token xsp;
     while (true) {
@@ -7720,7 +7698,7 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_194() {
+  private boolean jj_3R_192() {
     if (jj_scan_token(SEMICOLON)) return true;
     Token xsp;
     while (true) {
@@ -7730,7 +7708,7 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_212() {
+  private boolean jj_3R_210() {
     if (jj_scan_token(COMMA)) return true;
     Token xsp;
     while (true) {
@@ -7740,20 +7718,20 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_190() {
+  private boolean jj_3R_188() {
     Token xsp;
     xsp = jj_scanpos;
+    if (jj_3R_210()) {
+    jj_scanpos = xsp;
+    if (jj_3R_211()) {
+    jj_scanpos = xsp;
     if (jj_3R_212()) {
     jj_scanpos = xsp;
     if (jj_3R_213()) {
     jj_scanpos = xsp;
     if (jj_3R_214()) {
     jj_scanpos = xsp;
-    if (jj_3R_215()) {
-    jj_scanpos = xsp;
-    if (jj_3R_216()) {
-    jj_scanpos = xsp;
-    if (jj_3R_217()) return true;
+    if (jj_3R_215()) return true;
     }
     }
     }
@@ -7762,7 +7740,7 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_191() {
+  private boolean jj_3R_189() {
     if (jj_scan_token(VARIABLE)) return true;
     Token xsp;
     while (true) {
@@ -7772,27 +7750,27 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_255() {
+  private boolean jj_3R_253() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_266()) {
+    if (jj_3R_264()) {
     jj_scanpos = xsp;
-    if (jj_3R_267()) return true;
+    if (jj_3R_265()) return true;
     }
     return false;
   }
 
-  private boolean jj_3R_266() {
+  private boolean jj_3R_264() {
     if (jj_scan_token(IDENT)) return true;
     return false;
   }
 
-  private boolean jj_3R_207() {
+  private boolean jj_3R_205() {
     Token xsp;
-    if (jj_3R_255()) return true;
+    if (jj_3R_253()) return true;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_255()) { jj_scanpos = xsp; break; }
+      if (jj_3R_253()) { jj_scanpos = xsp; break; }
     }
     while (true) {
       xsp = jj_scanpos;
@@ -7801,7 +7779,7 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_218() {
+  private boolean jj_3R_216() {
     if (jj_scan_token(GUARDED_SYM)) return true;
     Token xsp;
     while (true) {
@@ -7811,8 +7789,8 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_193() {
-    if (jj_3R_218()) return true;
+  private boolean jj_3R_191() {
+    if (jj_3R_216()) return true;
     return false;
   }
 
@@ -7826,7 +7804,7 @@ LexicalUnitImpl result = null;
   private Token jj_scanpos, jj_lastpos;
   private int jj_la;
   private int jj_gen;
-  final private int[] jj_la1 = new int[271];
+  final private int[] jj_la1 = new int[269];
   static private int[] jj_la1_0;
   static private int[] jj_la1_1;
   static private int[] jj_la1_2;
@@ -7838,16 +7816,16 @@ LexicalUnitImpl result = null;
       jj_la1_init_3();
    }
    private static void jj_la1_init_0() {
-      jj_la1_0 = new int[] {0x0,0x302,0x302,0x0,0x300,0x2,0x2,0x2,0xd4c40000,0x0,0x300,0x2,0x300,0x2,0x0,0x2,0x2,0x2,0x0,0x0,0x2,0x2,0x0,0x0,0x2,0x0,0x2,0x100000,0x2,0x0,0x2,0x2,0xd4c40000,0xd4c40000,0x2,0x2,0x2,0xd4fd1500,0xd4fd1500,0x2,0x2,0x2,0x0,0x0,0x2,0x0,0x200000,0x2,0x0,0x2,0x2,0x2,0x2,0x0,0x200000,0x2,0x0,0x2,0x391500,0xc40000,0xc40002,0xc40000,0x2,0x2,0x80120002,0x80120002,0x2,0x0,0x0,0x2,0x2,0x2,0x2,0xd4c40000,0xd4c40000,0x2,0x100000,0x2,0xd4c40000,0x2,0x84000000,0x84000000,0x84000000,0x84000000,0x84000000,0x84000000,0x84000000,0x84000000,0x84000000,0x84000000,0xd4000000,0x0,0x0,0x0,0x0,0x50000000,0x2,0x2,0x3f000,0x2,0x0,0x2,0x3f000,0x0,0x2,0x0,0x2,0x0,0x2,0x200000,0x0,0xd4c40000,0x0,0x134e0002,0x2,0xd4c40000,0xd4c40000,0x2,0x0,0x2,0x134e0002,0x0,0x2,0xd4c40000,0xd4c40000,0x2,0x134e0002,0x2,0x2,0x2,0x0,0x2,0xd4c40000,0x2,0x2,0x100000,0x2,0x2,0x2,0x2,0x0,0x2,0xd4c40000,0xd4c40000,0x2,0x100000,0x2,0x0,0x2,0x2,0x100000,0x0,0x0,0x800c0000,0x2,0x0,0x100000,0x2,0x800c0000,0x2,0x0,0x800c0000,0x2,0x2,0x0,0x200400,0x2,0x200000,0x2,0xd4c40000,0xd4c40000,0x2,0x2,0x2,0x0,0x2,0x0,0x2,0x2,0x2,0x100000,0x2,0x2,0x2,0x2,0x2,0x0,0x2,0x2,0x2,0x100000,0x2,0x2,0x2,0x0,0x2,0x2,0x2,0x100000,0x2,0x2,0x0,0x2,0x0,0x2,0x2,0x2,0x100000,0x0,0x2,0x200000,0x2,0x200000,0x0,0x2,0x2,0x2,0x200000,0x2,0x2,0x200000,0x2,0x2,0x0,0x200000,0x2,0x0,0x2,0x0,0xd4c40000,0x2,0x0,0x2,0x0,0x200000,0x2,0x0,0x2,0x800c0400,0x2,0x0,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x321c0000,0xc0000,0x800c0000,0xc0000,0x0,0x80000000,0x0,0x80000000,0x800c0000,0x2,0x2,0x800c0000,0x2,0xd4c40000,0x2,0x2,0x2,0x0,0x200000,0x2,0x0,0x2,};
+      jj_la1_0 = new int[] {0x0,0x302,0x302,0x0,0x300,0x2,0x2,0x2,0xd4c40000,0x0,0x300,0x2,0x300,0x2,0x0,0x2,0x2,0x2,0x0,0x0,0x2,0x2,0x0,0x0,0x2,0x0,0x2,0x100000,0x2,0x0,0x2,0x2,0xd4c40000,0xd4c40000,0x2,0x2,0x2,0xd4fd1500,0xd4fd1500,0x2,0x2,0x2,0x0,0x0,0x2,0x0,0x200000,0x2,0x0,0x2,0x2,0x2,0x2,0x0,0x200000,0x2,0x0,0x2,0x391500,0xc40000,0xc40002,0xc40000,0x2,0x2,0x80120002,0x80120002,0x2,0x0,0x0,0x2,0x2,0x2,0x2,0xd4c40000,0xd4c40000,0x2,0x100000,0x2,0xd4c40000,0x2,0x84000000,0x84000000,0x84000000,0x84000000,0x84000000,0x84000000,0x84000000,0x84000000,0x84000000,0x84000000,0xd4000000,0x0,0x0,0x0,0x0,0x50000000,0x2,0x2,0x3f000,0x2,0x0,0x2,0x3f000,0x0,0x2,0x0,0x2,0x0,0x2,0x200000,0x0,0xd4c40000,0x0,0x134e0002,0x2,0xd4c40000,0xd4c40000,0x2,0x0,0x2,0x134e0002,0x0,0x2,0xd4c40000,0xd4c40000,0x2,0x134e0002,0x2,0x2,0x2,0x0,0x2,0xd4c40000,0x2,0x2,0x100000,0x2,0x2,0x2,0x2,0x0,0x2,0xd4c40000,0xd4c40000,0x2,0x100000,0x2,0x0,0x2,0x2,0x100000,0x0,0x0,0x800c0000,0x2,0x0,0x100000,0x2,0x800c0000,0x2,0x0,0x800c0000,0x2,0x2,0x0,0x200400,0x2,0x200000,0x2,0xd4c40000,0xd4c40000,0x2,0x2,0x2,0x0,0x2,0x0,0x2,0x2,0x2,0x100000,0x2,0x2,0x2,0x2,0x2,0x0,0x2,0x2,0x2,0x100000,0x2,0x2,0x2,0x0,0x2,0x2,0x2,0x100000,0x2,0x2,0x0,0x2,0x0,0x2,0x2,0x2,0x100000,0x0,0x2,0x2,0x0,0x2,0x2,0x2,0x200000,0x2,0x2,0x200000,0x2,0x2,0x0,0x200000,0x2,0x0,0x2,0x0,0xd4c40000,0x2,0x0,0x2,0x0,0x200000,0x2,0x0,0x2,0x800c0400,0x2,0x0,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x321c0000,0xc0000,0x800c0000,0xc0000,0x0,0x80000000,0x0,0x80000000,0x800c0000,0x2,0x2,0x800c0000,0x2,0xd4c40000,0x2,0x2,0x2,0x0,0x200000,0x2,0x0,0x2,};
    }
    private static void jj_la1_init_1() {
-      jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x566000c0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x0,0x0,0x120000,0x120000,0x0,0x120000,0x0,0x0,0x0,0x120000,0x0,0x0,0x564000c0,0x564000c0,0x0,0x0,0x0,0x60001c0,0x60001c0,0x0,0x0,0x0,0x0,0x40,0x0,0x80,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x80,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0xc2,0xc2,0x0,0x80,0x80,0x0,0x0,0x0,0x0,0x564000c0,0x564000c0,0x0,0x0,0x0,0xc0,0x0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xc0,0x80,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x50000000,0x64000c0,0x50000000,0x3f,0x0,0x564000c0,0x564000c0,0x0,0x80000000,0x0,0x3f,0x0,0x0,0x564000c0,0x564000c0,0x0,0x3f,0x0,0x0,0x0,0x0,0x0,0x564000c0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x564000c0,0x564000c0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x40,0x160040,0x0,0x40,0x0,0x0,0x160040,0x0,0x40,0x160000,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x61200c0,0x61200c0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x0,0x6000000,0x0,0x0,0x0,0x0,0x60000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x80,0x0,0x6000000,0xc0,0x0,0x0,0x0,0x80,0x0,0x0,0x80,0x0,0x160000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x160000,0x0,0x0,0x0,0x160000,0x160000,0x160000,0x0,0x0,0x160000,0x0,0x60000c0,0x0,0x0,0x0,0x80,0x0,0x0,0x80,0x0,};
+      jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x566000c0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x0,0x0,0x120000,0x120000,0x0,0x120000,0x0,0x0,0x0,0x120000,0x0,0x0,0x564000c0,0x564000c0,0x0,0x0,0x0,0x60001c0,0x60001c0,0x0,0x0,0x0,0x0,0x40,0x0,0x80,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x80,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0xc2,0xc2,0x0,0x80,0x80,0x0,0x0,0x0,0x0,0x564000c0,0x564000c0,0x0,0x0,0x0,0xc0,0x0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xc0,0x80,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x50000000,0x64000c0,0x50000000,0x3f,0x0,0x564000c0,0x564000c0,0x0,0x80000000,0x0,0x3f,0x0,0x0,0x564000c0,0x564000c0,0x0,0x3f,0x0,0x0,0x0,0x0,0x0,0x564000c0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x564000c0,0x564000c0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x40,0x160040,0x0,0x40,0x0,0x0,0x160040,0x0,0x40,0x160000,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x61200c0,0x61200c0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x0,0x6000000,0x0,0x0,0x60000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x80,0x0,0x6000000,0xc0,0x0,0x0,0x0,0x80,0x0,0x0,0x80,0x0,0x160000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x160000,0x0,0x0,0x0,0x160000,0x160000,0x160000,0x0,0x0,0x160000,0x0,0x60000c0,0x0,0x0,0x0,0x80,0x0,0x0,0x80,0x0,};
    }
    private static void jj_la1_init_2() {
-      jj_la1_2 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x1000,0x0,0x0,0x0,0x0,0x880,0x0,0x0,0x0,0x100,0x100,0x0,0x0,0x2008,0x2008,0x0,0x2000,0x0,0x0,0x0,0x2000,0x0,0x0,0x1119,0x1119,0x0,0x0,0x0,0x2b80,0x2b80,0x0,0x0,0x0,0x100,0x0,0x0,0x100,0x0,0x0,0x100,0x0,0x0,0x0,0x0,0x100,0x0,0x0,0x100,0x0,0x2a80,0x0,0x0,0x0,0x0,0x0,0x380,0x380,0x0,0x100,0x100,0x0,0x0,0x0,0x0,0x1119,0x1119,0x0,0x0,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x100,0x100,0x100,0x100,0x100,0x0,0x0,0x0,0x0,0x180,0x0,0x0,0x0,0x0,0x100,0x0,0x40,0x0,0x0,0x0,0x109,0x1000,0x1300,0x0,0x1109,0x1109,0x0,0x0,0x0,0x1300,0x20,0x0,0x1109,0x1109,0x0,0x1300,0x0,0x0,0x0,0x1100,0x0,0x1109,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x0,0x1109,0x1109,0x0,0x0,0x0,0x1000,0x0,0x0,0x0,0x1000,0x1000,0xfffffb80,0x0,0x0,0x0,0x0,0xfffffb80,0x0,0x0,0xfffffb80,0x0,0x0,0x1100,0x0,0x0,0x0,0x0,0x2100,0x2100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x0,0x0,0x100,0x0,0x0,0x100,0x0,0x0,0x0,0x100,0x0,0x0,0x100,0x0,0xfffffb80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfffffb80,0x0,0xffffe200,0x0,0x100,0x980,0xffffeb80,0x0,0x0,0xfffffb80,0x0,0x100,0x0,0x0,0x0,0x100,0x0,0x0,0x100,0x0,};
+      jj_la1_2 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x1000,0x0,0x0,0x0,0x0,0x880,0x0,0x0,0x0,0x100,0x100,0x0,0x0,0x2008,0x2008,0x0,0x2000,0x0,0x0,0x0,0x2000,0x0,0x0,0x1119,0x1119,0x0,0x0,0x0,0x2b80,0x2b80,0x0,0x0,0x0,0x100,0x0,0x0,0x100,0x0,0x0,0x100,0x0,0x0,0x0,0x0,0x100,0x0,0x0,0x100,0x0,0x2a80,0x0,0x0,0x0,0x0,0x0,0x380,0x380,0x0,0x100,0x100,0x0,0x0,0x0,0x0,0x1119,0x1119,0x0,0x0,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x100,0x100,0x100,0x100,0x100,0x0,0x0,0x0,0x0,0x180,0x0,0x0,0x0,0x0,0x100,0x0,0x40,0x0,0x0,0x0,0x109,0x1000,0x1300,0x0,0x1109,0x1109,0x0,0x0,0x0,0x1300,0x20,0x0,0x1109,0x1109,0x0,0x1300,0x0,0x0,0x0,0x1100,0x0,0x1109,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x0,0x1109,0x1109,0x0,0x0,0x0,0x1000,0x0,0x0,0x0,0x1000,0x1000,0xfffffb80,0x0,0x0,0x0,0x0,0xfffffb80,0x0,0x0,0xfffffb80,0x0,0x0,0x1100,0x0,0x0,0x0,0x0,0x2100,0x2100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x0,0x0,0x100,0x0,0x0,0x100,0x0,0x0,0x0,0x100,0x0,0x0,0x100,0x0,0xfffffb80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfffffb80,0x0,0xffffe200,0x0,0x100,0x980,0xffffeb80,0x0,0x0,0xfffffb80,0x0,0x100,0x0,0x0,0x0,0x100,0x0,0x0,0x100,0x0,};
    }
    private static void jj_la1_init_3() {
-      jj_la1_3 = new int[] {0x8,0x80,0x80,0x2,0x80,0x0,0x0,0x0,0x75,0x0,0x80,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc5,0xc5,0x0,0x0,0x0,0xc401bf,0xc401bf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc401be,0x0,0x0,0x0,0x0,0x0,0x400000,0x400000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc7,0xc7,0x0,0x0,0x0,0x1,0x0,0x1,0x1,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x400000,0x0,0x0,0x0,0x0,0x0,0x45,0x80,0x200000,0x0,0xe5,0xe5,0x0,0x0,0x0,0x200000,0x0,0x0,0xe5,0xe5,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc5,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x400000,0x0,0xf5,0xf5,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x440001,0x0,0x0,0x0,0x0,0x440001,0x0,0x0,0x440001,0x0,0x0,0x400000,0x0,0x0,0x0,0x0,0x1,0x1,0x0,0x0,0x0,0x380000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x440001,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x440001,0x0,0x400000,0x0,0x0,0x40001,0x440001,0x0,0x0,0x440001,0x0,0x37,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
+      jj_la1_3 = new int[] {0x8,0x80,0x80,0x2,0x80,0x0,0x0,0x0,0x75,0x0,0x80,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc5,0xc5,0x0,0x0,0x0,0xc401bf,0xc401bf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc401be,0x0,0x0,0x0,0x0,0x0,0x400000,0x400000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc7,0xc7,0x0,0x0,0x0,0x1,0x0,0x1,0x1,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x400000,0x0,0x0,0x0,0x0,0x0,0x45,0x80,0x200000,0x0,0xe5,0xe5,0x0,0x0,0x0,0x200000,0x0,0x0,0xe5,0xe5,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc5,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x400000,0x0,0xf5,0xf5,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x440001,0x0,0x0,0x0,0x0,0x440001,0x0,0x0,0x440001,0x0,0x0,0x400000,0x0,0x0,0x0,0x0,0x1,0x1,0x0,0x0,0x0,0x380000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x440001,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x440001,0x0,0x400000,0x0,0x0,0x40001,0x440001,0x0,0x0,0x440001,0x0,0x37,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
    }
   final private JJCalls[] jj_2_rtns = new JJCalls[9];
   private boolean jj_rescan = false;
@@ -7859,7 +7837,7 @@ LexicalUnitImpl result = null;
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 271; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 269; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -7869,7 +7847,7 @@ LexicalUnitImpl result = null;
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 271; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 269; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -7879,7 +7857,7 @@ LexicalUnitImpl result = null;
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 271; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 269; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -7889,7 +7867,7 @@ LexicalUnitImpl result = null;
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 271; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 269; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -8006,7 +7984,7 @@ LexicalUnitImpl result = null;
       la1tokens[jj_kind] = true;
       jj_kind = -1;
     }
-    for (int i = 0; i < 271; i++) {
+    for (int i = 0; i < 269; i++) {
       if (jj_la1[i] == jj_gen) {
         for (int j = 0; j < 32; j++) {
           if ((jj_la1_0[i] & (1<<j)) != 0) {
index 13810bd60115ecc49f0491e1319f5405f33d16c2..482b8597d36a9dff203656e80036be5007b1bee9 100644 (file)
@@ -1992,12 +1992,12 @@ void debugDirective() :
 {
     <DEBUG_SYM>
     { 
-    String content = skipStatementUntil(new int[] {SEMICOLON,RBRACE});
+    String content = skipStatementUntil(new int[] {SEMICOLON,RBRACE,EOF});
     // TODO should evaluate the content expression, call documentHandler.debugDirective() etc.
     System.out.println(content);
     }
     try {
-      (";"(<S>)*)+
+      ";" (<S>)*
     }
     catch (ParseException e) {
       acceptMissingSemicolonBeforeRbrace(e);
@@ -2009,12 +2009,12 @@ void warnDirective() :
 {
     <WARN_SYM>
     { 
-    String content = skipStatementUntil(new int[] {SEMICOLON,RBRACE});
+    String content = skipStatementUntil(new int[] {SEMICOLON,RBRACE,EOF});
     // TODO should evaluate the content expression, call documentHandler.warnDirective() etc.
     System.err.println(content);
     }
     try {
-      (";"(<S>)*)+
+      ";" (<S>)*
     }
     catch (ParseException e) {
       acceptMissingSemicolonBeforeRbrace(e);
@@ -2831,27 +2831,27 @@ String skipStatementUntilRightParan(){
 JAVACODE
 String skipStatementUntil(int[] symbols){
     StringBuffer s = new StringBuffer();
-    boolean stop = false;
+    boolean found = false;
     Token tok;
-    while(!stop){
+    while(!found){
         tok = getToken(1);
-        if(tok.kind == EOF) {
-            return null;
-        }
         for(int sym : symbols){
             if(tok.kind == sym){
-                stop = true;
+                found = true;
                 break;
             }
         }
-        if(!stop){
+        if(tok.kind == EOF) {
+            break;
+        }
+        if(!found){
             if (tok.image != null) {
                 s.append(tok.image);
             }
             getNextToken();
         }
     }
-    return s.toString().trim();
+    return found ? s.toString().trim() : null;
 }
 
 
@@ -3089,7 +3089,7 @@ ArrayList<String> _parseSelectors() :
 JAVACODE
 void acceptMissingSemicolonBeforeRbrace( ParseException parseException ) {
     Token next = getToken(1);
-    if (next.kind != RBRACE) {
+    if (next.kind != RBRACE && next.kind!=EOF) {
         throw parseException;
     }
 }