예제 #1
0
 private final void jj_save(int index, int xla) {
   JJCalls p = jj_2_rtns[index];
   while (p.gen > jj_gen) {
     if (p.next == null) {
       p = p.next = new JJCalls();
       break;
     }
     p = p.next;
   }
   p.gen = jj_gen + xla - jj_la;
   p.first = token;
   p.arg = xla;
 }
예제 #2
0
 private final Token jj_consume_token(int kind) throws ParseException {
   Token oldToken;
   if ((oldToken = token).next != null) token = token.next;
   else token = token.next = token_source.getNextToken();
   jj_ntk = -1;
   if (token.kind == kind) {
     jj_gen++;
     if (++jj_gc > 100) {
       jj_gc = 0;
       for (int i = 0; i < jj_2_rtns.length; i++) {
         JJCalls c = jj_2_rtns[i];
         while (c != null) {
           if (c.gen < jj_gen) c.first = null;
           c = c.next;
         }
       }
     }
     return token;
   }
   token = oldToken;
   jj_kind = kind;
   throw generateParseException();
 }