/* Generated By:JJTree&JavaCC: Do not edit this line. ProfileParser.java */
package w3c.pics.parser;

import java.io.*;
import java.util.*;

public class ProfileParser/*@bgen(jjtree)*/implements ProfileParserTreeConstants, ProfileParserConstants {/*@bgen(jjtree)*/
  protected static JJTProfileParserState jjtree = new JJTProfileParserState();
    public static void main(String args[]) throws ParseException {
         try {
             FileInputStream input = new FileInputStream(args[0]);
             ProfileParser parser = new ProfileParser(input);
             Profile prof = new Profile();
             parser.rule(prof);
             // ((SimpleNode)parser.jjtree.rootNode()).dump(">");
             System.out.println(prof);
         }
         catch (IOException e) {
             System.out.println("I/O Error");
         }
    }

  static final public void rule(Profile prof) throws ParseException {
         String temp = null;
         String retval = new String("");
    jj_consume_token(L_PAREN);
    jj_consume_token(PICSRULE);
    temp = integer();
             retval+=temp;
    jj_consume_token(DOT);
             retval+=".";
    integer();
             retval+=temp;
             prof.setVersion(retval);
    rule_body(prof);
    jj_consume_token(R_PAREN);
  }

  static final public String integer() throws ParseException {
         String retval = new String("");
         Token thetoken = null;
    label_1:
    while (true) {
      thetoken = jj_consume_token(DIGIT);
             retval+=thetoken.image;
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case DIGIT:
        ;
        break;
      default:
        jj_la1[0] = jj_gen;
        break label_1;
      }
    }
             {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  static final public void rule_body(Profile prof) throws ParseException {
    jj_consume_token(L_PAREN);
    rule_clauses(prof);
    jj_consume_token(R_PAREN);
  }

  static final public void rule_clauses(Profile prof) throws ParseException {
 /*@bgen(jjtree) AllNodes */
  PICSAllNodes jjtn000 = new PICSAllNodes(JJTALLNODES);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      label_2:
      while (true) {
        rule_clause(prof);
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case LOWALPHA:
        case HIGHALPHA:
        case DIGIT:
        case L_PAREN:
        case DQUOTE:
        case DOT:
        case SQUOTE:
        case PICSRULE:
        case POLICY:
        case EXPLAIN:
        case REJECTURL:
        case ACCEPTURL:
        case REJECTIF:
        case REJECTUNLESS:
        case ACCEPTIF:
        case ACCEPTUNLESS:
        case RULENAME:
        case NAME:
        case DESC:
        case SOURCEURL:
        case SOURCE:
        case TOOL:
        case AUTHOR:
        case LASTMOD:
        case SERVICEINFO:
        case SHORTNAME:
        case BUREAUURL:
        case USEEM:
        case RATFILE:
        case NOBUREAU:
        case OPTEXT:
        case EXT_NAME:
        case REQEXT:
        case PASS:
        case FAIL:
        case URL:
        case AND:
        case OR:
        case OTHERWISE:
        case FTP:
        case HTTP:
        case GOPHER:
        case NNTP:
        case IRC:
        case PROSPERO:
        case TELNET:
        case PATTERNS:
          ;
          break;
        default:
          jj_la1[1] = jj_gen;
          break label_2;
        }
      }
    } catch (Throwable jjte000) {
           if (jjtc000) {
             jjtree.clearNodeScope(jjtn000);
             jjtc000 = false;
           } else {
             jjtree.popNode();
           }
           if (jjte000 instanceof ParseException) {
             {if (true) throw (ParseException)jjte000;}
           }
           if (jjte000 instanceof RuntimeException) {
             {if (true) throw (RuntimeException)jjte000;}
           }
           {if (true) throw (Error)jjte000;}
    } finally {
           if (jjtc000) {
             jjtree.closeNodeScope(jjtn000, true);
           }
    }
  }

  static final public void rule_clause(Profile prof) throws ParseException {
 /*@bgen(jjtree) RuleNode */
         PICSRuleNode jjtn000 = new PICSRuleNode(JJTRULENODE);
         boolean jjtc000 = true;
         jjtree.openNodeScope(jjtn000);String retval = null;
    try {
      if (jj_2_1(3)) {
        policy_clause(prof);
      } else if (jj_2_2(3)) {
        name_clause(prof);
      } else if (jj_2_3(3)) {
        source_clause(prof);
      } else if (jj_2_4(3)) {
        service_clause(prof);
      } else if (jj_2_5(3)) {
        opt_extension_clause(prof);
      } else if (jj_2_6(3)) {
        req_extension_clause(prof);
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case LOWALPHA:
        case HIGHALPHA:
        case DIGIT:
        case L_PAREN:
        case DQUOTE:
        case DOT:
        case SQUOTE:
        case PICSRULE:
        case POLICY:
        case EXPLAIN:
        case REJECTURL:
        case ACCEPTURL:
        case REJECTIF:
        case REJECTUNLESS:
        case ACCEPTIF:
        case ACCEPTUNLESS:
        case RULENAME:
        case NAME:
        case DESC:
        case SOURCEURL:
        case SOURCE:
        case TOOL:
        case AUTHOR:
        case LASTMOD:
        case SERVICEINFO:
        case SHORTNAME:
        case BUREAUURL:
        case USEEM:
        case RATFILE:
        case NOBUREAU:
        case OPTEXT:
        case EXT_NAME:
        case REQEXT:
        case PASS:
        case FAIL:
        case URL:
        case AND:
        case OR:
        case OTHERWISE:
        case FTP:
        case HTTP:
        case GOPHER:
        case NNTP:
        case IRC:
        case PROSPERO:
        case TELNET:
        case PATTERNS:
          retval = extension_aval();
           jjtree.closeNodeScope(jjtn000, true);
           jjtc000 = false;
             prof.addExtClause(retval);
          break;
        default:
          jj_la1[2] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
    } catch (Throwable jjte000) {
           if (jjtc000) {
             jjtree.clearNodeScope(jjtn000);
             jjtc000 = false;
           } else {
             jjtree.popNode();
           }
           if (jjte000 instanceof ParseException) {
             {if (true) throw (ParseException)jjte000;}
           }
           if (jjte000 instanceof RuntimeException) {
             {if (true) throw (RuntimeException)jjte000;}
           }
           {if (true) throw (Error)jjte000;}
    } finally {
           if (jjtc000) {
             jjtree.closeNodeScope(jjtn000, true);
           }
    }
  }

  static final public void policy_clause(Profile prof) throws ParseException {
 /*@bgen(jjtree) PolicyNode */
         PICSPolicyNode jjtn000 = new PICSPolicyNode(JJTPOLICYNODE);
         boolean jjtc000 = true;
         jjtree.openNodeScope(jjtn000);Policy newpolicy = new Policy();
    try {
      jj_consume_token(POLICY);
      jj_consume_token(L_PAREN);
      label_3:
      while (true) {
        policy_attribute(newpolicy);
        if (jj_2_7(2)) {
          ;
        } else {
          break label_3;
        }
      }
      jj_consume_token(R_PAREN);
           jjtree.closeNodeScope(jjtn000, true);
           jjtc000 = false;
             prof.putPolicy(newpolicy);
    } catch (Throwable jjte000) {
           if (jjtc000) {
             jjtree.clearNodeScope(jjtn000);
             jjtc000 = false;
           } else {
             jjtree.popNode();
           }
           if (jjte000 instanceof ParseException) {
             {if (true) throw (ParseException)jjte000;}
           }
           if (jjte000 instanceof RuntimeException) {
             {if (true) throw (RuntimeException)jjte000;}
           }
           {if (true) throw (Error)jjte000;}
    } finally {
           if (jjtc000) {
             jjtree.closeNodeScope(jjtn000, true);
           }
    }
  }

  static final public void policy_attribute(Policy newpolicy) throws ParseException {
 /*@bgen(jjtree) PolicyAttrNode */
         PICSPolicyAttrNode jjtn000 = new PICSPolicyAttrNode(JJTPOLICYATTRNODE);
         boolean jjtc000 = true;
         jjtree.openNodeScope(jjtn000);String temp = null;
    try {
      if (jj_2_8(3)) {
        jj_consume_token(REJECTURL);
           PICSR_URL_Node jjtn001 = new PICSR_URL_Node(JJTR_URL_NODE);
           boolean jjtc001 = true;
           jjtree.openNodeScope(jjtn001);
        try {
          temp = URL_strings();
                               jjtree.closeNodeScope(jjtn001, true);
                               jjtc001 = false;
                              jjtn001.text=temp;
        } catch (Throwable jjte001) {
           if (jjtc001) {
             jjtree.clearNodeScope(jjtn001);
             jjtc001 = false;
           } else {
             jjtree.popNode();
           }
           if (jjte001 instanceof ParseException) {
             {if (true) throw (ParseException)jjte001;}
           }
           if (jjte001 instanceof RuntimeException) {
             {if (true) throw (RuntimeException)jjte001;}
           }
           {if (true) throw (Error)jjte001;}
        } finally {
           if (jjtc001) {
             jjtree.closeNodeScope(jjtn001, true);
           }
        }
           jjtree.closeNodeScope(jjtn000, true);
           jjtc000 = false;
             newpolicy.setType("RejectByURL");
             newpolicy.setTree(jjtn000);
      } else if (jj_2_9(3)) {
        jj_consume_token(ACCEPTURL);
           PICSA_URL_Node jjtn002 = new PICSA_URL_Node(JJTA_URL_NODE);
           boolean jjtc002 = true;
           jjtree.openNodeScope(jjtn002);
        try {
          temp = URL_strings();
                               jjtree.closeNodeScope(jjtn002, true);
                               jjtc002 = false;
                              jjtn002.text=temp;
        } catch (Throwable jjte002) {
           if (jjtc002) {
             jjtree.clearNodeScope(jjtn002);
             jjtc002 = false;
           } else {
             jjtree.popNode();
           }
           if (jjte002 instanceof ParseException) {
             {if (true) throw (ParseException)jjte002;}
           }
           if (jjte002 instanceof RuntimeException) {
             {if (true) throw (RuntimeException)jjte002;}
           }
           {if (true) throw (Error)jjte002;}
        } finally {
           if (jjtc002) {
             jjtree.closeNodeScope(jjtn002, true);
           }
        }
           jjtree.closeNodeScope(jjtn000, true);
           jjtc000 = false;
             newpolicy.setType("AcceptByURL");
             newpolicy.setTree(jjtn000);
      } else if (jj_2_10(3)) {
        jj_consume_token(REJECTIF);
           PICSR_IF_Node jjtn003 = new PICSR_IF_Node(JJTR_IF_NODE);
           boolean jjtc003 = true;
           jjtree.openNodeScope(jjtn003);
        try {
          temp = policy_string();
                                 jjtree.closeNodeScope(jjtn003, true);
                                 jjtc003 = false;
                                jjtn003.text=temp;
        } catch (Throwable jjte003) {
           if (jjtc003) {
             jjtree.clearNodeScope(jjtn003);
             jjtc003 = false;
           } else {
             jjtree.popNode();
           }
           if (jjte003 instanceof ParseException) {
             {if (true) throw (ParseException)jjte003;}
           }
           if (jjte003 instanceof RuntimeException) {
             {if (true) throw (RuntimeException)jjte003;}
           }
           {if (true) throw (Error)jjte003;}
        } finally {
           if (jjtc003) {
             jjtree.closeNodeScope(jjtn003, true);
           }
        }
           jjtree.closeNodeScope(jjtn000, true);
           jjtc000 = false;
             newpolicy.setType("RejectIf");
             newpolicy.setTree(jjtn000);
      } else if (jj_2_11(3)) {
        jj_consume_token(REJECTUNLESS);
           PICSR_UN_Node jjtn004 = new PICSR_UN_Node(JJTR_UN_NODE);
           boolean jjtc004 = true;
           jjtree.openNodeScope(jjtn004);
        try {
          temp = policy_string();
                                 jjtree.closeNodeScope(jjtn004, true);
                                 jjtc004 = false;
                                jjtn004.text=temp;
        } catch (Throwable jjte004) {
           if (jjtc004) {
             jjtree.clearNodeScope(jjtn004);
             jjtc004 = false;
           } else {
             jjtree.popNode();
           }
           if (jjte004 instanceof ParseException) {
             {if (true) throw (ParseException)jjte004;}
           }
           if (jjte004 instanceof RuntimeException) {
             {if (true) throw (RuntimeException)jjte004;}
           }
           {if (true) throw (Error)jjte004;}
        } finally {
           if (jjtc004) {
             jjtree.closeNodeScope(jjtn004, true);
           }
        }
           jjtree.closeNodeScope(jjtn000, true);
           jjtc000 = false;
             newpolicy.setType("RejectUnless");
             newpolicy.setTree(jjtn000);
      } else if (jj_2_12(3)) {
        jj_consume_token(ACCEPTIF);
           PICSA_IF_Node jjtn005 = new PICSA_IF_Node(JJTA_IF_NODE);
           boolean jjtc005 = true;
           jjtree.openNodeScope(jjtn005);
        try {
          temp = policy_string();
                                 jjtree.closeNodeScope(jjtn005, true);
                                 jjtc005 = false;
                                jjtn005.text=temp;
        } catch (Throwable jjte005) {
           if (jjtc005) {
             jjtree.clearNodeScope(jjtn005);
             jjtc005 = false;
           } else {
             jjtree.popNode();
           }
           if (jjte005 instanceof ParseException) {
             {if (true) throw (ParseException)jjte005;}
           }
           if (jjte005 instanceof RuntimeException) {
             {if (true) throw (RuntimeException)jjte005;}
           }
           {if (true) throw (Error)jjte005;}
        } finally {
           if (jjtc005) {
             jjtree.closeNodeScope(jjtn005, true);
           }
        }
           jjtree.closeNodeScope(jjtn000, true);
           jjtc000 = false;
             newpolicy.setType("AcceptIf");
             newpolicy.setTree(jjtn000);
      } else if (jj_2_13(3)) {
        jj_consume_token(ACCEPTUNLESS);
           PICSA_UN_Node jjtn006 = new PICSA_UN_Node(JJTA_UN_NODE);
           boolean jjtc006 = true;
           jjtree.openNodeScope(jjtn006);
        try {
          temp = policy_string();
                                 jjtree.closeNodeScope(jjtn006, true);
                                 jjtc006 = false;
                                jjtn006.text=temp;
        } catch (Throwable jjte006) {
           if (jjtc006) {
             jjtree.clearNodeScope(jjtn006);
             jjtc006 = false;
           } else {
             jjtree.popNode();
           }
           if (jjte006 instanceof ParseException) {
             {if (true) throw (ParseException)jjte006;}
           }
           if (jjte006 instanceof RuntimeException) {
             {if (true) throw (RuntimeException)jjte006;}
           }
           {if (true) throw (Error)jjte006;}
        } finally {
           if (jjtc006) {
             jjtree.closeNodeScope(jjtn006, true);
           }
        }
           jjtree.closeNodeScope(jjtn000, true);
           jjtc000 = false;
             newpolicy.setType("AcceptUnless");
             newpolicy.setTree(jjtn000);
      } else if (jj_2_14(3)) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case EXPLAIN:
          jj_consume_token(EXPLAIN);
          break;
        default:
          jj_la1[3] = jj_gen;
          ;
        }
           PICSE_Node jjtn007 = new PICSE_Node(JJTE_NODE);
           boolean jjtc007 = true;
           jjtree.openNodeScope(jjtn007);
        try {
          temp = quotedString();
                                jjtree.closeNodeScope(jjtn007, true);
                                jjtc007 = false;
                               jjtn007.text=temp;
        } catch (Throwable jjte007) {
           if (jjtc007) {
             jjtree.clearNodeScope(jjtn007);
             jjtc007 = false;
           } else {
             jjtree.popNode();
           }
           if (jjte007 instanceof ParseException) {
             {if (true) throw (ParseException)jjte007;}
           }
           if (jjte007 instanceof RuntimeException) {
             {if (true) throw (RuntimeException)jjte007;}
           }
           {if (true) throw (Error)jjte007;}
        } finally {
           if (jjtc007) {
             jjtree.closeNodeScope(jjtn007, true);
           }
        }
           jjtree.closeNodeScope(jjtn000, true);
           jjtc000 = false;
             newpolicy.setExplanation(temp);
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case LOWALPHA:
        case HIGHALPHA:
        case DIGIT:
        case L_PAREN:
        case DQUOTE:
        case DOT:
        case SQUOTE:
        case PICSRULE:
        case POLICY:
        case EXPLAIN:
        case REJECTURL:
        case ACCEPTURL:
        case REJECTIF:
        case REJECTUNLESS:
        case ACCEPTIF:
        case ACCEPTUNLESS:
        case RULENAME:
        case NAME:
        case DESC:
        case SOURCEURL:
        case SOURCE:
        case TOOL:
        case AUTHOR:
        case LASTMOD:
        case SERVICEINFO:
        case SHORTNAME:
        case BUREAUURL:
        case USEEM:
        case RATFILE:
        case NOBUREAU:
        case OPTEXT:
        case EXT_NAME:
        case REQEXT:
        case PASS:
        case FAIL:
        case URL:
        case AND:
        case OR:
        case OTHERWISE:
        case FTP:
        case HTTP:
        case GOPHER:
        case NNTP:
        case IRC:
        case PROSPERO:
        case TELNET:
        case PATTERNS:
          temp = extension_aval();
           jjtree.closeNodeScope(jjtn000, true);
           jjtc000 = false;
             newpolicy.addExtClause(temp);
          break;
        default:
          jj_la1[4] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
    } catch (Throwable jjte000) {
           if (jjtc000) {
             jjtree.clearNodeScope(jjtn000);
             jjtc000 = false;
           } else {
             jjtree.popNode();
           }
           if (jjte000 instanceof ParseException) {
             {if (true) throw (ParseException)jjte000;}
           }
           if (jjte000 instanceof RuntimeException) {
             {if (true) throw (RuntimeException)jjte000;}
           }
           {if (true) throw (Error)jjte000;}
    } finally {
           if (jjtc000) {
             jjtree.closeNodeScope(jjtn000, true);
           }
    }
  }

  static final public String policy_string() throws ParseException {
         String temp = null;
         String retval = new String("");
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case DQUOTE:
      jj_consume_token(DQUOTE);
             retval+="\"";
      temp = policy_expression();
             retval+=temp;
      jj_consume_token(DQUOTE);
             retval+="\"";
             {if (true) return retval;}
      break;
    case SQUOTE:
      jj_consume_token(SQUOTE);
             retval+="'";
      temp = policy_expression();
             retval+=temp;
      jj_consume_token(SQUOTE);
             retval+="'";
             {if (true) return retval;}
      break;
    default:
      jj_la1[5] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    throw new Error("Missing return statement in function");
  }

  static final public void name_clause(Profile prof) throws ParseException {
    jj_consume_token(NAME);
    jj_consume_token(L_PAREN);
    label_4:
    while (true) {
      name_attribute(prof);
      if (jj_2_15(2)) {
        ;
      } else {
        break label_4;
      }
    }
    jj_consume_token(R_PAREN);
  }

  static final public void name_attribute(Profile prof) throws ParseException {
         String temp = null;
    if (jj_2_16(3)) {
      jj_consume_token(DESC);
      temp = quotedString();
             prof.setDescription(temp);
    } else if (jj_2_17(3)) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case RULENAME:
        jj_consume_token(RULENAME);
        break;
      default:
        jj_la1[6] = jj_gen;
        ;
      }
      temp = quotedString();
             prof.setRuleName(temp);
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LOWALPHA:
      case HIGHALPHA:
      case DIGIT:
      case L_PAREN:
      case DQUOTE:
      case DOT:
      case SQUOTE:
      case PICSRULE:
      case POLICY:
      case EXPLAIN:
      case REJECTURL:
      case ACCEPTURL:
      case REJECTIF:
      case REJECTUNLESS:
      case ACCEPTIF:
      case ACCEPTUNLESS:
      case RULENAME:
      case NAME:
      case DESC:
      case SOURCEURL:
      case SOURCE:
      case TOOL:
      case AUTHOR:
      case LASTMOD:
      case SERVICEINFO:
      case SHORTNAME:
      case BUREAUURL:
      case USEEM:
      case RATFILE:
      case NOBUREAU:
      case OPTEXT:
      case EXT_NAME:
      case REQEXT:
      case PASS:
      case FAIL:
      case URL:
      case AND:
      case OR:
      case OTHERWISE:
      case FTP:
      case HTTP:
      case GOPHER:
      case NNTP:
      case IRC:
      case PROSPERO:
      case TELNET:
      case PATTERNS:
        temp = extension_aval();
             prof.addNameExt(temp);
        break;
      default:
        jj_la1[7] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
  }

  static final public void source_clause(Profile prof) throws ParseException {
    jj_consume_token(SOURCE);
    jj_consume_token(L_PAREN);
    label_5:
    while (true) {
      source_attribute(prof);
      if (jj_2_18(2)) {
        ;
      } else {
        break label_5;
      }
    }
    jj_consume_token(R_PAREN);
  }

  static final public void source_attribute(Profile prof) throws ParseException {
         String temp = null;
    if (jj_2_19(3)) {
      jj_consume_token(TOOL);
      temp = quotedString();
             prof.setCreationTool(temp);
    } else if (jj_2_20(3)) {
      jj_consume_token(AUTHOR);
      temp = quoted_address();
             prof.setAuthor(temp);
    } else if (jj_2_21(3)) {
      jj_consume_token(LASTMOD);
      temp = quotedISOdate();
             prof.setLastModified(temp);
    } else if (jj_2_22(3)) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case SOURCEURL:
        jj_consume_token(SOURCEURL);
        break;
      default:
        jj_la1[8] = jj_gen;
        ;
      }
      temp = quotedURL();
             prof.setSourceURL(temp);
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LOWALPHA:
      case HIGHALPHA:
      case DIGIT:
      case L_PAREN:
      case DQUOTE:
      case DOT:
      case SQUOTE:
      case PICSRULE:
      case POLICY:
      case EXPLAIN:
      case REJECTURL:
      case ACCEPTURL:
      case REJECTIF:
      case REJECTUNLESS:
      case ACCEPTIF:
      case ACCEPTUNLESS:
      case RULENAME:
      case NAME:
      case DESC:
      case SOURCEURL:
      case SOURCE:
      case TOOL:
      case AUTHOR:
      case LASTMOD:
      case SERVICEINFO:
      case SHORTNAME:
      case BUREAUURL:
      case USEEM:
      case RATFILE:
      case NOBUREAU:
      case OPTEXT:
      case EXT_NAME:
      case REQEXT:
      case PASS:
      case FAIL:
      case URL:
      case AND:
      case OR:
      case OTHERWISE:
      case FTP:
      case HTTP:
      case GOPHER:
      case NNTP:
      case IRC:
      case PROSPERO:
      case TELNET:
      case PATTERNS:
        temp = extension_aval();
             prof.addSourceExt(temp);
        break;
      default:
        jj_la1[9] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
  }

  static final public String quotedISOdate() throws ParseException {
         Token tee = null;
         String temp = null;
         String retval = new String("");
    jj_consume_token(DQUOTE);
    temp = ISOyear();
             retval+=temp;
    jj_consume_token(MINUS);
    temp = ISOmonth();
             retval+="-"+temp;
    jj_consume_token(MINUS);
    temp = ISOday();
             retval+="-"+temp;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case HIGHALPHA:
      tee = jj_consume_token(HIGHALPHA);
      break;
    case LOWALPHA:
      tee = jj_consume_token(LOWALPHA);
      break;
    default:
      jj_la1[10] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
             if (!tee.image.equals("T"))
                 {if (true) throw generateParseException();}
    temp = ISOhour();
             retval+="T"+temp;
    jj_consume_token(COLON);
    temp = ISOminute();
             retval+=":"+temp;
    temp = sign();
             retval+=temp;
    temp = ISOtimezone();
             retval+=temp;
    jj_consume_token(DQUOTE);
             {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  static final public String sign() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case PLUS:
      jj_consume_token(PLUS);
             {if (true) return "+";}
      break;
    case MINUS:
      jj_consume_token(MINUS);
             {if (true) return "-";}
      break;
    default:
      jj_la1[11] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    throw new Error("Missing return statement in function");
  }

  static final public void service_clause(Profile prof) throws ParseException {
         Hashtable serviceattr = new Hashtable();
    jj_consume_token(SERVICEINFO);
    jj_consume_token(L_PAREN);
    label_6:
    while (true) {
      service_attribute(serviceattr);
      if (jj_2_23(2)) {
        ;
      } else {
        break label_6;
      }
    }
    jj_consume_token(R_PAREN);
             prof.addServiceInfo((String)serviceattr.get("name"), serviceattr);
  }

  static final public void service_attribute(Hashtable serviceattr) throws ParseException {
         String temp = null;
    if (jj_2_24(3)) {
      jj_consume_token(SHORTNAME);
      temp = quotedString();
             serviceattr.put("shortname", temp);
    } else if (jj_2_25(3)) {
      jj_consume_token(BUREAUURL);
      temp = quotedURL();
             serviceattr.put("bureauURL", temp);
    } else if (jj_2_26(3)) {
      jj_consume_token(USEEM);
      temp = y_n();
             serviceattr.put("useEmbedded", temp);
    } else if (jj_2_27(3)) {
      jj_consume_token(RATFILE);
      temp = quotedString();
             serviceattr.put("ratfile", temp);
    } else if (jj_2_28(3)) {
      jj_consume_token(NOBUREAU);
      temp = pass_fail();
             serviceattr.put("bureauUnavailable", temp);
    } else if (jj_2_29(3)) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case NAME:
        jj_consume_token(NAME);
        break;
      default:
        jj_la1[12] = jj_gen;
        ;
      }
      temp = quotedURL();
             serviceattr.put("name", temp);
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LOWALPHA:
      case HIGHALPHA:
      case DIGIT:
      case L_PAREN:
      case DQUOTE:
      case DOT:
      case SQUOTE:
      case PICSRULE:
      case POLICY:
      case EXPLAIN:
      case REJECTURL:
      case ACCEPTURL:
      case REJECTIF:
      case REJECTUNLESS:
      case ACCEPTIF:
      case ACCEPTUNLESS:
      case RULENAME:
      case NAME:
      case DESC:
      case SOURCEURL:
      case SOURCE:
      case TOOL:
      case AUTHOR:
      case LASTMOD:
      case SERVICEINFO:
      case SHORTNAME:
      case BUREAUURL:
      case USEEM:
      case RATFILE:
      case NOBUREAU:
      case OPTEXT:
      case EXT_NAME:
      case REQEXT:
      case PASS:
      case FAIL:
      case URL:
      case AND:
      case OR:
      case OTHERWISE:
      case FTP:
      case HTTP:
      case GOPHER:
      case NNTP:
      case IRC:
      case PROSPERO:
      case TELNET:
      case PATTERNS:
        temp = extension_aval();
             Vector svector = null;
             if (serviceattr.get("extension")==null) {
                 svector = new Vector();
             }
             else {
                 svector = (Vector)serviceattr.get("extension");
             }
             svector.addElement(temp);
             serviceattr.put("extension", svector);
        break;
      default:
        jj_la1[13] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
  }

  static final public String y_n() throws ParseException {
         Token thetoken = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case DQUOTE:
      jj_consume_token(DQUOTE);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case HIGHALPHA:
        thetoken = jj_consume_token(HIGHALPHA);
        break;
      case LOWALPHA:
        thetoken = jj_consume_token(LOWALPHA);
        break;
      default:
        jj_la1[14] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
             if ((!thetoken.image.equals("Y")) && (!thetoken.image.equals("N")))
                 {if (true) throw generateParseException();}
      jj_consume_token(DQUOTE);
             {if (true) return thetoken.image;}
      break;
    case SQUOTE:
      jj_consume_token(SQUOTE);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case HIGHALPHA:
        thetoken = jj_consume_token(HIGHALPHA);
        break;
      case LOWALPHA:
        thetoken = jj_consume_token(LOWALPHA);
        break;
      default:
        jj_la1[15] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
             if ((!thetoken.image.equals("Y")) && (!thetoken.image.equals("N")))
                 {if (true) throw generateParseException();}
      jj_consume_token(SQUOTE);
             {if (true) return thetoken.image;}
      break;
    default:
      jj_la1[16] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    throw new Error("Missing return statement in function");
  }

  static final public void opt_extension_clause(Profile prof) throws ParseException {
         String temp = null;
         String retval = new String("");
    jj_consume_token(OPTEXT);
    jj_consume_token(L_PAREN);
    label_7:
    while (true) {
      temp = extension_name();
             retval+=temp;
      if (jj_2_30(2)) {
        ;
      } else {
        break label_7;
      }
    }
    jj_consume_token(R_PAREN);
             prof.addOptExt(retval);
  }

  static final public String extension_name() throws ParseException {
         String temp = null;
         String retval = new String("");
    if (jj_2_31(3)) {
      jj_consume_token(SHORTNAME);
      temp = quotedString();
             retval+="shortname ";
             retval+="\""+temp+"\" ";
             {if (true) return retval;}
    } else if (jj_2_32(3)) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case EXT_NAME:
        jj_consume_token(EXT_NAME);
        break;
      default:
        jj_la1[17] = jj_gen;
        ;
      }
      temp = quotedURL();
             retval+="extension-name ";
             retval+="\""+temp+"\" ";
             {if (true) return retval;}
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LOWALPHA:
      case HIGHALPHA:
      case DIGIT:
      case L_PAREN:
      case DQUOTE:
      case DOT:
      case SQUOTE:
      case PICSRULE:
      case POLICY:
      case EXPLAIN:
      case REJECTURL:
      case ACCEPTURL:
      case REJECTIF:
      case REJECTUNLESS:
      case ACCEPTIF:
      case ACCEPTUNLESS:
      case RULENAME:
      case NAME:
      case DESC:
      case SOURCEURL:
      case SOURCE:
      case TOOL:
      case AUTHOR:
      case LASTMOD:
      case SERVICEINFO:
      case SHORTNAME:
      case BUREAUURL:
      case USEEM:
      case RATFILE:
      case NOBUREAU:
      case OPTEXT:
      case EXT_NAME:
      case REQEXT:
      case PASS:
      case FAIL:
      case URL:
      case AND:
      case OR:
      case OTHERWISE:
      case FTP:
      case HTTP:
      case GOPHER:
      case NNTP:
      case IRC:
      case PROSPERO:
      case TELNET:
      case PATTERNS:
        temp = extension_aval();
             retval+=temp;
             {if (true) return retval;}
        break;
      default:
        jj_la1[18] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
    throw new Error("Missing return statement in function");
  }

  static final public void req_extension_clause(Profile prof) throws ParseException {
         String temp = null;
         String retval = new String("");
    jj_consume_token(REQEXT);
    jj_consume_token(L_PAREN);
    label_8:
    while (true) {
      temp = extension_name();
             retval+=temp;
      if (jj_2_33(2)) {
        ;
      } else {
        break label_8;
      }
    }
    jj_consume_token(R_PAREN);
             prof.addReqExt(retval);
  }

  static final public String extension_aval() throws ParseException {
         String retval = null;
    retval = attrvalpair();
             {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  static final public String attrvalpair() throws ParseException {
         String retval = new String("");
         String temp = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case LOWALPHA:
    case HIGHALPHA:
    case DIGIT:
    case DOT:
    case PICSRULE:
    case POLICY:
    case EXPLAIN:
    case REJECTURL:
    case ACCEPTURL:
    case REJECTIF:
    case REJECTUNLESS:
    case ACCEPTIF:
    case ACCEPTUNLESS:
    case RULENAME:
    case NAME:
    case DESC:
    case SOURCEURL:
    case SOURCE:
    case TOOL:
    case AUTHOR:
    case LASTMOD:
    case SERVICEINFO:
    case SHORTNAME:
    case BUREAUURL:
    case USEEM:
    case RATFILE:
    case NOBUREAU:
    case OPTEXT:
    case EXT_NAME:
    case REQEXT:
    case PASS:
    case FAIL:
    case URL:
    case AND:
    case OR:
    case OTHERWISE:
    case FTP:
    case HTTP:
    case GOPHER:
    case NNTP:
    case IRC:
    case PROSPERO:
    case TELNET:
    case PATTERNS:
      temp = attribute();
             retval+=temp+" ";
      temp = value();
             retval+=temp+" ";
             {if (true) return retval;}
      break;
    case L_PAREN:
    case DQUOTE:
    case SQUOTE:
      temp = value();
             retval+=temp+" ";
             {if (true) return retval;}
      break;
    default:
      jj_la1[19] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    throw new Error("Missing return statement in function");
  }

  static final public String attribute() throws ParseException {
         String retval = null;
    retval = alphanumstr();
             {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  static final public String value() throws ParseException {
         String temp = null;
         String retval = new String("");
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case DQUOTE:
    case SQUOTE:
      temp = quotedString();
             retval+="\""+temp+"\"";
             {if (true) return retval;}
      break;
    case L_PAREN:
      jj_consume_token(L_PAREN);
             retval+="(";
      label_9:
      while (true) {
        temp = attrvalpair();
             retval+=temp;
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case LOWALPHA:
        case HIGHALPHA:
        case DIGIT:
        case L_PAREN:
        case DQUOTE:
        case DOT:
        case SQUOTE:
        case PICSRULE:
        case POLICY:
        case EXPLAIN:
        case REJECTURL:
        case ACCEPTURL:
        case REJECTIF:
        case REJECTUNLESS:
        case ACCEPTIF:
        case ACCEPTUNLESS:
        case RULENAME:
        case NAME:
        case DESC:
        case SOURCEURL:
        case SOURCE:
        case TOOL:
        case AUTHOR:
        case LASTMOD:
        case SERVICEINFO:
        case SHORTNAME:
        case BUREAUURL:
        case USEEM:
        case RATFILE:
        case NOBUREAU:
        case OPTEXT:
        case EXT_NAME:
        case REQEXT:
        case PASS:
        case FAIL:
        case URL:
        case AND:
        case OR:
        case OTHERWISE:
        case FTP:
        case HTTP:
        case GOPHER:
        case NNTP:
        case IRC:
        case PROSPERO:
        case TELNET:
        case PATTERNS:
          ;
          break;
        default:
          jj_la1[20] = jj_gen;
          break label_9;
        }
      }
      jj_consume_token(R_PAREN);
             retval+=")";
             {if (true) return retval;}
      break;
    default:
      jj_la1[21] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    throw new Error("Missing return statement in function");
  }

  static final public String quotedString() throws ParseException {
         String retval = new String("");
         String temp = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case DQUOTE:
      jj_consume_token(DQUOTE);
      label_10:
      while (true) {
        temp = notdoublequotechar();
             retval+=temp;
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case LOWALPHA:
        case HIGHALPHA:
        case DIGIT:
        case NATIONAL:
        case ATSIGN:
        case SLASH:
        case L_PAREN:
        case R_PAREN:
        case DOLLAR:
        case MINUS:
        case USCORE:
        case DOT:
        case PLUS:
        case SEMI:
        case QUES:
        case COLON:
        case AMP:
        case EQUAL:
        case BANG:
        case STAR:
        case SQUOTE:
        case COMMA:
        case L_BRAK:
        case R_BRAK:
        case L_ANGLE:
        case R_ANGLE:
        case POUND:
        case PERCENT:
        case L_BRACE:
        case R_BRACE:
        case TILDE:
        case PICSRULE:
        case POLICY:
        case EXPLAIN:
        case REJECTURL:
        case ACCEPTURL:
        case REJECTIF:
        case REJECTUNLESS:
        case ACCEPTIF:
        case ACCEPTUNLESS:
        case RULENAME:
        case NAME:
        case DESC:
        case SOURCEURL:
        case SOURCE:
        case TOOL:
        case AUTHOR:
        case LASTMOD:
        case SERVICEINFO:
        case SHORTNAME:
        case BUREAUURL:
        case USEEM:
        case RATFILE:
        case NOBUREAU:
        case OPTEXT:
        case EXT_NAME:
        case REQEXT:
        case PASS:
        case FAIL:
        case URL:
        case AND:
        case OR:
        case OTHERWISE:
        case FTP:
        case HTTP:
        case GOPHER:
        case NNTP:
        case IRC:
        case PROSPERO:
        case TELNET:
        case PATTERNS:
          ;
          break;
        default:
          jj_la1[22] = jj_gen;
          break label_10;
        }
      }
      jj_consume_token(DQUOTE);
             {if (true) return retval;}
      break;
    case SQUOTE:
      jj_consume_token(SQUOTE);
      label_11:
      while (true) {
        temp = notsinglequotechar();
             retval+=temp;
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case LOWALPHA:
        case HIGHALPHA:
        case DIGIT:
        case NATIONAL:
        case ATSIGN:
        case SLASH:
        case L_PAREN:
        case R_PAREN:
        case DQUOTE:
        case DOLLAR:
        case MINUS:
        case USCORE:
        case DOT:
        case PLUS:
        case SEMI:
        case QUES:
        case COLON:
        case AMP:
        case EQUAL:
        case BANG:
        case STAR:
        case COMMA:
        case L_BRAK:
        case R_BRAK:
        case L_ANGLE:
        case R_ANGLE:
        case POUND:
        case PERCENT:
        case L_BRACE:
        case R_BRACE:
        case TILDE:
        case PICSRULE:
        case POLICY:
        case EXPLAIN:
        case REJECTURL:
        case ACCEPTURL:
        case REJECTIF:
        case REJECTUNLESS:
        case ACCEPTIF:
        case ACCEPTUNLESS:
        case RULENAME:
        case NAME:
        case DESC:
        case SOURCEURL:
        case SOURCE:
        case TOOL:
        case AUTHOR:
        case LASTMOD:
        case SERVICEINFO:
        case SHORTNAME:
        case BUREAUURL:
        case USEEM:
        case RATFILE:
        case NOBUREAU:
        case OPTEXT:
        case EXT_NAME:
        case REQEXT:
        case PASS:
        case FAIL:
        case URL:
        case AND:
        case OR:
        case OTHERWISE:
        case FTP:
        case HTTP:
        case GOPHER:
        case NNTP:
        case IRC:
        case PROSPERO:
        case TELNET:
        case PATTERNS:
          ;
          break;
        default:
          jj_la1[23] = jj_gen;
          break label_11;
        }
      }
      jj_consume_token(SQUOTE);
             {if (true) return retval;}
      break;
    default:
      jj_la1[24] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    throw new Error("Missing return statement in function");
  }

  static final public String alphanumstr() throws ParseException {
         String temp = null;
         String retval = new String("");
    label_12:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LOWALPHA:
      case HIGHALPHA:
      case DIGIT:
        temp = alphanum();
             retval+=temp;
        break;
      case DOT:
        jj_consume_token(DOT);
             retval+=".";
        break;
      case PICSRULE:
      case POLICY:
      case EXPLAIN:
      case REJECTURL:
      case ACCEPTURL:
      case REJECTIF:
      case REJECTUNLESS:
      case ACCEPTIF:
      case ACCEPTUNLESS:
      case RULENAME:
      case NAME:
      case DESC:
      case SOURCEURL:
      case SOURCE:
      case TOOL:
      case AUTHOR:
      case LASTMOD:
      case SERVICEINFO:
      case SHORTNAME:
      case BUREAUURL:
      case USEEM:
      case RATFILE:
      case NOBUREAU:
      case OPTEXT:
      case EXT_NAME:
      case REQEXT:
      case PASS:
      case FAIL:
      case URL:
      case AND:
      case OR:
      case OTHERWISE:
      case FTP:
      case HTTP:
      case GOPHER:
      case NNTP:
      case IRC:
      case PROSPERO:
      case TELNET:
      case PATTERNS:
        temp = reservedString();
             retval+=temp;
        break;
      default:
        jj_la1[25] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LOWALPHA:
      case HIGHALPHA:
      case DIGIT:
      case DOT:
      case PICSRULE:
      case POLICY:
      case EXPLAIN:
      case REJECTURL:
      case ACCEPTURL:
      case REJECTIF:
      case REJECTUNLESS:
      case ACCEPTIF:
      case ACCEPTUNLESS:
      case RULENAME:
      case NAME:
      case DESC:
      case SOURCEURL:
      case SOURCE:
      case TOOL:
      case AUTHOR:
      case LASTMOD:
      case SERVICEINFO:
      case SHORTNAME:
      case BUREAUURL:
      case USEEM:
      case RATFILE:
      case NOBUREAU:
      case OPTEXT:
      case EXT_NAME:
      case REQEXT:
      case PASS:
      case FAIL:
      case URL:
      case AND:
      case OR:
      case OTHERWISE:
      case FTP:
      case HTTP:
      case GOPHER:
      case NNTP:
      case IRC:
      case PROSPERO:
      case TELNET:
      case PATTERNS:
        ;
        break;
      default:
        jj_la1[26] = jj_gen;
        break label_12;
      }
    }
             {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  static final public String alphanum() throws ParseException {
         Token thetoken = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case DIGIT:
      thetoken = jj_consume_token(DIGIT);
      break;
    case LOWALPHA:
      thetoken = jj_consume_token(LOWALPHA);
      break;
    case HIGHALPHA:
      thetoken = jj_consume_token(HIGHALPHA);
      break;
    default:
      jj_la1[27] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
             {if (true) return thetoken.image;}
    throw new Error("Missing return statement in function");
  }

  static final public String notdoublequotechar() throws ParseException {
         String retval = null;
         Token thetoken = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case SQUOTE:
      thetoken = jj_consume_token(SQUOTE);
      break;
    case LOWALPHA:
    case HIGHALPHA:
    case DIGIT:
    case NATIONAL:
    case ATSIGN:
    case SLASH:
    case L_PAREN:
    case R_PAREN:
    case DOLLAR:
    case MINUS:
    case USCORE:
    case DOT:
    case PLUS:
    case SEMI:
    case QUES:
    case COLON:
    case AMP:
    case EQUAL:
    case BANG:
    case STAR:
    case COMMA:
    case L_BRAK:
    case R_BRAK:
    case L_ANGLE:
    case R_ANGLE:
    case POUND:
    case PERCENT:
    case L_BRACE:
    case R_BRACE:
    case TILDE:
    case PICSRULE:
    case POLICY:
    case EXPLAIN:
    case REJECTURL:
    case ACCEPTURL:
    case REJECTIF:
    case REJECTUNLESS:
    case ACCEPTIF:
    case ACCEPTUNLESS:
    case RULENAME:
    case NAME:
    case DESC:
    case SOURCEURL:
    case SOURCE:
    case TOOL:
    case AUTHOR:
    case LASTMOD:
    case SERVICEINFO:
    case SHORTNAME:
    case BUREAUURL:
    case USEEM:
    case RATFILE:
    case NOBUREAU:
    case OPTEXT:
    case EXT_NAME:
    case REQEXT:
    case PASS:
    case FAIL:
    case URL:
    case AND:
    case OR:
    case OTHERWISE:
    case FTP:
    case HTTP:
    case GOPHER:
    case NNTP:
    case IRC:
    case PROSPERO:
    case TELNET:
    case PATTERNS:
      retval = notquotechar();
      break;
    default:
      jj_la1[28] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
             if (thetoken!=null) {
                 if (thetoken.specialToken!=null)
                     retval=" "+thetoken.image;
                 else
                     retval=thetoken.image;
             }
             {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  static final public String notsinglequotechar() throws ParseException {
         String retval = null;
         Token thetoken = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case DQUOTE:
      thetoken = jj_consume_token(DQUOTE);
      break;
    case LOWALPHA:
    case HIGHALPHA:
    case DIGIT:
    case NATIONAL:
    case ATSIGN:
    case SLASH:
    case L_PAREN:
    case R_PAREN:
    case DOLLAR:
    case MINUS:
    case USCORE:
    case DOT:
    case PLUS:
    case SEMI:
    case QUES:
    case COLON:
    case AMP:
    case EQUAL:
    case BANG:
    case STAR:
    case COMMA:
    case L_BRAK:
    case R_BRAK:
    case L_ANGLE:
    case R_ANGLE:
    case POUND:
    case PERCENT:
    case L_BRACE:
    case R_BRACE:
    case TILDE:
    case PICSRULE:
    case POLICY:
    case EXPLAIN:
    case REJECTURL:
    case ACCEPTURL:
    case REJECTIF:
    case REJECTUNLESS:
    case ACCEPTIF:
    case ACCEPTUNLESS:
    case RULENAME:
    case NAME:
    case DESC:
    case SOURCEURL:
    case SOURCE:
    case TOOL:
    case AUTHOR:
    case LASTMOD:
    case SERVICEINFO:
    case SHORTNAME:
    case BUREAUURL:
    case USEEM:
    case RATFILE:
    case NOBUREAU:
    case OPTEXT:
    case EXT_NAME:
    case REQEXT:
    case PASS:
    case FAIL:
    case URL:
    case AND:
    case OR:
    case OTHERWISE:
    case FTP:
    case HTTP:
    case GOPHER:
    case NNTP:
    case IRC:
    case PROSPERO:
    case TELNET:
    case PATTERNS:
      retval = notquotechar();
      break;
    default:
      jj_la1[29] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
             if (thetoken!=null) {
                 if (thetoken.specialToken!=null)
                     retval=" "+thetoken.image;
                 else
                     retval=thetoken.image;
             }
             {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  static final public String notquotechar() throws ParseException {
         String retval = null;
         Token thetoken = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case LOWALPHA:
    case HIGHALPHA:
    case DIGIT:
    case NATIONAL:
    case ATSIGN:
    case SLASH:
    case L_PAREN:
    case R_PAREN:
    case DOLLAR:
    case MINUS:
    case USCORE:
    case DOT:
    case PLUS:
    case SEMI:
    case QUES:
    case COLON:
    case AMP:
    case EQUAL:
    case BANG:
    case STAR:
    case COMMA:
    case L_BRAK:
    case R_BRAK:
    case L_ANGLE:
    case R_ANGLE:
    case POUND:
    case L_BRACE:
    case R_BRACE:
    case TILDE:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LOWALPHA:
        thetoken = jj_consume_token(LOWALPHA);
        break;
      case HIGHALPHA:
        thetoken = jj_consume_token(HIGHALPHA);
        break;
      case DIGIT:
        thetoken = jj_consume_token(DIGIT);
        break;
      case NATIONAL:
        thetoken = jj_consume_token(NATIONAL);
        break;
      case TILDE:
        thetoken = jj_consume_token(TILDE);
        break;
      case L_BRACE:
        thetoken = jj_consume_token(L_BRACE);
        break;
      case R_BRACE:
        thetoken = jj_consume_token(R_BRACE);
        break;
      case ATSIGN:
        thetoken = jj_consume_token(ATSIGN);
        break;
      case SLASH:
        thetoken = jj_consume_token(SLASH);
        break;
      case L_PAREN:
        thetoken = jj_consume_token(L_PAREN);
        break;
      case R_PAREN:
        thetoken = jj_consume_token(R_PAREN);
        break;
      case DOLLAR:
        thetoken = jj_consume_token(DOLLAR);
        break;
      case MINUS:
        thetoken = jj_consume_token(MINUS);
        break;
      case USCORE:
        thetoken = jj_consume_token(USCORE);
        break;
      case DOT:
        thetoken = jj_consume_token(DOT);
        break;
      case PLUS:
        thetoken = jj_consume_token(PLUS);
        break;
      case SEMI:
        thetoken = jj_consume_token(SEMI);
        break;
      case QUES:
        thetoken = jj_consume_token(QUES);
        break;
      case COLON:
        thetoken = jj_consume_token(COLON);
        break;
      case AMP:
        thetoken = jj_consume_token(AMP);
        break;
      case EQUAL:
        thetoken = jj_consume_token(EQUAL);
        break;
      case BANG:
        thetoken = jj_consume_token(BANG);
        break;
      case STAR:
        thetoken = jj_consume_token(STAR);
        break;
      case COMMA:
        thetoken = jj_consume_token(COMMA);
        break;
      case L_BRAK:
        thetoken = jj_consume_token(L_BRAK);
        break;
      case R_BRAK:
        thetoken = jj_consume_token(R_BRAK);
        break;
      case L_ANGLE:
        thetoken = jj_consume_token(L_ANGLE);
        break;
      case R_ANGLE:
        thetoken = jj_consume_token(R_ANGLE);
        break;
      case POUND:
        thetoken = jj_consume_token(POUND);
        break;
      default:
        jj_la1[30] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
             if (thetoken!=null) {
                 if (thetoken.specialToken!=null)
                     retval=" "+thetoken.image;
                 else
                     retval=thetoken.image;
             }
             {if (true) return retval;}
      break;
    case PERCENT:
    case PICSRULE:
    case POLICY:
    case EXPLAIN:
    case REJECTURL:
    case ACCEPTURL:
    case REJECTIF:
    case REJECTUNLESS:
    case ACCEPTIF:
    case ACCEPTUNLESS:
    case RULENAME:
    case NAME:
    case DESC:
    case SOURCEURL:
    case SOURCE:
    case TOOL:
    case AUTHOR:
    case LASTMOD:
    case SERVICEINFO:
    case SHORTNAME:
    case BUREAUURL:
    case USEEM:
    case RATFILE:
    case NOBUREAU:
    case OPTEXT:
    case EXT_NAME:
    case REQEXT:
    case PASS:
    case FAIL:
    case URL:
    case AND:
    case OR:
    case OTHERWISE:
    case FTP:
    case HTTP:
    case GOPHER:
    case NNTP:
    case IRC:
    case PROSPERO:
    case TELNET:
    case PATTERNS:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case PICSRULE:
      case POLICY:
      case EXPLAIN:
      case REJECTURL:
      case ACCEPTURL:
      case REJECTIF:
      case REJECTUNLESS:
      case ACCEPTIF:
      case ACCEPTUNLESS:
      case RULENAME:
      case NAME:
      case DESC:
      case SOURCEURL:
      case SOURCE:
      case TOOL:
      case AUTHOR:
      case LASTMOD:
      case SERVICEINFO:
      case SHORTNAME:
      case BUREAUURL:
      case USEEM:
      case RATFILE:
      case NOBUREAU:
      case OPTEXT:
      case EXT_NAME:
      case REQEXT:
      case PASS:
      case FAIL:
      case URL:
      case AND:
      case OR:
      case OTHERWISE:
      case FTP:
      case HTTP:
      case GOPHER:
      case NNTP:
      case IRC:
      case PROSPERO:
      case TELNET:
      case PATTERNS:
        retval = reservedString();
        break;
      case PERCENT:
        retval = escape();
        break;
      default:
        jj_la1[31] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
             {if (true) return retval;}
      break;
    default:
      jj_la1[32] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    throw new Error("Missing return statement in function");
  }

  static final public String userchar() throws ParseException {
         String retval = null;
         Token thetoken = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case LOWALPHA:
    case HIGHALPHA:
    case DIGIT:
    case NATIONAL:
    case L_PAREN:
    case R_PAREN:
    case DOLLAR:
    case MINUS:
    case USCORE:
    case DOT:
    case PLUS:
    case SEMI:
    case QUES:
    case AMP:
    case EQUAL:
    case BANG:
    case STAR:
    case COMMA:
    case L_BRAK:
    case R_BRAK:
    case L_ANGLE:
    case R_ANGLE:
    case POUND:
    case PERCENT:
    case L_BRACE:
    case R_BRACE:
    case TILDE:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LOWALPHA:
        thetoken = jj_consume_token(LOWALPHA);
        break;
      case HIGHALPHA:
        thetoken = jj_consume_token(HIGHALPHA);
        break;
      case DIGIT:
        thetoken = jj_consume_token(DIGIT);
        break;
      case NATIONAL:
        thetoken = jj_consume_token(NATIONAL);
        break;
      case TILDE:
        thetoken = jj_consume_token(TILDE);
        break;
      case L_BRACE:
        thetoken = jj_consume_token(L_BRACE);
        break;
      case R_BRACE:
        thetoken = jj_consume_token(R_BRACE);
        break;
      case L_PAREN:
        thetoken = jj_consume_token(L_PAREN);
        break;
      case R_PAREN:
        thetoken = jj_consume_token(R_PAREN);
        break;
      case DOLLAR:
        thetoken = jj_consume_token(DOLLAR);
        break;
      case MINUS:
        thetoken = jj_consume_token(MINUS);
        break;
      case USCORE:
        thetoken = jj_consume_token(USCORE);
        break;
      case DOT:
        thetoken = jj_consume_token(DOT);
        break;
      case PLUS:
        thetoken = jj_consume_token(PLUS);
        break;
      case SEMI:
        thetoken = jj_consume_token(SEMI);
        break;
      case QUES:
        thetoken = jj_consume_token(QUES);
        break;
      case AMP:
        thetoken = jj_consume_token(AMP);
        break;
      case EQUAL:
        thetoken = jj_consume_token(EQUAL);
        break;
      case BANG:
        thetoken = jj_consume_token(BANG);
        break;
      case STAR:
        thetoken = jj_consume_token(STAR);
        break;
      case COMMA:
        thetoken = jj_consume_token(COMMA);
        break;
      case L_BRAK:
        thetoken = jj_consume_token(L_BRAK);
        break;
      case R_BRAK:
        thetoken = jj_consume_token(R_BRAK);
        break;
      case L_ANGLE:
        thetoken = jj_consume_token(L_ANGLE);
        break;
      case R_ANGLE:
        thetoken = jj_consume_token(R_ANGLE);
        break;
      case POUND:
        thetoken = jj_consume_token(POUND);
        break;
      case PERCENT:
        thetoken = jj_consume_token(PERCENT);
        break;
      default:
        jj_la1[33] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
             if (thetoken!=null) {
                 if (thetoken.specialToken!=null)
                     retval=" "+thetoken.image;
                 else
                     retval=thetoken.image;
             }
             {if (true) return retval;}
      break;
    case PICSRULE:
    case POLICY:
    case EXPLAIN:
    case REJECTURL:
    case ACCEPTURL:
    case REJECTIF:
    case REJECTUNLESS:
    case ACCEPTIF:
    case ACCEPTUNLESS:
    case RULENAME:
    case NAME:
    case DESC:
    case SOURCEURL:
    case SOURCE:
    case TOOL:
    case AUTHOR:
    case LASTMOD:
    case SERVICEINFO:
    case SHORTNAME:
    case BUREAUURL:
    case USEEM:
    case RATFILE:
    case NOBUREAU:
    case OPTEXT:
    case EXT_NAME:
    case REQEXT:
    case PASS:
    case FAIL:
    case URL:
    case AND:
    case OR:
    case OTHERWISE:
    case FTP:
    case HTTP:
    case GOPHER:
    case NNTP:
    case IRC:
    case PROSPERO:
    case TELNET:
    case PATTERNS:
      retval = reservedString();
             {if (true) return retval;}
      break;
    default:
      jj_la1[34] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    throw new Error("Missing return statement in function");
  }

  static final public String servicenamechars() throws ParseException {
         String retval = null;
         Token thetoken = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case LOWALPHA:
    case HIGHALPHA:
    case DIGIT:
    case NATIONAL:
    case ATSIGN:
    case SLASH:
    case DOLLAR:
    case MINUS:
    case USCORE:
    case PLUS:
    case SEMI:
    case QUES:
    case COLON:
    case AMP:
    case EQUAL:
    case BANG:
    case STAR:
    case COMMA:
    case L_BRAK:
    case R_BRAK:
    case POUND:
    case PERCENT:
    case L_BRACE:
    case R_BRACE:
    case TILDE:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LOWALPHA:
        thetoken = jj_consume_token(LOWALPHA);
        break;
      case HIGHALPHA:
        thetoken = jj_consume_token(HIGHALPHA);
        break;
      case DIGIT:
        thetoken = jj_consume_token(DIGIT);
        break;
      case NATIONAL:
        thetoken = jj_consume_token(NATIONAL);
        break;
      case TILDE:
        thetoken = jj_consume_token(TILDE);
        break;
      case L_BRACE:
        thetoken = jj_consume_token(L_BRACE);
        break;
      case R_BRACE:
        thetoken = jj_consume_token(R_BRACE);
        break;
      case ATSIGN:
        thetoken = jj_consume_token(ATSIGN);
        break;
      case SLASH:
        thetoken = jj_consume_token(SLASH);
        break;
      case DOLLAR:
        thetoken = jj_consume_token(DOLLAR);
        break;
      case MINUS:
        thetoken = jj_consume_token(MINUS);
        break;
      case USCORE:
        thetoken = jj_consume_token(USCORE);
        break;
      case PLUS:
        thetoken = jj_consume_token(PLUS);
        break;
      case SEMI:
        thetoken = jj_consume_token(SEMI);
        break;
      case QUES:
        thetoken = jj_consume_token(QUES);
        break;
      case COLON:
        thetoken = jj_consume_token(COLON);
        break;
      case AMP:
        thetoken = jj_consume_token(AMP);
        break;
      case EQUAL:
        thetoken = jj_consume_token(EQUAL);
        break;
      case BANG:
        thetoken = jj_consume_token(BANG);
        break;
      case STAR:
        thetoken = jj_consume_token(STAR);
        break;
      case COMMA:
        thetoken = jj_consume_token(COMMA);
        break;
      case L_BRAK:
        thetoken = jj_consume_token(L_BRAK);
        break;
      case R_BRAK:
        thetoken = jj_consume_token(R_BRAK);
        break;
      case POUND:
        thetoken = jj_consume_token(POUND);
        break;
      case PERCENT:
        thetoken = jj_consume_token(PERCENT);
        break;
      default:
        jj_la1[35] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
             if (thetoken!=null) {
                 if (thetoken.specialToken!=null)
                     retval=" "+thetoken.image;
                 else
                     retval=thetoken.image;
             }
             {if (true) return retval;}
      break;
    case PICSRULE:
    case POLICY:
    case EXPLAIN:
    case REJECTURL:
    case ACCEPTURL:
    case REJECTIF:
    case REJECTUNLESS:
    case ACCEPTIF:
    case ACCEPTUNLESS:
    case RULENAME:
    case NAME:
    case DESC:
    case SOURCEURL:
    case SOURCE:
    case TOOL:
    case AUTHOR:
    case LASTMOD:
    case SERVICEINFO:
    case SHORTNAME:
    case BUREAUURL:
    case USEEM:
    case RATFILE:
    case NOBUREAU:
    case OPTEXT:
    case EXT_NAME:
    case REQEXT:
    case PASS:
    case FAIL:
    case URL:
    case AND:
    case OR:
    case OTHERWISE:
    case FTP:
    case HTTP:
    case GOPHER:
    case NNTP:
    case IRC:
    case PROSPERO:
    case TELNET:
    case PATTERNS:
      retval = reservedString();
             {if (true) return retval;}
      break;
    default:
      jj_la1[36] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    throw new Error("Missing return statement in function");
  }

  static final public String quotedURL() throws ParseException {
         String retval = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case DQUOTE:
      jj_consume_token(DQUOTE);
      retval = URL();
      jj_consume_token(DQUOTE);
             {if (true) return retval;}
      break;
    case SQUOTE:
      jj_consume_token(SQUOTE);
      retval = URL();
      jj_consume_token(SQUOTE);
             {if (true) return retval;}
      break;
    default:
      jj_la1[37] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    throw new Error("Missing return statement in function");
  }

  static final public String URL() throws ParseException {
         String retval = new String("");
         String temp = null;
    label_13:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case SLASH:
        jj_consume_token(SLASH);
             retval+="/";
        break;
      case LOWALPHA:
      case HIGHALPHA:
      case DIGIT:
      case NATIONAL:
      case ATSIGN:
      case L_PAREN:
      case R_PAREN:
      case DOLLAR:
      case MINUS:
      case USCORE:
      case DOT:
      case SEMI:
      case QUES:
      case COLON:
      case AMP:
      case EQUAL:
      case BANG:
      case STAR:
      case COMMA:
      case POUND:
      case PERCENT:
      case TILDE:
      case PICSRULE:
      case POLICY:
      case EXPLAIN:
      case REJECTURL:
      case ACCEPTURL:
      case REJECTIF:
      case REJECTUNLESS:
      case ACCEPTIF:
      case ACCEPTUNLESS:
      case RULENAME:
      case NAME:
      case DESC:
      case SOURCEURL:
      case SOURCE:
      case TOOL:
      case AUTHOR:
      case LASTMOD:
      case SERVICEINFO:
      case SHORTNAME:
      case BUREAUURL:
      case USEEM:
      case RATFILE:
      case NOBUREAU:
      case OPTEXT:
      case EXT_NAME:
      case REQEXT:
      case PASS:
      case FAIL:
      case URL:
      case AND:
      case OR:
      case OTHERWISE:
      case FTP:
      case HTTP:
      case GOPHER:
      case NNTP:
      case IRC:
      case PROSPERO:
      case TELNET:
      case PATTERNS:
        temp = urlchar();
             retval+=temp;
        break;
      default:
        jj_la1[38] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LOWALPHA:
      case HIGHALPHA:
      case DIGIT:
      case NATIONAL:
      case ATSIGN:
      case SLASH:
      case L_PAREN:
      case R_PAREN:
      case DOLLAR:
      case MINUS:
      case USCORE:
      case DOT:
      case SEMI:
      case QUES:
      case COLON:
      case AMP:
      case EQUAL:
      case BANG:
      case STAR:
      case COMMA:
      case POUND:
      case PERCENT:
      case TILDE:
      case PICSRULE:
      case POLICY:
      case EXPLAIN:
      case REJECTURL:
      case ACCEPTURL:
      case REJECTIF:
      case REJECTUNLESS:
      case ACCEPTIF:
      case ACCEPTUNLESS:
      case RULENAME:
      case NAME:
      case DESC:
      case SOURCEURL:
      case SOURCE:
      case TOOL:
      case AUTHOR:
      case LASTMOD:
      case SERVICEINFO:
      case SHORTNAME:
      case BUREAUURL:
      case USEEM:
      case RATFILE:
      case NOBUREAU:
      case OPTEXT:
      case EXT_NAME:
      case REQEXT:
      case PASS:
      case FAIL:
      case URL:
      case AND:
      case OR:
      case OTHERWISE:
      case FTP:
      case HTTP:
      case GOPHER:
      case NNTP:
      case IRC:
      case PROSPERO:
      case TELNET:
      case PATTERNS:
        ;
        break;
      default:
        jj_la1[39] = jj_gen;
        break label_13;
      }
    }
             {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  static final public String urlchar() throws ParseException {
         Token thetoken = null;
         String retval = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case LOWALPHA:
      thetoken = jj_consume_token(LOWALPHA);
      break;
    case HIGHALPHA:
      thetoken = jj_consume_token(HIGHALPHA);
      break;
    case DIGIT:
      thetoken = jj_consume_token(DIGIT);
      break;
    case MINUS:
      thetoken = jj_consume_token(MINUS);
      break;
    case PERCENT:
      retval = urlescape();
      break;
    case ATSIGN:
      thetoken = jj_consume_token(ATSIGN);
      break;
    case SEMI:
      thetoken = jj_consume_token(SEMI);
      break;
    case QUES:
      thetoken = jj_consume_token(QUES);
      break;
    case COLON:
      thetoken = jj_consume_token(COLON);
      break;
    case AMP:
      thetoken = jj_consume_token(AMP);
      break;
    case EQUAL:
      thetoken = jj_consume_token(EQUAL);
      break;
    case DOLLAR:
      thetoken = jj_consume_token(DOLLAR);
      break;
    case USCORE:
      thetoken = jj_consume_token(USCORE);
      break;
    case DOT:
      thetoken = jj_consume_token(DOT);
      break;
    case POUND:
      thetoken = jj_consume_token(POUND);
      break;
    case BANG:
      thetoken = jj_consume_token(BANG);
      break;
    case STAR:
      thetoken = jj_consume_token(STAR);
      break;
    case COMMA:
      thetoken = jj_consume_token(COMMA);
      break;
    case TILDE:
      thetoken = jj_consume_token(TILDE);
      break;
    case NATIONAL:
      thetoken = jj_consume_token(NATIONAL);
             if (thetoken.image.equals("|"))
                 {if (true) throw generateParseException();}
             else if (thetoken.image.equals("\\"))
                 {if (true) throw generateParseException();}
             else if (thetoken.image.equals("^"))
                 {if (true) throw generateParseException();}
             else if (thetoken.image.equals("`"))
                 {if (true) throw generateParseException();}
      break;
    case L_PAREN:
      thetoken = jj_consume_token(L_PAREN);
      break;
    case R_PAREN:
      thetoken = jj_consume_token(R_PAREN);
      break;
    case PICSRULE:
    case POLICY:
    case EXPLAIN:
    case REJECTURL:
    case ACCEPTURL:
    case REJECTIF:
    case REJECTUNLESS:
    case ACCEPTIF:
    case ACCEPTUNLESS:
    case RULENAME:
    case NAME:
    case DESC:
    case SOURCEURL:
    case SOURCE:
    case TOOL:
    case AUTHOR:
    case LASTMOD:
    case SERVICEINFO:
    case SHORTNAME:
    case BUREAUURL:
    case USEEM:
    case RATFILE:
    case NOBUREAU:
    case OPTEXT:
    case EXT_NAME:
    case REQEXT:
    case PASS:
    case FAIL:
    case URL:
    case AND:
    case OR:
    case OTHERWISE:
    case FTP:
    case HTTP:
    case GOPHER:
    case NNTP:
    case IRC:
    case PROSPERO:
    case TELNET:
    case PATTERNS:
      retval = reservedString();
      break;
    default:
      jj_la1[40] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
             if (thetoken!=null) {
                 if (thetoken.specialToken!=null)
                     retval=" "+thetoken.image;
                 else
                     retval=thetoken.image;
             }
             {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  static final public String escape() throws ParseException {
         String retval = new String("");
         String temp = null;
         Token thetoken = null;
    thetoken = jj_consume_token(PERCENT);
             if (thetoken.specialToken!=null)
                 retval+=" %";
             else
                 retval+="%";
    temp = picsruleshex1();
             retval+=temp;
    temp = picsruleshex2();
             retval+=temp;
             {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  static final public String urlescape() throws ParseException {
         String retval = new String("");
         String temp = null;
         Token thetoken = null;
    thetoken = jj_consume_token(PERCENT);
             if (thetoken.specialToken!=null)
                 retval+=" %";
             else
                 retval+="%";
    temp = hex();
             retval+=temp;
    temp = hex();
             retval+=temp;
             {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  static final public String hex() throws ParseException {
         Token hextoken = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case DIGIT:
      hextoken = jj_consume_token(DIGIT);
      break;
    case LOWALPHA:
      hextoken = jj_consume_token(LOWALPHA);
             char testchar = hextoken.image.charAt(0);
             if ((testchar>'f') || (testchar<'a'))
                 {if (true) throw generateParseException();}
      break;
    case HIGHALPHA:
      hextoken = jj_consume_token(HIGHALPHA);
             char testchar2 = hextoken.image.charAt(0);
             if ((testchar2>'F') || (testchar2<'A'))
                 {if (true) throw generateParseException();}
      break;
    default:
      jj_la1[41] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
             {if (true) return hextoken.image;}
    throw new Error("Missing return statement in function");
  }

  static final public String picsruleshex1() throws ParseException {
         Token hextoken = null;
    hextoken = jj_consume_token(DIGIT);
             char testchar = hextoken.image.charAt(0);
             if (testchar!='2')
                 {if (true) throw generateParseException();}
             {if (true) return hextoken.image;}
    throw new Error("Missing return statement in function");
  }

  static final public String picsruleshex2() throws ParseException {
         Token hextoken = null;
    hextoken = jj_consume_token(DIGIT);
             char testchar = hextoken.image.charAt(0);
             if ((testchar!='2') && (testchar!='7') && (testchar!='5'))
                 {if (true) throw generateParseException();}
             {if (true) return hextoken.image;}
    throw new Error("Missing return statement in function");
  }

  static final public String quoted_address() throws ParseException {
         String retval = new String("");
         String temp = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case DQUOTE:
      jj_consume_token(DQUOTE);
      label_14:
      while (true) {
        temp = notdoublequotechar();
             retval+=temp;
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case LOWALPHA:
        case HIGHALPHA:
        case DIGIT:
        case NATIONAL:
        case ATSIGN:
        case SLASH:
        case L_PAREN:
        case R_PAREN:
        case DOLLAR:
        case MINUS:
        case USCORE:
        case DOT:
        case PLUS:
        case SEMI:
        case QUES:
        case COLON:
        case AMP:
        case EQUAL:
        case BANG:
        case STAR:
        case SQUOTE:
        case COMMA:
        case L_BRAK:
        case R_BRAK:
        case L_ANGLE:
        case R_ANGLE:
        case POUND:
        case PERCENT:
        case L_BRACE:
        case R_BRACE:
        case TILDE:
        case PICSRULE:
        case POLICY:
        case EXPLAIN:
        case REJECTURL:
        case ACCEPTURL:
        case REJECTIF:
        case REJECTUNLESS:
        case ACCEPTIF:
        case ACCEPTUNLESS:
        case RULENAME:
        case NAME:
        case DESC:
        case SOURCEURL:
        case SOURCE:
        case TOOL:
        case AUTHOR:
        case LASTMOD:
        case SERVICEINFO:
        case SHORTNAME:
        case BUREAUURL:
        case USEEM:
        case RATFILE:
        case NOBUREAU:
        case OPTEXT:
        case EXT_NAME:
        case REQEXT:
        case PASS:
        case FAIL:
        case URL:
        case AND:
        case OR:
        case OTHERWISE:
        case FTP:
        case HTTP:
        case GOPHER:
        case NNTP:
        case IRC:
        case PROSPERO:
        case TELNET:
        case PATTERNS:
          ;
          break;
        default:
          jj_la1[42] = jj_gen;
          break label_14;
        }
      }
      jj_consume_token(DQUOTE);
             {if (true) return retval;}
      break;
    case SQUOTE:
      jj_consume_token(SQUOTE);
      label_15:
      while (true) {
        temp = notsinglequotechar();
             retval+=temp;
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case LOWALPHA:
        case HIGHALPHA:
        case DIGIT:
        case NATIONAL:
        case ATSIGN:
        case SLASH:
        case L_PAREN:
        case R_PAREN:
        case DQUOTE:
        case DOLLAR:
        case MINUS:
        case USCORE:
        case DOT:
        case PLUS:
        case SEMI:
        case QUES:
        case COLON:
        case AMP:
        case EQUAL:
        case BANG:
        case STAR:
        case COMMA:
        case L_BRAK:
        case R_BRAK:
        case L_ANGLE:
        case R_ANGLE:
        case POUND:
        case PERCENT:
        case L_BRACE:
        case R_BRACE:
        case TILDE:
        case PICSRULE:
        case POLICY:
        case EXPLAIN:
        case REJECTURL:
        case ACCEPTURL:
        case REJECTIF:
        case REJECTUNLESS:
        case ACCEPTIF:
        case ACCEPTUNLESS:
        case RULENAME:
        case NAME:
        case DESC:
        case SOURCEURL:
        case SOURCE:
        case TOOL:
        case AUTHOR:
        case LASTMOD:
        case SERVICEINFO:
        case SHORTNAME:
        case BUREAUURL:
        case USEEM:
        case RATFILE:
        case NOBUREAU:
        case OPTEXT:
        case EXT_NAME:
        case REQEXT:
        case PASS:
        case FAIL:
        case URL:
        case AND:
        case OR:
        case OTHERWISE:
        case FTP:
        case HTTP:
        case GOPHER:
        case NNTP:
        case IRC:
        case PROSPERO:
        case TELNET:
        case PATTERNS:
          ;
          break;
        default:
          jj_la1[43] = jj_gen;
          break label_15;
        }
      }
      jj_consume_token(SQUOTE);
             {if (true) return retval;}
      break;
    default:
      jj_la1[44] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    throw new Error("Missing return statement in function");
  }

  static final public String pass_fail() throws ParseException {
         Token thetoken = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case DQUOTE:
      jj_consume_token(DQUOTE);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case PASS:
        thetoken = jj_consume_token(PASS);
        break;
      case FAIL:
        thetoken = jj_consume_token(FAIL);
        break;
      default:
        jj_la1[45] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      jj_consume_token(DQUOTE);
             {if (true) return thetoken.image;}
      break;
    case SQUOTE:
      jj_consume_token(SQUOTE);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case PASS:
        thetoken = jj_consume_token(PASS);
        break;
      case FAIL:
        thetoken = jj_consume_token(FAIL);
        break;
      default:
        jj_la1[46] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      jj_consume_token(SQUOTE);
             {if (true) return thetoken.image;}
      break;
    default:
      jj_la1[47] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    throw new Error("Missing return statement in function");
  }

  static final public void comment() throws ParseException {
    jj_consume_token(L_BRACE);
    label_16:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LOWALPHA:
      case HIGHALPHA:
      case DIGIT:
      case NATIONAL:
      case ATSIGN:
      case SLASH:
      case L_PAREN:
      case R_PAREN:
      case DQUOTE:
      case DOLLAR:
      case MINUS:
      case USCORE:
      case DOT:
      case PLUS:
      case SEMI:
      case QUES:
      case COLON:
      case AMP:
      case EQUAL:
      case BANG:
      case STAR:
      case SQUOTE:
      case COMMA:
      case L_BRAK:
      case R_BRAK:
      case L_ANGLE:
      case R_ANGLE:
      case POUND:
      case PERCENT:
      case L_BRACE:
      case TILDE:
      case PICSRULE:
      case POLICY:
      case EXPLAIN:
      case REJECTURL:
      case ACCEPTURL:
      case REJECTIF:
      case REJECTUNLESS:
      case ACCEPTIF:
      case ACCEPTUNLESS:
      case RULENAME:
      case NAME:
      case DESC:
      case SOURCEURL:
      case SOURCE:
      case TOOL:
      case AUTHOR:
      case LASTMOD:
      case SERVICEINFO:
      case SHORTNAME:
      case BUREAUURL:
      case USEEM:
      case RATFILE:
      case NOBUREAU:
      case OPTEXT:
      case EXT_NAME:
      case REQEXT:
      case PASS:
      case FAIL:
      case URL:
      case AND:
      case OR:
      case OTHERWISE:
      case FTP:
      case HTTP:
      case GOPHER:
      case NNTP:
      case IRC:
      case PROSPERO:
      case TELNET:
      case PATTERNS:
        ;
        break;
      default:
        jj_la1[48] = jj_gen;
        break label_16;
      }
      comment_text();
    }
    jj_consume_token(R_BRACE);
  }

  static final public void comment_text() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case LOWALPHA:
      jj_consume_token(LOWALPHA);
      break;
    case HIGHALPHA:
      jj_consume_token(HIGHALPHA);
      break;
    case DIGIT:
      jj_consume_token(DIGIT);
      break;
    case NATIONAL:
      jj_consume_token(NATIONAL);
      break;
    case TILDE:
      jj_consume_token(TILDE);
      break;
    case ATSIGN:
      jj_consume_token(ATSIGN);
      break;
    case SLASH:
      jj_consume_token(SLASH);
      break;
    case L_PAREN:
      jj_consume_token(L_PAREN);
      break;
    case R_PAREN:
      jj_consume_token(R_PAREN);
      break;
    case DQUOTE:
      jj_consume_token(DQUOTE);
      break;
    case DOLLAR:
      jj_consume_token(DOLLAR);
      break;
    case MINUS:
      jj_consume_token(MINUS);
      break;
    case USCORE:
      jj_consume_token(USCORE);
      break;
    case DOT:
      jj_consume_token(DOT);
      break;
    case PLUS:
      jj_consume_token(PLUS);
      break;
    case SEMI:
      jj_consume_token(SEMI);
      break;
    case QUES:
      jj_consume_token(QUES);
      break;
    case COLON:
      jj_consume_token(COLON);
      break;
    case AMP:
      jj_consume_token(AMP);
      break;
    case EQUAL:
      jj_consume_token(EQUAL);
      break;
    case BANG:
      jj_consume_token(BANG);
      break;
    case STAR:
      jj_consume_token(STAR);
      break;
    case SQUOTE:
      jj_consume_token(SQUOTE);
      break;
    case COMMA:
      jj_consume_token(COMMA);
      break;
    case L_BRAK:
      jj_consume_token(L_BRAK);
      break;
    case R_BRAK:
      jj_consume_token(R_BRAK);
      break;
    case L_ANGLE:
      jj_consume_token(L_ANGLE);
      break;
    case R_ANGLE:
      jj_consume_token(R_ANGLE);
      break;
    case POUND:
      jj_consume_token(POUND);
      break;
    case PERCENT:
      jj_consume_token(PERCENT);
      break;
    case L_BRACE:
      jj_consume_token(L_BRACE);
      break;
    case PICSRULE:
    case POLICY:
    case EXPLAIN:
    case REJECTURL:
    case ACCEPTURL:
    case REJECTIF:
    case REJECTUNLESS:
    case ACCEPTIF:
    case ACCEPTUNLESS:
    case RULENAME:
    case NAME:
    case DESC:
    case SOURCEURL:
    case SOURCE:
    case TOOL:
    case AUTHOR:
    case LASTMOD:
    case SERVICEINFO:
    case SHORTNAME:
    case BUREAUURL:
    case USEEM:
    case RATFILE:
    case NOBUREAU:
    case OPTEXT:
    case EXT_NAME:
    case REQEXT:
    case PASS:
    case FAIL:
    case URL:
    case AND:
    case OR:
    case OTHERWISE:
    case FTP:
    case HTTP:
    case GOPHER:
    case NNTP:
    case IRC:
    case PROSPERO:
    case TELNET:
    case PATTERNS:
      reservedString();
      break;
    default:
      jj_la1[49] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
  }

  static final public String URL_strings() throws ParseException {
         String retval = new String("");
         String temp = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case DQUOTE:
      temp = URL_string();
             retval+=temp;
             {if (true) return retval;}
      break;
    case L_PAREN:
      jj_consume_token(L_PAREN);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case PATTERNS:
        jj_consume_token(PATTERNS);
        break;
      default:
        jj_la1[50] = jj_gen;
        ;
      }
             retval+="( patterns ";
      label_17:
      while (true) {
        temp = URL_string();
             retval+=temp;
             retval+=" ";
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case DQUOTE:
          ;
          break;
        default:
          jj_la1[51] = jj_gen;
          break label_17;
        }
      }
      jj_consume_token(R_PAREN);
             retval+=")";
             {if (true) return retval;}
      break;
    default:
      jj_la1[52] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    throw new Error("Missing return statement in function");
  }

  static final public String URL_string() throws ParseException {
         String retval = new String("");
         String temp = null;
    jj_consume_token(DQUOTE);
             retval+="\"";
    temp = URLpattern();
             retval+=temp;
    jj_consume_token(DQUOTE);
             retval+="\"";
             {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  static final public String urlnotquotechar() throws ParseException {
         String retval = null;
         Token thetoken = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case LOWALPHA:
    case HIGHALPHA:
    case DIGIT:
    case NATIONAL:
    case ATSIGN:
    case SLASH:
    case L_PAREN:
    case R_PAREN:
    case DOLLAR:
    case MINUS:
    case USCORE:
    case DOT:
    case PLUS:
    case SEMI:
    case QUES:
    case COLON:
    case AMP:
    case EQUAL:
    case BANG:
    case STAR:
    case COMMA:
    case L_BRAK:
    case R_BRAK:
    case L_ANGLE:
    case R_ANGLE:
    case POUND:
    case L_BRACE:
    case R_BRACE:
    case TILDE:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LOWALPHA:
        thetoken = jj_consume_token(LOWALPHA);
        break;
      case HIGHALPHA:
        thetoken = jj_consume_token(HIGHALPHA);
        break;
      case DIGIT:
        thetoken = jj_consume_token(DIGIT);
        break;
      case NATIONAL:
        thetoken = jj_consume_token(NATIONAL);
        break;
      case TILDE:
        thetoken = jj_consume_token(TILDE);
        break;
      case L_BRACE:
        thetoken = jj_consume_token(L_BRACE);
        break;
      case R_BRACE:
        thetoken = jj_consume_token(R_BRACE);
        break;
      case ATSIGN:
        thetoken = jj_consume_token(ATSIGN);
        break;
      case SLASH:
        thetoken = jj_consume_token(SLASH);
        break;
      case L_PAREN:
        thetoken = jj_consume_token(L_PAREN);
        break;
      case R_PAREN:
        thetoken = jj_consume_token(R_PAREN);
        break;
      case DOLLAR:
        thetoken = jj_consume_token(DOLLAR);
        break;
      case MINUS:
        thetoken = jj_consume_token(MINUS);
        break;
      case USCORE:
        thetoken = jj_consume_token(USCORE);
        break;
      case DOT:
        thetoken = jj_consume_token(DOT);
        break;
      case PLUS:
        thetoken = jj_consume_token(PLUS);
        break;
      case SEMI:
        thetoken = jj_consume_token(SEMI);
        break;
      case QUES:
        thetoken = jj_consume_token(QUES);
        break;
      case COLON:
        thetoken = jj_consume_token(COLON);
        break;
      case AMP:
        thetoken = jj_consume_token(AMP);
        break;
      case EQUAL:
        thetoken = jj_consume_token(EQUAL);
        break;
      case BANG:
        thetoken = jj_consume_token(BANG);
        break;
      case STAR:
        thetoken = jj_consume_token(STAR);
        break;
      case COMMA:
        thetoken = jj_consume_token(COMMA);
        break;
      case L_BRAK:
        thetoken = jj_consume_token(L_BRAK);
        break;
      case R_BRAK:
        thetoken = jj_consume_token(R_BRAK);
        break;
      case L_ANGLE:
        thetoken = jj_consume_token(L_ANGLE);
        break;
      case R_ANGLE:
        thetoken = jj_consume_token(R_ANGLE);
        break;
      case POUND:
        thetoken = jj_consume_token(POUND);
        break;
      default:
        jj_la1[53] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
             if (thetoken!=null) {
                 if (thetoken.specialToken!=null)
                     retval=" "+thetoken.image;
                 else
                     retval=thetoken.image;
             }
             {if (true) return retval;}
      break;
    case PERCENT:
    case PICSRULE:
    case POLICY:
    case EXPLAIN:
    case REJECTURL:
    case ACCEPTURL:
    case REJECTIF:
    case REJECTUNLESS:
    case ACCEPTIF:
    case ACCEPTUNLESS:
    case RULENAME:
    case NAME:
    case DESC:
    case SOURCEURL:
    case SOURCE:
    case TOOL:
    case AUTHOR:
    case LASTMOD:
    case SERVICEINFO:
    case SHORTNAME:
    case BUREAUURL:
    case USEEM:
    case RATFILE:
    case NOBUREAU:
    case OPTEXT:
    case EXT_NAME:
    case REQEXT:
    case PASS:
    case FAIL:
    case URL:
    case AND:
    case OR:
    case OTHERWISE:
    case FTP:
    case HTTP:
    case GOPHER:
    case NNTP:
    case IRC:
    case PROSPERO:
    case TELNET:
    case PATTERNS:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case PICSRULE:
      case POLICY:
      case EXPLAIN:
      case REJECTURL:
      case ACCEPTURL:
      case REJECTIF:
      case REJECTUNLESS:
      case ACCEPTIF:
      case ACCEPTUNLESS:
      case RULENAME:
      case NAME:
      case DESC:
      case SOURCEURL:
      case SOURCE:
      case TOOL:
      case AUTHOR:
      case LASTMOD:
      case SERVICEINFO:
      case SHORTNAME:
      case BUREAUURL:
      case USEEM:
      case RATFILE:
      case NOBUREAU:
      case OPTEXT:
      case EXT_NAME:
      case REQEXT:
      case PASS:
      case FAIL:
      case URL:
      case AND:
      case OR:
      case OTHERWISE:
      case FTP:
      case HTTP:
      case GOPHER:
      case NNTP:
      case IRC:
      case PROSPERO:
      case TELNET:
      case PATTERNS:
        retval = reservedString();
        break;
      case PERCENT:
        retval = escape();
        break;
      default:
        jj_la1[54] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
             {if (true) return retval;}
      break;
    default:
      jj_la1[55] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    throw new Error("Missing return statement in function");
  }

  static final public String URLpattern() throws ParseException {
 /*@bgen(jjtree) Full_URL_Node */
         PICSFull_URL_Node jjtn000 = new PICSFull_URL_Node(JJTFULL_URL_NODE);
         boolean jjtc000 = true;
         jjtree.openNodeScope(jjtn000);String retval = null;
    try {
      if (jj_2_34(2147483647)) {
        retval = internet_pattern();
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case LOWALPHA:
        case HIGHALPHA:
        case DIGIT:
        case MINUS:
        case DOT:
        case PLUS:
        case STAR:
        case PICSRULE:
        case POLICY:
        case EXPLAIN:
        case REJECTURL:
        case ACCEPTURL:
        case REJECTIF:
        case REJECTUNLESS:
        case ACCEPTIF:
        case ACCEPTUNLESS:
        case RULENAME:
        case NAME:
        case DESC:
        case SOURCEURL:
        case SOURCE:
        case TOOL:
        case AUTHOR:
        case LASTMOD:
        case SERVICEINFO:
        case SHORTNAME:
        case BUREAUURL:
        case USEEM:
        case RATFILE:
        case NOBUREAU:
        case OPTEXT:
        case EXT_NAME:
        case REQEXT:
        case PASS:
        case FAIL:
        case URL:
        case AND:
        case OR:
        case OTHERWISE:
        case FTP:
        case HTTP:
        case GOPHER:
        case NNTP:
        case IRC:
        case PROSPERO:
        case TELNET:
        case PATTERNS:
          retval = other_pattern();
          break;
        default:
          jj_la1[56] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
           jjtree.closeNodeScope(jjtn000, true);
           jjtc000 = false;
             jjtn000.text=retval;
             {if (true) return retval;}
    } catch (Throwable jjte000) {
           if (jjtc000) {
             jjtree.clearNodeScope(jjtn000);
             jjtc000 = false;
           } else {
             jjtree.popNode();
           }
           if (jjte000 instanceof ParseException) {
             {if (true) throw (ParseException)jjte000;}
           }
           if (jjte000 instanceof RuntimeException) {
             {if (true) throw (RuntimeException)jjte000;}
           }
           {if (true) throw (Error)jjte000;}
    } finally {
           if (jjtc000) {
             jjtree.closeNodeScope(jjtn000, true);
           }
    }
    throw new Error("Missing return statement in function");
  }

  static final public String internet_pattern() throws ParseException {
 /*@bgen(jjtree) Internet_Node */
         PICSInternet_Node jjtn000 = new PICSInternet_Node(JJTINTERNET_NODE);
         boolean jjtc000 = true;
         jjtree.openNodeScope(jjtn000);String retval = new String("");
         String temp = null;
    try {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case STAR:
      case FTP:
      case HTTP:
      case GOPHER:
      case NNTP:
      case IRC:
      case PROSPERO:
      case TELNET:
        temp = internet_scheme();
        jj_consume_token(COLON);
             retval+=temp;
             retval+=":";
        break;
      default:
        jj_la1[57] = jj_gen;
        ;
      }
      jj_consume_token(SLASH);
      jj_consume_token(SLASH);
             retval+="//";
      if (jj_2_35(2147483647)) {
        temp = user();
             retval+=temp;
      } else {
        ;
      }
      temp = hostoraddr();
             retval+=temp;
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case COLON:
        jj_consume_token(COLON);
        temp = port();
             retval+=":";
             retval+=temp;
        break;
      default:
        jj_la1[58] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case SLASH:
        jj_consume_token(SLASH);
        temp = pathmatch();
             retval+="/";
             retval+=temp;
        break;
      default:
        jj_la1[59] = jj_gen;
        ;
      }
           jjtree.closeNodeScope(jjtn000, true);
           jjtc000 = false;
             jjtn000.text=retval;
             {if (true) return retval;}
    } catch (Throwable jjte000) {
           if (jjtc000) {
             jjtree.clearNodeScope(jjtn000);
             jjtc000 = false;
           } else {
             jjtree.popNode();
           }
           if (jjte000 instanceof ParseException) {
             {if (true) throw (ParseException)jjte000;}
           }
           if (jjte000 instanceof RuntimeException) {
             {if (true) throw (RuntimeException)jjte000;}
           }
           {if (true) throw (Error)jjte000;}
    } finally {
           if (jjtc000) {
             jjtree.closeNodeScope(jjtn000, true);
           }
    }
    throw new Error("Missing return statement in function");
  }

  static final public String internet_scheme() throws ParseException {
 /*@bgen(jjtree) Scheme_Node */
         PICSScheme_Node jjtn000 = new PICSScheme_Node(JJTSCHEME_NODE);
         boolean jjtc000 = true;
         jjtree.openNodeScope(jjtn000);Token thetoken = null;
    try {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case STAR:
        thetoken = jj_consume_token(STAR);
        break;
      case FTP:
        thetoken = jj_consume_token(FTP);
        break;
      case HTTP:
        thetoken = jj_consume_token(HTTP);
        break;
      case GOPHER:
        thetoken = jj_consume_token(GOPHER);
        break;
      case NNTP:
        thetoken = jj_consume_token(NNTP);
        break;
      case IRC:
        thetoken = jj_consume_token(IRC);
        break;
      case PROSPERO:
        thetoken = jj_consume_token(PROSPERO);
        break;
      case TELNET:
        thetoken = jj_consume_token(TELNET);
        break;
      default:
        jj_la1[60] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
           jjtree.closeNodeScope(jjtn000, true);
           jjtc000 = false;
             jjtn000.text = thetoken.image;
             {if (true) return thetoken.image;}
    } finally {
           if (jjtc000) {
             jjtree.closeNodeScope(jjtn000, true);
           }
    }
    throw new Error("Missing return statement in function");
  }

  static final public String user() throws ParseException {
 /*@bgen(jjtree) User_Node */
         PICSUser_Node jjtn000 = new PICSUser_Node(JJTUSER_NODE);
         boolean jjtc000 = true;
         jjtree.openNodeScope(jjtn000);String temp = null;
         String retval = new String("");
    try {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case STAR:
      case PERCENT:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case PERCENT:
          jj_consume_token(PERCENT);
             retval+="%";
          break;
        default:
          jj_la1[61] = jj_gen;
          ;
        }
        jj_consume_token(STAR);
             retval+="*";
        break;
      default:
        jj_la1[62] = jj_gen;
        ;
      }
      label_18:
      while (true) {
        if (jj_2_36(2147483647)) {
          ;
        } else {
          break label_18;
        }
        temp = userchar();
             retval+=temp;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case STAR:
      case PERCENT:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case PERCENT:
          jj_consume_token(PERCENT);
             retval+="%";
          break;
        default:
          jj_la1[63] = jj_gen;
          ;
        }
        jj_consume_token(STAR);
             retval+="*";
        break;
      default:
        jj_la1[64] = jj_gen;
        ;
      }
      jj_consume_token(ATSIGN);
           jjtree.closeNodeScope(jjtn000, true);
           jjtc000 = false;
             retval+="@";
             jjtn000.text=retval;
             {if (true) return retval;}
    } catch (Throwable jjte000) {
           if (jjtc000) {
             jjtree.clearNodeScope(jjtn000);
             jjtc000 = false;
           } else {
             jjtree.popNode();
           }
           if (jjte000 instanceof ParseException) {
             {if (true) throw (ParseException)jjte000;}
           }
           if (jjte000 instanceof RuntimeException) {
             {if (true) throw (RuntimeException)jjte000;}
           }
           {if (true) throw (Error)jjte000;}
    } finally {
           if (jjtc000) {
             jjtree.closeNodeScope(jjtn000, true);
           }
    }
    throw new Error("Missing return statement in function");
  }

  static final public String hostoraddr() throws ParseException {
         String temp = null;
         String retval = new String("");
    if (jj_2_37(2147483647)) {
      temp = ipwild();
             retval+=temp;
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case BANG:
        jj_consume_token(BANG);
        temp = bitlength();
             retval+="!";
             retval+=temp;
        break;
      default:
        jj_la1[65] = jj_gen;
        ;
      }
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LOWALPHA:
      case HIGHALPHA:
      case DIGIT:
      case MINUS:
      case DOT:
      case STAR:
      case PERCENT:
      case PICSRULE:
      case POLICY:
      case EXPLAIN:
      case REJECTURL:
      case ACCEPTURL:
      case REJECTIF:
      case REJECTUNLESS:
      case ACCEPTIF:
      case ACCEPTUNLESS:
      case RULENAME:
      case NAME:
      case DESC:
      case SOURCEURL:
      case SOURCE:
      case TOOL:
      case AUTHOR:
      case LASTMOD:
      case SERVICEINFO:
      case SHORTNAME:
      case BUREAUURL:
      case USEEM:
      case RATFILE:
      case NOBUREAU:
      case OPTEXT:
      case EXT_NAME:
      case REQEXT:
      case PASS:
      case FAIL:
      case URL:
      case AND:
      case OR:
      case OTHERWISE:
      case FTP:
      case HTTP:
      case GOPHER:
      case NNTP:
      case IRC:
      case PROSPERO:
      case TELNET:
      case PATTERNS:
        temp = host();
             retval+=temp;
        break;
      default:
        jj_la1[66] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
             {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  static final public String ipwild() throws ParseException {
 /*@bgen(jjtree) IP_Node */
         PICSIP_Node jjtn000 = new PICSIP_Node(JJTIP_NODE);
         boolean jjtc000 = true;
         jjtree.openNodeScope(jjtn000);String temp = null;
         String retval = new String("");
    try {
      temp = ipcomponent();
             retval+=temp;
      jj_consume_token(DOT);
      temp = ipcomponent();
             retval+=".";
             retval+=temp;
      jj_consume_token(DOT);
      temp = ipcomponent();
             retval+=".";
             retval+=temp;
      jj_consume_token(DOT);
      temp = ipcomponent();
           jjtree.closeNodeScope(jjtn000, true);
           jjtc000 = false;
             retval+=".";
             retval+=temp;
             jjtn000.text = retval;
             {if (true) return retval;}
    } catch (Throwable jjte000) {
           if (jjtc000) {
             jjtree.clearNodeScope(jjtn000);
             jjtc000 = false;
           } else {
             jjtree.popNode();
           }
           if (jjte000 instanceof ParseException) {
             {if (true) throw (ParseException)jjte000;}
           }
           if (jjte000 instanceof RuntimeException) {
             {if (true) throw (RuntimeException)jjte000;}
           }
           {if (true) throw (Error)jjte000;}
    } finally {
           if (jjtc000) {
             jjtree.closeNodeScope(jjtn000, true);
           }
    }
    throw new Error("Missing return statement in function");
  }

  static final public String ipcomponent() throws ParseException {
         Token thetoken = null;
         String retval = new String("");
    thetoken = jj_consume_token(DIGIT);
             retval+=thetoken.image;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case DIGIT:
      thetoken = jj_consume_token(DIGIT);
             retval+=thetoken.image;
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case DIGIT:
        thetoken = jj_consume_token(DIGIT);
             retval+=thetoken.image;
        break;
      default:
        jj_la1[67] = jj_gen;
        ;
      }
      break;
    default:
      jj_la1[68] = jj_gen;
      ;
    }
             Integer i = new Integer(retval);
             int j = i.intValue();
             if ((j<0) || (j>255))
                 {if (true) throw generateParseException();}
             {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  static final public String bitlength() throws ParseException {
         Token thetoken = null;
         String retval = new String("");
    thetoken = jj_consume_token(DIGIT);
             retval+=thetoken.image;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case DIGIT:
      thetoken = jj_consume_token(DIGIT);
             retval+=thetoken.image;
      break;
    default:
      jj_la1[69] = jj_gen;
      ;
    }
             Integer i = new Integer(retval);
             int j = i.intValue();
             if ((j<0) || (j>32))
                 {if (true) throw generateParseException();}
             {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  static final public String host() throws ParseException {
 /*@bgen(jjtree) Host_Node */
         PICSHost_Node jjtn000 = new PICSHost_Node(JJTHOST_NODE);
         boolean jjtc000 = true;
         jjtree.openNodeScope(jjtn000);String retval = new String("");
         Token thetoken = null;
         String temp = null;
    try {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case STAR:
      case PERCENT:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case PERCENT:
          jj_consume_token(PERCENT);
             retval+="%";
          break;
        default:
          jj_la1[70] = jj_gen;
          ;
        }
        jj_consume_token(STAR);
             retval+="*";
        break;
      default:
        jj_la1[71] = jj_gen;
        ;
      }
      label_19:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case LOWALPHA:
        case HIGHALPHA:
        case DIGIT:
        case MINUS:
        case DOT:
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case LOWALPHA:
            thetoken = jj_consume_token(LOWALPHA);
            break;
          case HIGHALPHA:
            thetoken = jj_consume_token(HIGHALPHA);
            break;
          case DIGIT:
            thetoken = jj_consume_token(DIGIT);
            break;
          case MINUS:
            thetoken = jj_consume_token(MINUS);
            break;
          case DOT:
            thetoken = jj_consume_token(DOT);
            break;
          default:
            jj_la1[72] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
             retval+=thetoken.image;
          break;
        case PICSRULE:
        case POLICY:
        case EXPLAIN:
        case REJECTURL:
        case ACCEPTURL:
        case REJECTIF:
        case REJECTUNLESS:
        case ACCEPTIF:
        case ACCEPTUNLESS:
        case RULENAME:
        case NAME:
        case DESC:
        case SOURCEURL:
        case SOURCE:
        case TOOL:
        case AUTHOR:
        case LASTMOD:
        case SERVICEINFO:
        case SHORTNAME:
        case BUREAUURL:
        case USEEM:
        case RATFILE:
        case NOBUREAU:
        case OPTEXT:
        case EXT_NAME:
        case REQEXT:
        case PASS:
        case FAIL:
        case URL:
        case AND:
        case OR:
        case OTHERWISE:
        case FTP:
        case HTTP:
        case GOPHER:
        case NNTP:
        case IRC:
        case PROSPERO:
        case TELNET:
        case PATTERNS:
          temp = reservedString();
             retval+=temp;
          break;
        default:
          jj_la1[73] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case LOWALPHA:
        case HIGHALPHA:
        case DIGIT:
        case MINUS:
        case DOT:
        case PICSRULE:
        case POLICY:
        case EXPLAIN:
        case REJECTURL:
        case ACCEPTURL:
        case REJECTIF:
        case REJECTUNLESS:
        case ACCEPTIF:
        case ACCEPTUNLESS:
        case RULENAME:
        case NAME:
        case DESC:
        case SOURCEURL:
        case SOURCE:
        case TOOL:
        case AUTHOR:
        case LASTMOD:
        case SERVICEINFO:
        case SHORTNAME:
        case BUREAUURL:
        case USEEM:
        case RATFILE:
        case NOBUREAU:
        case OPTEXT:
        case EXT_NAME:
        case REQEXT:
        case PASS:
        case FAIL:
        case URL:
        case AND:
        case OR:
        case OTHERWISE:
        case FTP:
        case HTTP:
        case GOPHER:
        case NNTP:
        case IRC:
        case PROSPERO:
        case TELNET:
        case PATTERNS:
          ;
          break;
        default:
          jj_la1[74] = jj_gen;
          break label_19;
        }
      }
           jjtree.closeNodeScope(jjtn000, true);
           jjtc000 = false;
             jjtn000.text = retval;
             {if (true) return retval;}
    } catch (Throwable jjte000) {
           if (jjtc000) {
             jjtree.clearNodeScope(jjtn000);
             jjtc000 = false;
           } else {
             jjtree.popNode();
           }
           if (jjte000 instanceof ParseException) {
             {if (true) throw (ParseException)jjte000;}
           }
           if (jjte000 instanceof RuntimeException) {
             {if (true) throw (RuntimeException)jjte000;}
           }
           {if (true) throw (Error)jjte000;}
    } finally {
           if (jjtc000) {
             jjtree.closeNodeScope(jjtn000, true);
           }
    }
    throw new Error("Missing return statement in function");
  }

  static final public String port() throws ParseException {
 /*@bgen(jjtree) Port_Node */
         PICSPort_Node jjtn000 = new PICSPort_Node(JJTPORT_NODE);
         boolean jjtc000 = true;
         jjtree.openNodeScope(jjtn000);String temp = null;
         String retval = new String("");
    try {
      if (jj_2_38(2147483647)) {
        temp = integerorwild();
             retval+=temp;
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case MINUS:
          jj_consume_token(MINUS);
          temp = integerorwild();
             retval+="-";
             retval+=temp;
          break;
        default:
          jj_la1[75] = jj_gen;
          ;
        }
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case STAR:
          jj_consume_token(STAR);
             retval+="*";
          break;
        default:
          jj_la1[76] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
           jjtree.closeNodeScope(jjtn000, true);
           jjtc000 = false;
             jjtn000.text = retval;
             {if (true) return retval;}
    } catch (Throwable jjte000) {
           if (jjtc000) {
             jjtree.clearNodeScope(jjtn000);
             jjtc000 = false;
           } else {
             jjtree.popNode();
           }
           if (jjte000 instanceof ParseException) {
             {if (true) throw (ParseException)jjte000;}
           }
           if (jjte000 instanceof RuntimeException) {
             {if (true) throw (RuntimeException)jjte000;}
           }
           {if (true) throw (Error)jjte000;}
    } finally {
           if (jjtc000) {
             jjtree.closeNodeScope(jjtn000, true);
           }
    }
    throw new Error("Missing return statement in function");
  }

  static final public String integerorwild() throws ParseException {
         String retval = new String("");
         Token thetoken = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case DIGIT:
      label_20:
      while (true) {
        thetoken = jj_consume_token(DIGIT);
             retval+=thetoken.image;
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case DIGIT:
          ;
          break;
        default:
          jj_la1[77] = jj_gen;
          break label_20;
        }
      }
      break;
    case STAR:
      jj_consume_token(STAR);
             retval+="*";
      break;
    default:
      jj_la1[78] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
             {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  static final public String pathmatch() throws ParseException {
 /*@bgen(jjtree) Path_Node */
         PICSPath_Node jjtn000 = new PICSPath_Node(JJTPATH_NODE);
         boolean jjtc000 = true;
         jjtree.openNodeScope(jjtn000);String retval = new String("");
         String temp = null;
    try {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case STAR:
      case PERCENT:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case PERCENT:
          jj_consume_token(PERCENT);
             retval+="%";
          break;
        default:
          jj_la1[79] = jj_gen;
          ;
        }
        jj_consume_token(STAR);
             retval+="*";
        break;
      default:
        jj_la1[80] = jj_gen;
        ;
      }
      label_21:
      while (true) {
        if (jj_2_39(2147483647)) {
          ;
        } else {
          break label_21;
        }
        temp = urlnotquotechar();
             retval+=temp;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case STAR:
      case PERCENT:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case PERCENT:
          jj_consume_token(PERCENT);
             retval+="%";
          break;
        default:
          jj_la1[81] = jj_gen;
          ;
        }
        jj_consume_token(STAR);
             retval+="*";
        break;
      default:
        jj_la1[82] = jj_gen;
        ;
      }
           jjtree.closeNodeScope(jjtn000, true);
           jjtc000 = false;
             jjtn000.text = retval;
             {if (true) return retval;}
    } catch (Throwable jjte000) {
           if (jjtc000) {
             jjtree.clearNodeScope(jjtn000);
             jjtc000 = false;
           } else {
             jjtree.popNode();
           }
           if (jjte000 instanceof ParseException) {
             {if (true) throw (ParseException)jjte000;}
           }
           if (jjte000 instanceof RuntimeException) {
             {if (true) throw (RuntimeException)jjte000;}
           }
           {if (true) throw (Error)jjte000;}
    } finally {
           if (jjtc000) {
             jjtree.closeNodeScope(jjtn000, true);
           }
    }
    throw new Error("Missing return statement in function");
  }

  static final public String other_pattern() throws ParseException {
 /*@bgen(jjtree) NonInternet_Node */
         PICSNonInternet_Node jjtn000 = new PICSNonInternet_Node(JJTNONINTERNET_NODE);
         boolean jjtc000 = true;
         jjtree.openNodeScope(jjtn000);String temp = null;
         String retval = new String("");
    try {
      temp = scheme();
             retval+=temp;
      jj_consume_token(COLON);
             retval+=":";
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case STAR:
      case PERCENT:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case PERCENT:
          jj_consume_token(PERCENT);
             retval+="%";
          break;
        default:
          jj_la1[83] = jj_gen;
          ;
        }
        jj_consume_token(STAR);
             retval+="*";
        break;
      default:
        jj_la1[84] = jj_gen;
        ;
      }
      label_22:
      while (true) {
        if (jj_2_40(2147483647)) {
          ;
        } else {
          break label_22;
        }
        temp = urlnotquotechar();
             retval+=temp;
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case STAR:
      case PERCENT:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case PERCENT:
          jj_consume_token(PERCENT);
             retval+="%";
          break;
        default:
          jj_la1[85] = jj_gen;
          ;
        }
        jj_consume_token(STAR);
             retval+="*";
        break;
      default:
        jj_la1[86] = jj_gen;
        ;
      }
           jjtree.closeNodeScope(jjtn000, true);
           jjtc000 = false;
             jjtn000.text = retval;
             {if (true) return retval;}
    } catch (Throwable jjte000) {
           if (jjtc000) {
             jjtree.clearNodeScope(jjtn000);
             jjtc000 = false;
           } else {
             jjtree.popNode();
           }
           if (jjte000 instanceof ParseException) {
             {if (true) throw (ParseException)jjte000;}
           }
           if (jjte000 instanceof RuntimeException) {
             {if (true) throw (RuntimeException)jjte000;}
           }
           {if (true) throw (Error)jjte000;}
    } finally {
           if (jjtc000) {
             jjtree.closeNodeScope(jjtn000, true);
           }
    }
    throw new Error("Missing return statement in function");
  }

  static final public String scheme() throws ParseException {
 /*@bgen(jjtree) NonInetScheme_Node */
         PICSNonInetScheme_Node jjtn000 = new PICSNonInetScheme_Node(JJTNONINETSCHEME_NODE);
         boolean jjtc000 = true;
         jjtree.openNodeScope(jjtn000);String temp = null;
         String retval = new String("");
    try {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case STAR:
        jj_consume_token(STAR);
           jjtree.closeNodeScope(jjtn000, true);
           jjtc000 = false;
             retval = "*";
             jjtn000.text = retval;
             {if (true) return retval;}
        break;
      case LOWALPHA:
      case HIGHALPHA:
      case DIGIT:
      case MINUS:
      case DOT:
      case PLUS:
      case PICSRULE:
      case POLICY:
      case EXPLAIN:
      case REJECTURL:
      case ACCEPTURL:
      case REJECTIF:
      case REJECTUNLESS:
      case ACCEPTIF:
      case ACCEPTUNLESS:
      case RULENAME:
      case NAME:
      case DESC:
      case SOURCEURL:
      case SOURCE:
      case TOOL:
      case AUTHOR:
      case LASTMOD:
      case SERVICEINFO:
      case SHORTNAME:
      case BUREAUURL:
      case USEEM:
      case RATFILE:
      case NOBUREAU:
      case OPTEXT:
      case EXT_NAME:
      case REQEXT:
      case PASS:
      case FAIL:
      case URL:
      case AND:
      case OR:
      case OTHERWISE:
      case FTP:
      case HTTP:
      case GOPHER:
      case NNTP:
      case IRC:
      case PROSPERO:
      case TELNET:
      case PATTERNS:
        label_23:
        while (true) {
          temp = schemechar();
             retval+=temp;
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case LOWALPHA:
          case HIGHALPHA:
          case DIGIT:
          case MINUS:
          case DOT:
          case PLUS:
          case PICSRULE:
          case POLICY:
          case EXPLAIN:
          case REJECTURL:
          case ACCEPTURL:
          case REJECTIF:
          case REJECTUNLESS:
          case ACCEPTIF:
          case ACCEPTUNLESS:
          case RULENAME:
          case NAME:
          case DESC:
          case SOURCEURL:
          case SOURCE:
          case TOOL:
          case AUTHOR:
          case LASTMOD:
          case SERVICEINFO:
          case SHORTNAME:
          case BUREAUURL:
          case USEEM:
          case RATFILE:
          case NOBUREAU:
          case OPTEXT:
          case EXT_NAME:
          case REQEXT:
          case PASS:
          case FAIL:
          case URL:
          case AND:
          case OR:
          case OTHERWISE:
          case FTP:
          case HTTP:
          case GOPHER:
          case NNTP:
          case IRC:
          case PROSPERO:
          case TELNET:
          case PATTERNS:
            ;
            break;
          default:
            jj_la1[87] = jj_gen;
            break label_23;
          }
        }
           jjtree.closeNodeScope(jjtn000, true);
           jjtc000 = false;
             jjtn000.text = retval;
             {if (true) return retval;}
        break;
      default:
        jj_la1[88] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    } catch (Throwable jjte000) {
           if (jjtc000) {
             jjtree.clearNodeScope(jjtn000);
             jjtc000 = false;
           } else {
             jjtree.popNode();
           }
           if (jjte000 instanceof ParseException) {
             {if (true) throw (ParseException)jjte000;}
           }
           if (jjte000 instanceof RuntimeException) {
             {if (true) throw (RuntimeException)jjte000;}
           }
           {if (true) throw (Error)jjte000;}
    } finally {
           if (jjtc000) {
             jjtree.closeNodeScope(jjtn000, true);
           }
    }
    throw new Error("Missing return statement in function");
  }

  static final public String schemechar() throws ParseException {
         Token thetoken = null;
         String retval = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case LOWALPHA:
      thetoken = jj_consume_token(LOWALPHA);
      break;
    case HIGHALPHA:
      thetoken = jj_consume_token(HIGHALPHA);
      break;
    case DIGIT:
      thetoken = jj_consume_token(DIGIT);
      break;
    case PLUS:
      thetoken = jj_consume_token(PLUS);
      break;
    case MINUS:
      thetoken = jj_consume_token(MINUS);
      break;
    case DOT:
      thetoken = jj_consume_token(DOT);
      break;
    case PICSRULE:
    case POLICY:
    case EXPLAIN:
    case REJECTURL:
    case ACCEPTURL:
    case REJECTIF:
    case REJECTUNLESS:
    case ACCEPTIF:
    case ACCEPTUNLESS:
    case RULENAME:
    case NAME:
    case DESC:
    case SOURCEURL:
    case SOURCE:
    case TOOL:
    case AUTHOR:
    case LASTMOD:
    case SERVICEINFO:
    case SHORTNAME:
    case BUREAUURL:
    case USEEM:
    case RATFILE:
    case NOBUREAU:
    case OPTEXT:
    case EXT_NAME:
    case REQEXT:
    case PASS:
    case FAIL:
    case URL:
    case AND:
    case OR:
    case OTHERWISE:
    case FTP:
    case HTTP:
    case GOPHER:
    case NNTP:
    case IRC:
    case PROSPERO:
    case TELNET:
    case PATTERNS:
      retval = reservedString();
      break;
    default:
      jj_la1[89] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
             if (thetoken!=null)
                 retval = thetoken.image;
             {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  static final public String operator() throws ParseException {
         Token thetoken = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case TILDE:
      thetoken = jj_consume_token(TILDE);
      break;
    case STAR:
      thetoken = jj_consume_token(STAR);
      break;
    case EQUAL:
      thetoken = jj_consume_token(EQUAL);
      break;
    default:
      jj_la1[90] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
             {if (true) return thetoken.image;}
    throw new Error("Missing return statement in function");
  }

  static final public String policy_expression() throws ParseException {
 /*@bgen(jjtree) Policy_Expr */
         PICSPolicy_Expr jjtn000 = new PICSPolicy_Expr(JJTPOLICY_EXPR);
         boolean jjtc000 = true;
         jjtree.openNodeScope(jjtn000);String retval = null;
    try {
      if (jj_2_41(2147483647)) {
                                           PICSS_Expr jjtn001 = new PICSS_Expr(JJTS_EXPR);
                                           boolean jjtc001 = true;
                                           jjtree.openNodeScope(jjtn001);
        try {
          retval = simple_expression();
                   jjtree.closeNodeScope(jjtn001, true);
                   jjtc001 = false;
                  jjtn001.text=retval;
        } catch (Throwable jjte001) {
                                           if (jjtc001) {
                                             jjtree.clearNodeScope(jjtn001);
                                             jjtc001 = false;
                                           } else {
                                             jjtree.popNode();
                                           }
                                           if (jjte001 instanceof ParseException) {
                                             {if (true) throw (ParseException)jjte001;}
                                           }
                                           if (jjte001 instanceof RuntimeException) {
                                             {if (true) throw (RuntimeException)jjte001;}
                                           }
                                           {if (true) throw (Error)jjte001;}
        } finally {
                                           if (jjtc001) {
                                             jjtree.closeNodeScope(jjtn001, true);
                                           }
        }
      } else if (jj_2_42(2147483647)) {
                                        PICSOr_Expr jjtn002 = new PICSOr_Expr(JJTOR_EXPR);
                                        boolean jjtc002 = true;
                                        jjtree.openNodeScope(jjtn002);
        try {
          retval = or_expression();
                   jjtree.closeNodeScope(jjtn002, true);
                   jjtc002 = false;
                  jjtn002.text=retval;
        } catch (Throwable jjte002) {
                                        if (jjtc002) {
                                          jjtree.clearNodeScope(jjtn002);
                                          jjtc002 = false;
                                        } else {
                                          jjtree.popNode();
                                        }
                                        if (jjte002 instanceof ParseException) {
                                          {if (true) throw (ParseException)jjte002;}
                                        }
                                        if (jjte002 instanceof RuntimeException) {
                                          {if (true) throw (RuntimeException)jjte002;}
                                        }
                                        {if (true) throw (Error)jjte002;}
        } finally {
                                        if (jjtc002) {
                                          jjtree.closeNodeScope(jjtn002, true);
                                        }
        }
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case L_PAREN:
             PICSAnd_Expr jjtn003 = new PICSAnd_Expr(JJTAND_EXPR);
             boolean jjtc003 = true;
             jjtree.openNodeScope(jjtn003);
          try {
            retval = and_expression();
                                      jjtree.closeNodeScope(jjtn003, true);
                                      jjtc003 = false;
                                     jjtn003.text=retval;
          } catch (Throwable jjte003) {
             if (jjtc003) {
               jjtree.clearNodeScope(jjtn003);
               jjtc003 = false;
             } else {
               jjtree.popNode();
             }
             if (jjte003 instanceof ParseException) {
               {if (true) throw (ParseException)jjte003;}
             }
             if (jjte003 instanceof RuntimeException) {
               {if (true) throw (RuntimeException)jjte003;}
             }
             {if (true) throw (Error)jjte003;}
          } finally {
             if (jjtc003) {
               jjtree.closeNodeScope(jjtn003, true);
             }
          }
          break;
        case OTHERWISE:
             PICSDegen_Expr jjtn004 = new PICSDegen_Expr(JJTDEGEN_EXPR);
             boolean jjtc004 = true;
             jjtree.openNodeScope(jjtn004);
          try {
            retval = degenerate_expression();
          } catch (Throwable jjte004) {
             if (jjtc004) {
               jjtree.clearNodeScope(jjtn004);
               jjtc004 = false;
             } else {
               jjtree.popNode();
             }
             if (jjte004 instanceof ParseException) {
               {if (true) throw (ParseException)jjte004;}
             }
             if (jjte004 instanceof RuntimeException) {
               {if (true) throw (RuntimeException)jjte004;}
             }
             {if (true) throw (Error)jjte004;}
          } finally {
             if (jjtc004) {
               jjtree.closeNodeScope(jjtn004, true);
             }
          }
          break;
        default:
          jj_la1[91] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
           jjtree.closeNodeScope(jjtn000, true);
           jjtc000 = false;
             {if (true) return retval;}
    } catch (Throwable jjte000) {
           if (jjtc000) {
             jjtree.clearNodeScope(jjtn000);
             jjtc000 = false;
           } else {
             jjtree.popNode();
           }
           if (jjte000 instanceof ParseException) {
             {if (true) throw (ParseException)jjte000;}
           }
           if (jjte000 instanceof RuntimeException) {
             {if (true) throw (RuntimeException)jjte000;}
           }
           {if (true) throw (Error)jjte000;}
    } finally {
           if (jjtc000) {
             jjtree.closeNodeScope(jjtn000, true);
           }
    }
    throw new Error("Missing return statement in function");
  }

  static final public String simple_expression() throws ParseException {
         String retval = new String("");
         String temp = null;
    jj_consume_token(L_PAREN);
                     PICSServiceNode jjtn001 = new PICSServiceNode(JJTSERVICENODE);
                     boolean jjtc001 = true;
                     jjtree.openNodeScope(jjtn001);
    try {
      temp = service();
                                     jjtree.closeNodeScope(jjtn001, true);
                                     jjtc001 = false;
                                    jjtn001.text=temp;
    } catch (Throwable jjte001) {
                     if (jjtc001) {
                       jjtree.clearNodeScope(jjtn001);
                       jjtc001 = false;
                     } else {
                       jjtree.popNode();
                     }
                     if (jjte001 instanceof ParseException) {
                       {if (true) throw (ParseException)jjte001;}
                     }
                     if (jjte001 instanceof RuntimeException) {
                       {if (true) throw (RuntimeException)jjte001;}
                     }
                     {if (true) throw (Error)jjte001;}
    } finally {
                     if (jjtc001) {
                       jjtree.closeNodeScope(jjtn001, true);
                     }
    }
             retval+="(";
             retval+=temp;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case DOT:
      jj_consume_token(DOT);
                   PICSCategoryNode jjtn002 = new PICSCategoryNode(JJTCATEGORYNODE);
                   boolean jjtc002 = true;
                   jjtree.openNodeScope(jjtn002);
      try {
        temp = category();
                                    jjtree.closeNodeScope(jjtn002, true);
                                    jjtc002 = false;
                                   jjtn002.text=temp;
      } catch (Throwable jjte002) {
                   if (jjtc002) {
                     jjtree.clearNodeScope(jjtn002);
                     jjtc002 = false;
                   } else {
                     jjtree.popNode();
                   }
                   if (jjte002 instanceof ParseException) {
                     {if (true) throw (ParseException)jjte002;}
                   }
                   if (jjte002 instanceof RuntimeException) {
                     {if (true) throw (RuntimeException)jjte002;}
                   }
                   {if (true) throw (Error)jjte002;}
      } finally {
                   if (jjtc002) {
                     jjtree.closeNodeScope(jjtn002, true);
                   }
      }
             retval+="."+temp;
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case EQUAL:
      case L_ANGLE:
      case R_ANGLE:
                 PICSOperatorNode jjtn003 = new PICSOperatorNode(JJTOPERATORNODE);
                 boolean jjtc003 = true;
                 jjtree.openNodeScope(jjtn003);
        try {
          temp = op();
                            jjtree.closeNodeScope(jjtn003, true);
                            jjtc003 = false;
                           jjtn003.text=temp;
        } catch (Throwable jjte003) {
                 if (jjtc003) {
                   jjtree.clearNodeScope(jjtn003);
                   jjtc003 = false;
                 } else {
                   jjtree.popNode();
                 }
                 if (jjte003 instanceof ParseException) {
                   {if (true) throw (ParseException)jjte003;}
                 }
                 if (jjte003 instanceof RuntimeException) {
                   {if (true) throw (RuntimeException)jjte003;}
                 }
                 {if (true) throw (Error)jjte003;}
        } finally {
                 if (jjtc003) {
                   jjtree.closeNodeScope(jjtn003, true);
                 }
        }
                 retval+=" "+temp;
                   PICSConstantNode jjtn004 = new PICSConstantNode(JJTCONSTANTNODE);
                   boolean jjtc004 = true;
                   jjtree.openNodeScope(jjtn004);
        try {
          temp = constant();
                                    jjtree.closeNodeScope(jjtn004, true);
                                    jjtc004 = false;
                                   jjtn004.text=temp;
        } catch (Throwable jjte004) {
                   if (jjtc004) {
                     jjtree.clearNodeScope(jjtn004);
                     jjtc004 = false;
                   } else {
                     jjtree.popNode();
                   }
                   if (jjte004 instanceof ParseException) {
                     {if (true) throw (ParseException)jjte004;}
                   }
                   if (jjte004 instanceof RuntimeException) {
                     {if (true) throw (RuntimeException)jjte004;}
                   }
                   {if (true) throw (Error)jjte004;}
        } finally {
                   if (jjtc004) {
                     jjtree.closeNodeScope(jjtn004, true);
                   }
        }
                     retval+=" "+temp;
        break;
      default:
        jj_la1[92] = jj_gen;
        ;
      }
      break;
    default:
      jj_la1[93] = jj_gen;
      ;
    }
    jj_consume_token(R_PAREN);
             retval+=")";
             {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  static final public String service() throws ParseException {
         String retval = new String("");
         String temp = null;
    label_24:
    while (true) {
      temp = servicenamechars();
             retval+=temp;
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LOWALPHA:
      case HIGHALPHA:
      case DIGIT:
      case NATIONAL:
      case ATSIGN:
      case SLASH:
      case DOLLAR:
      case MINUS:
      case USCORE:
      case PLUS:
      case SEMI:
      case QUES:
      case COLON:
      case AMP:
      case EQUAL:
      case BANG:
      case STAR:
      case COMMA:
      case L_BRAK:
      case R_BRAK:
      case POUND:
      case PERCENT:
      case L_BRACE:
      case R_BRACE:
      case TILDE:
      case PICSRULE:
      case POLICY:
      case EXPLAIN:
      case REJECTURL:
      case ACCEPTURL:
      case REJECTIF:
      case REJECTUNLESS:
      case ACCEPTIF:
      case ACCEPTUNLESS:
      case RULENAME:
      case NAME:
      case DESC:
      case SOURCEURL:
      case SOURCE:
      case TOOL:
      case AUTHOR:
      case LASTMOD:
      case SERVICEINFO:
      case SHORTNAME:
      case BUREAUURL:
      case USEEM:
      case RATFILE:
      case NOBUREAU:
      case OPTEXT:
      case EXT_NAME:
      case REQEXT:
      case PASS:
      case FAIL:
      case URL:
      case AND:
      case OR:
      case OTHERWISE:
      case FTP:
      case HTTP:
      case GOPHER:
      case NNTP:
      case IRC:
      case PROSPERO:
      case TELNET:
      case PATTERNS:
        ;
        break;
      default:
        jj_la1[94] = jj_gen;
        break label_24;
      }
    }
             {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  static final public String category() throws ParseException {
         String retval = new String("");
         String temp = null;
    label_25:
    while (true) {
      temp = transmit_name_char();
             retval+=temp;
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LOWALPHA:
      case HIGHALPHA:
      case DIGIT:
      case ATSIGN:
      case DOLLAR:
      case MINUS:
      case USCORE:
      case DOT:
      case PLUS:
      case SEMI:
      case QUES:
      case COLON:
      case AMP:
      case BANG:
      case STAR:
      case COMMA:
      case POUND:
      case PERCENT:
      case TILDE:
      case PICSRULE:
      case POLICY:
      case EXPLAIN:
      case REJECTURL:
      case ACCEPTURL:
      case REJECTIF:
      case REJECTUNLESS:
      case ACCEPTIF:
      case ACCEPTUNLESS:
      case RULENAME:
      case NAME:
      case DESC:
      case SOURCEURL:
      case SOURCE:
      case TOOL:
      case AUTHOR:
      case LASTMOD:
      case SERVICEINFO:
      case SHORTNAME:
      case BUREAUURL:
      case USEEM:
      case RATFILE:
      case NOBUREAU:
      case OPTEXT:
      case EXT_NAME:
      case REQEXT:
      case PASS:
      case FAIL:
      case URL:
      case AND:
      case OR:
      case OTHERWISE:
      case FTP:
      case HTTP:
      case GOPHER:
      case NNTP:
      case IRC:
      case PROSPERO:
      case TELNET:
      case PATTERNS:
        ;
        break;
      default:
        jj_la1[95] = jj_gen;
        break label_25;
      }
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case SLASH:
      jj_consume_token(SLASH);
      temp = category();
             retval+="/"+temp;
      break;
    default:
      jj_la1[96] = jj_gen;
      ;
    }
             {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  static final public String transmit_name_char() throws ParseException {
         Token thetoken = null;
         String retval = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case LOWALPHA:
    case HIGHALPHA:
    case DIGIT:
    case ATSIGN:
    case DOLLAR:
    case MINUS:
    case USCORE:
    case DOT:
    case PLUS:
    case SEMI:
    case QUES:
    case COLON:
    case AMP:
    case BANG:
    case STAR:
    case COMMA:
    case POUND:
    case TILDE:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LOWALPHA:
      case HIGHALPHA:
      case DIGIT:
      case MINUS:
      case PLUS:
        thetoken = alphanumpm();
        break;
      case DOT:
        thetoken = jj_consume_token(DOT);
        break;
      case DOLLAR:
        thetoken = jj_consume_token(DOLLAR);
        break;
      case COMMA:
        thetoken = jj_consume_token(COMMA);
        break;
      case SEMI:
        thetoken = jj_consume_token(SEMI);
        break;
      case COLON:
        thetoken = jj_consume_token(COLON);
        break;
      case AMP:
        thetoken = jj_consume_token(AMP);
        break;
      case QUES:
        thetoken = jj_consume_token(QUES);
        break;
      case BANG:
        thetoken = jj_consume_token(BANG);
        break;
      case STAR:
        thetoken = jj_consume_token(STAR);
        break;
      case TILDE:
        thetoken = jj_consume_token(TILDE);
        break;
      case ATSIGN:
        thetoken = jj_consume_token(ATSIGN);
        break;
      case POUND:
        thetoken = jj_consume_token(POUND);
        break;
      case USCORE:
        thetoken = jj_consume_token(USCORE);
        break;
      default:
        jj_la1[97] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
             if (thetoken!=null) {
                 if (thetoken.specialToken!=null)
                     retval=" "+thetoken.image;
                 else
                     retval=thetoken.image;
             }
             {if (true) return retval;}
      break;
    case PERCENT:
    case PICSRULE:
    case POLICY:
    case EXPLAIN:
    case REJECTURL:
    case ACCEPTURL:
    case REJECTIF:
    case REJECTUNLESS:
    case ACCEPTIF:
    case ACCEPTUNLESS:
    case RULENAME:
    case NAME:
    case DESC:
    case SOURCEURL:
    case SOURCE:
    case TOOL:
    case AUTHOR:
    case LASTMOD:
    case SERVICEINFO:
    case SHORTNAME:
    case BUREAUURL:
    case USEEM:
    case RATFILE:
    case NOBUREAU:
    case OPTEXT:
    case EXT_NAME:
    case REQEXT:
    case PASS:
    case FAIL:
    case URL:
    case AND:
    case OR:
    case OTHERWISE:
    case FTP:
    case HTTP:
    case GOPHER:
    case NNTP:
    case IRC:
    case PROSPERO:
    case TELNET:
    case PATTERNS:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case PERCENT:
        retval = urlescape();
        break;
      case PICSRULE:
      case POLICY:
      case EXPLAIN:
      case REJECTURL:
      case ACCEPTURL:
      case REJECTIF:
      case REJECTUNLESS:
      case ACCEPTIF:
      case ACCEPTUNLESS:
      case RULENAME:
      case NAME:
      case DESC:
      case SOURCEURL:
      case SOURCE:
      case TOOL:
      case AUTHOR:
      case LASTMOD:
      case SERVICEINFO:
      case SHORTNAME:
      case BUREAUURL:
      case USEEM:
      case RATFILE:
      case NOBUREAU:
      case OPTEXT:
      case EXT_NAME:
      case REQEXT:
      case PASS:
      case FAIL:
      case URL:
      case AND:
      case OR:
      case OTHERWISE:
      case FTP:
      case HTTP:
      case GOPHER:
      case NNTP:
      case IRC:
      case PROSPERO:
      case TELNET:
      case PATTERNS:
        retval = reservedString();
        break;
      default:
        jj_la1[98] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
             {if (true) return retval;}
      break;
    default:
      jj_la1[99] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    throw new Error("Missing return statement in function");
  }

  static final public Token alphanumpm() throws ParseException {
         Token thetoken = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case HIGHALPHA:
      thetoken = jj_consume_token(HIGHALPHA);
      break;
    case LOWALPHA:
      thetoken = jj_consume_token(LOWALPHA);
      break;
    case DIGIT:
      thetoken = jj_consume_token(DIGIT);
      break;
    case PLUS:
      thetoken = jj_consume_token(PLUS);
      break;
    case MINUS:
      thetoken = jj_consume_token(MINUS);
      break;
    default:
      jj_la1[100] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
             {if (true) return thetoken;}
    throw new Error("Missing return statement in function");
  }

  static final public String op() throws ParseException {
         String retval = new String("");
         Token tokenone = null;
         Token tokentwo = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case L_ANGLE:
      tokenone = jj_consume_token(L_ANGLE);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case EQUAL:
        tokentwo = jj_consume_token(EQUAL);
        break;
      default:
        jj_la1[101] = jj_gen;
        ;
      }
             retval+=tokenone.image;
             if (tokentwo!=null)
                 retval+=tokentwo.image;
             {if (true) return retval;}
      break;
    case R_ANGLE:
      tokenone = jj_consume_token(R_ANGLE);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case EQUAL:
        tokentwo = jj_consume_token(EQUAL);
        break;
      default:
        jj_la1[102] = jj_gen;
        ;
      }
             retval+=tokenone.image;
             if (tokentwo!=null)
                 retval+=tokentwo.image;
             {if (true) return retval;}
      break;
    case EQUAL:
      tokenone = jj_consume_token(EQUAL);
             {if (true) return tokenone.image;}
      break;
    default:
      jj_la1[103] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    throw new Error("Missing return statement in function");
  }

  static final public String constant() throws ParseException {
         String retval = new String("");
         Token minustoken = null;
         Token dottoken = null;
         String temp = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case MINUS:
      minustoken = jj_consume_token(MINUS);
             retval+=minustoken.image;
      break;
    default:
      jj_la1[104] = jj_gen;
      ;
    }
    label_26:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case LOWALPHA:
      case HIGHALPHA:
      case DIGIT:
        ;
        break;
      default:
        jj_la1[105] = jj_gen;
        break label_26;
      }
      temp = alphanum();
             retval+=temp;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case DOT:
      dottoken = jj_consume_token(DOT);
             retval+=dottoken.image;
      label_27:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case LOWALPHA:
        case HIGHALPHA:
        case DIGIT:
          ;
          break;
        default:
          jj_la1[106] = jj_gen;
          break label_27;
        }
        temp = alphanum();
             retval+=temp;
      }
      break;
    default:
      jj_la1[107] = jj_gen;
      ;
    }
             {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  static final public String or_expression() throws ParseException {
         String retval = new String("");
         Token ortoken = null;
         String temp = null;
    jj_consume_token(L_PAREN);
    temp = policy_expression();
             retval+="(";
             retval+=temp;
    label_28:
    while (true) {
            PICSBool_Node jjtn001 = new PICSBool_Node(JJTBOOL_NODE);
            boolean jjtc001 = true;
            jjtree.openNodeScope(jjtn001);
      try {
        ortoken = jj_consume_token(OR);
                          jjtree.closeNodeScope(jjtn001, true);
                          jjtc001 = false;
                         jjtn001.text="or";
      } finally {
            if (jjtc001) {
              jjtree.closeNodeScope(jjtn001, true);
            }
      }
             retval+=" "+ortoken.image;
      temp = policy_expression();
             retval+=" "+temp;
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case OR:
        ;
        break;
      default:
        jj_la1[108] = jj_gen;
        break label_28;
      }
    }
    jj_consume_token(R_PAREN);
             retval+=")";
             {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  static final public String and_expression() throws ParseException {
         String retval = new String("");
         Token andtoken = null;
         String temp = null;
    jj_consume_token(L_PAREN);
    temp = policy_expression();
             retval+="(";
             retval+=temp;
    label_29:
    while (true) {
            PICSBool_Node jjtn001 = new PICSBool_Node(JJTBOOL_NODE);
            boolean jjtc001 = true;
            jjtree.openNodeScope(jjtn001);
      try {
        andtoken = jj_consume_token(AND);
                            jjtree.closeNodeScope(jjtn001, true);
                            jjtc001 = false;
                           jjtn001.text="and";
      } finally {
            if (jjtc001) {
              jjtree.closeNodeScope(jjtn001, true);
            }
      }
             retval+=" "+andtoken.image;
      temp = policy_expression();
             retval+=" "+temp;
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case AND:
        ;
        break;
      default:
        jj_la1[109] = jj_gen;
        break label_29;
      }
    }
    jj_consume_token(R_PAREN);
             retval+=")";
             {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  static final public String degenerate_expression() throws ParseException {
         Token thetoken = null;
    thetoken = jj_consume_token(OTHERWISE);
            {if (true) return thetoken.image;}
    throw new Error("Missing return statement in function");
  }

  static final public String reservedString() throws ParseException {
         Token thetoken = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case PICSRULE:
      thetoken = jj_consume_token(PICSRULE);
      break;
    case POLICY:
      thetoken = jj_consume_token(POLICY);
      break;
    case EXPLAIN:
      thetoken = jj_consume_token(EXPLAIN);
      break;
    case REJECTURL:
      thetoken = jj_consume_token(REJECTURL);
      break;
    case ACCEPTURL:
      thetoken = jj_consume_token(ACCEPTURL);
      break;
    case REJECTIF:
      thetoken = jj_consume_token(REJECTIF);
      break;
    case REJECTUNLESS:
      thetoken = jj_consume_token(REJECTUNLESS);
      break;
    case ACCEPTIF:
      thetoken = jj_consume_token(ACCEPTIF);
      break;
    case ACCEPTUNLESS:
      thetoken = jj_consume_token(ACCEPTUNLESS);
      break;
    case NAME:
      thetoken = jj_consume_token(NAME);
      break;
    case RULENAME:
      thetoken = jj_consume_token(RULENAME);
      break;
    case DESC:
      thetoken = jj_consume_token(DESC);
      break;
    case SOURCEURL:
      thetoken = jj_consume_token(SOURCEURL);
      break;
    case SOURCE:
      thetoken = jj_consume_token(SOURCE);
      break;
    case TOOL:
      thetoken = jj_consume_token(TOOL);
      break;
    case AUTHOR:
      thetoken = jj_consume_token(AUTHOR);
      break;
    case LASTMOD:
      thetoken = jj_consume_token(LASTMOD);
      break;
    case SERVICEINFO:
      thetoken = jj_consume_token(SERVICEINFO);
      break;
    case SHORTNAME:
      thetoken = jj_consume_token(SHORTNAME);
      break;
    case BUREAUURL:
      thetoken = jj_consume_token(BUREAUURL);
      break;
    case USEEM:
      thetoken = jj_consume_token(USEEM);
      break;
    case RATFILE:
      thetoken = jj_consume_token(RATFILE);
      break;
    case NOBUREAU:
      thetoken = jj_consume_token(NOBUREAU);
      break;
    case OPTEXT:
      thetoken = jj_consume_token(OPTEXT);
      break;
    case EXT_NAME:
      thetoken = jj_consume_token(EXT_NAME);
      break;
    case REQEXT:
      thetoken = jj_consume_token(REQEXT);
      break;
    case PASS:
      thetoken = jj_consume_token(PASS);
      break;
    case FAIL:
      thetoken = jj_consume_token(FAIL);
      break;
    case URL:
      thetoken = jj_consume_token(URL);
      break;
    case AND:
      thetoken = jj_consume_token(AND);
      break;
    case OR:
      thetoken = jj_consume_token(OR);
      break;
    case FTP:
      thetoken = jj_consume_token(FTP);
      break;
    case HTTP:
      thetoken = jj_consume_token(HTTP);
      break;
    case GOPHER:
      thetoken = jj_consume_token(GOPHER);
      break;
    case NNTP:
      thetoken = jj_consume_token(NNTP);
      break;
    case IRC:
      thetoken = jj_consume_token(IRC);
      break;
    case PROSPERO:
      thetoken = jj_consume_token(PROSPERO);
      break;
    case TELNET:
      thetoken = jj_consume_token(TELNET);
      break;
    case OTHERWISE:
      thetoken = jj_consume_token(OTHERWISE);
      break;
    case PATTERNS:
      thetoken = jj_consume_token(PATTERNS);
      break;
    default:
      jj_la1[110] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
             if (thetoken.specialToken!=null)
                 {if (true) return " "+thetoken.image;}
             else
                 {if (true) return thetoken.image;}
    throw new Error("Missing return statement in function");
  }

/* ISODate parsing productions */
  static final public String ISOyear() throws ParseException {
         Token token1 = null;
         Token token2 = null;
         Token token3 = null;
         Token token4 = null;
         String retval = new String("");
    token1 = jj_consume_token(DIGIT);
    token2 = jj_consume_token(DIGIT);
    token3 = jj_consume_token(DIGIT);
    token4 = jj_consume_token(DIGIT);
             retval+=token1.image;
             retval+=token2.image;
             retval+=token3.image;
             retval+=token4.image;
             {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  static final public String ISOmonth() throws ParseException {
         Token token1 = null;
         Token token2 = null;
         String retval = new String("");
    token1 = jj_consume_token(DIGIT);
    token2 = jj_consume_token(DIGIT);
             retval+=token1.image;
             retval+=token2.image;
             int month = Integer.valueOf(retval).intValue();
             if ((month>12) || (month<1)) {
                 {if (true) throw generateParseException();}
             }
             {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  static final public String ISOday() throws ParseException {
         Token token1 = null;
         Token token2 = null;
         String retval = new String("");
    token1 = jj_consume_token(DIGIT);
    token2 = jj_consume_token(DIGIT);
             retval+=token1.image;
             retval+=token2.image;
             int day = Integer.valueOf(retval).intValue();
             if ((day>31) || (day<1)) {
                 {if (true) throw generateParseException();}
             }
             {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  static final public String ISOhour() throws ParseException {
         Token token1 = null;
         Token token2 = null;
         String retval = new String("");
    token1 = jj_consume_token(DIGIT);
    token2 = jj_consume_token(DIGIT);
             retval+=token1.image;
             retval+=token2.image;
             int hour = Integer.valueOf(retval).intValue();
             if ((hour>23) || (hour<0)) {
                 {if (true) throw generateParseException();}
             }
             {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  static final public String ISOminute() throws ParseException {
         Token token1 = null;
         Token token2 = null;
         String retval = new String("");
    token1 = jj_consume_token(DIGIT);
    token2 = jj_consume_token(DIGIT);
             retval+=token1.image;
             retval+=token2.image;
             int minute = Integer.valueOf(retval).intValue();
             if ((minute>59) || (minute<0)) {
                 {if (true) throw generateParseException();}
             }
             {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  static final public String ISOtimezone() throws ParseException {
         Token token1 = null;
         Token token2 = null;
         Token token3 = null;
         Token token4 = null;
         String retval = new String("");
    token1 = jj_consume_token(DIGIT);
    token2 = jj_consume_token(DIGIT);
    token3 = jj_consume_token(DIGIT);
    token4 = jj_consume_token(DIGIT);
             retval+=token1.image;
             retval+=token2.image;
             retval+=token3.image;
             retval+=token4.image;
             {if (true) return retval;}
    throw new Error("Missing return statement in function");
  }

  static final private boolean jj_2_1(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_1();
    jj_save(0, xla);
    return retval;
  }

  static final private boolean jj_2_2(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_2();
    jj_save(1, xla);
    return retval;
  }

  static final private boolean jj_2_3(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_3();
    jj_save(2, xla);
    return retval;
  }

  static final private boolean jj_2_4(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_4();
    jj_save(3, xla);
    return retval;
  }

  static final private boolean jj_2_5(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_5();
    jj_save(4, xla);
    return retval;
  }

  static final private boolean jj_2_6(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_6();
    jj_save(5, xla);
    return retval;
  }

  static final private boolean jj_2_7(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_7();
    jj_save(6, xla);
    return retval;
  }

  static final private boolean jj_2_8(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_8();
    jj_save(7, xla);
    return retval;
  }

  static final private boolean jj_2_9(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_9();
    jj_save(8, xla);
    return retval;
  }

  static final private boolean jj_2_10(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_10();
    jj_save(9, xla);
    return retval;
  }

  static final private boolean jj_2_11(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_11();
    jj_save(10, xla);
    return retval;
  }

  static final private boolean jj_2_12(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_12();
    jj_save(11, xla);
    return retval;
  }

  static final private boolean jj_2_13(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_13();
    jj_save(12, xla);
    return retval;
  }

  static final private boolean jj_2_14(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_14();
    jj_save(13, xla);
    return retval;
  }

  static final private boolean jj_2_15(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_15();
    jj_save(14, xla);
    return retval;
  }

  static final private boolean jj_2_16(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_16();
    jj_save(15, xla);
    return retval;
  }

  static final private boolean jj_2_17(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_17();
    jj_save(16, xla);
    return retval;
  }

  static final private boolean jj_2_18(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_18();
    jj_save(17, xla);
    return retval;
  }

  static final private boolean jj_2_19(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_19();
    jj_save(18, xla);
    return retval;
  }

  static final private boolean jj_2_20(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_20();
    jj_save(19, xla);
    return retval;
  }

  static final private boolean jj_2_21(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_21();
    jj_save(20, xla);
    return retval;
  }

  static final private boolean jj_2_22(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_22();
    jj_save(21, xla);
    return retval;
  }

  static final private boolean jj_2_23(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_23();
    jj_save(22, xla);
    return retval;
  }

  static final private boolean jj_2_24(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_24();
    jj_save(23, xla);
    return retval;
  }

  static final private boolean jj_2_25(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_25();
    jj_save(24, xla);
    return retval;
  }

  static final private boolean jj_2_26(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_26();
    jj_save(25, xla);
    return retval;
  }

  static final private boolean jj_2_27(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_27();
    jj_save(26, xla);
    return retval;
  }

  static final private boolean jj_2_28(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_28();
    jj_save(27, xla);
    return retval;
  }

  static final private boolean jj_2_29(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_29();
    jj_save(28, xla);
    return retval;
  }

  static final private boolean jj_2_30(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_30();
    jj_save(29, xla);
    return retval;
  }

  static final private boolean jj_2_31(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_31();
    jj_save(30, xla);
    return retval;
  }

  static final private boolean jj_2_32(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_32();
    jj_save(31, xla);
    return retval;
  }

  static final private boolean jj_2_33(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_33();
    jj_save(32, xla);
    return retval;
  }

  static final private boolean jj_2_34(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_34();
    jj_save(33, xla);
    return retval;
  }

  static final private boolean jj_2_35(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_35();
    jj_save(34, xla);
    return retval;
  }

  static final private boolean jj_2_36(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_36();
    jj_save(35, xla);
    return retval;
  }

  static final private boolean jj_2_37(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_37();
    jj_save(36, xla);
    return retval;
  }

  static final private boolean jj_2_38(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_38();
    jj_save(37, xla);
    return retval;
  }

  static final private boolean jj_2_39(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_39();
    jj_save(38, xla);
    return retval;
  }

  static final private boolean jj_2_40(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_40();
    jj_save(39, xla);
    return retval;
  }

  static final private boolean jj_2_41(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_41();
    jj_save(40, xla);
    return retval;
  }

  static final private boolean jj_2_42(int xla) {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    boolean retval = !jj_3_42();
    jj_save(41, xla);
    return retval;
  }

  static final private boolean jj_3R_311() {
    if (jj_scan_token(PLUS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_308() {
    if (jj_scan_token(DOLLAR)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_305() {
    if (jj_scan_token(R_BRACE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_302() {
    if (jj_scan_token(NATIONAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_299() {
    if (jj_scan_token(LOWALPHA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_150() {
    if (jj_scan_token(POUND)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_188() {
    if (jj_3R_258()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_259()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_255() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_280()) {
    jj_scanpos = xsp;
    if (jj_3R_281()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_280() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_299()) {
    jj_scanpos = xsp;
    if (jj_3R_300()) {
    jj_scanpos = xsp;
    if (jj_3R_301()) {
    jj_scanpos = xsp;
    if (jj_3R_302()) {
    jj_scanpos = xsp;
    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()) {
    jj_scanpos = xsp;
    if (jj_3R_311()) {
    jj_scanpos = xsp;
    if (jj_3R_312()) {
    jj_scanpos = xsp;
    if (jj_3R_313()) {
    jj_scanpos = xsp;
    if (jj_3R_314()) {
    jj_scanpos = xsp;
    if (jj_3R_315()) {
    jj_scanpos = xsp;
    if (jj_3R_316()) {
    jj_scanpos = xsp;
    if (jj_3R_317()) {
    jj_scanpos = xsp;
    if (jj_3R_318()) {
    jj_scanpos = xsp;
    if (jj_3R_319()) {
    jj_scanpos = xsp;
    if (jj_3R_320()) {
    jj_scanpos = xsp;
    if (jj_3R_321()) {
    jj_scanpos = xsp;
    if (jj_3R_322()) {
    jj_scanpos = xsp;
    if (jj_3R_323()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_147() {
    if (jj_scan_token(R_BRAK)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_144() {
    if (jj_scan_token(STAR)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_135() {
    if (jj_scan_token(MINUS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_132() {
    if (jj_scan_token(L_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_129() {
    if (jj_scan_token(TILDE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_142() {
    if (jj_scan_token(EQUAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_138() {
    if (jj_scan_token(PLUS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_126() {
    if (jj_scan_token(HIGHALPHA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_98() {
    if (jj_scan_token(DOT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_187()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_188()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_91() {
    if (jj_3R_152()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_413() {
    if (jj_scan_token(L_ANGLE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_417() {
    if (jj_3R_254()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_436() {
    if (jj_scan_token(DIGIT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_398() {
    if (jj_scan_token(DOLLAR)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_389() {
    if (jj_scan_token(DIGIT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_60() {
    if (jj_scan_token(L_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_97()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_98()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(R_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_410() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_401() {
    if (jj_scan_token(DOT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_395() {
    if (jj_scan_token(SLASH)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_407() {
    if (jj_scan_token(EQUAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_392() {
    if (jj_scan_token(L_BRACE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_404() {
    if (jj_scan_token(QUES)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_42() {
    if (jj_3R_61()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_439() {
    if (jj_scan_token(DOT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_149() {
    if (jj_scan_token(R_ANGLE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_146() {
    if (jj_scan_token(L_BRAK)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_41() {
    if (jj_3R_60()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_143() {
    if (jj_scan_token(BANG)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_141() {
    if (jj_scan_token(AMP)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_137() {
    if (jj_scan_token(DOT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_192() {
    if (jj_3R_261()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_134() {
    if (jj_scan_token(DOLLAR)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_191() {
    if (jj_3R_260()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_131() {
    if (jj_scan_token(R_BRACE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_128() {
    if (jj_scan_token(NATIONAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_190() {
    if (jj_3R_61()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_415() {
    if (jj_scan_token(POUND)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_125() {
    if (jj_scan_token(LOWALPHA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_90() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_125()) {
    jj_scanpos = xsp;
    if (jj_3R_126()) {
    jj_scanpos = xsp;
    if (jj_3R_127()) {
    jj_scanpos = xsp;
    if (jj_3R_128()) {
    jj_scanpos = xsp;
    if (jj_3R_129()) {
    jj_scanpos = xsp;
    if (jj_3R_130()) {
    jj_scanpos = xsp;
    if (jj_3R_131()) {
    jj_scanpos = xsp;
    if (jj_3R_132()) {
    jj_scanpos = xsp;
    if (jj_3R_133()) {
    jj_scanpos = xsp;
    if (jj_3R_134()) {
    jj_scanpos = xsp;
    if (jj_3R_135()) {
    jj_scanpos = xsp;
    if (jj_3R_136()) {
    jj_scanpos = xsp;
    if (jj_3R_137()) {
    jj_scanpos = xsp;
    if (jj_3R_138()) {
    jj_scanpos = xsp;
    if (jj_3R_139()) {
    jj_scanpos = xsp;
    if (jj_3R_140()) {
    jj_scanpos = xsp;
    if (jj_3R_141()) {
    jj_scanpos = xsp;
    if (jj_3R_142()) {
    jj_scanpos = xsp;
    if (jj_3R_143()) {
    jj_scanpos = xsp;
    if (jj_3R_144()) {
    jj_scanpos = xsp;
    if (jj_3R_145()) {
    jj_scanpos = xsp;
    if (jj_3R_146()) {
    jj_scanpos = xsp;
    if (jj_3R_147()) {
    jj_scanpos = xsp;
    if (jj_3R_148()) {
    jj_scanpos = xsp;
    if (jj_3R_149()) {
    jj_scanpos = xsp;
    if (jj_3R_150()) {
    jj_scanpos = xsp;
    if (jj_3R_151()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_56() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_90()) {
    jj_scanpos = xsp;
    if (jj_3R_91()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_412() {
    if (jj_scan_token(R_BRAK)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_189() {
    if (jj_3R_60()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_99() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_189()) {
    jj_scanpos = xsp;
    if (jj_3R_190()) {
    jj_scanpos = xsp;
    if (jj_3R_191()) {
    jj_scanpos = xsp;
    if (jj_3R_192()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_409() {
    if (jj_scan_token(STAR)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_406() {
    if (jj_scan_token(AMP)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_397() {
    if (jj_scan_token(R_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_403() {
    if (jj_scan_token(SEMI)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_400() {
    if (jj_scan_token(USCORE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_394() {
    if (jj_scan_token(ATSIGN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_391() {
    if (jj_scan_token(TILDE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_435() {
    if (jj_scan_token(HIGHALPHA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_388() {
    if (jj_scan_token(HIGHALPHA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_438() {
    if (jj_scan_token(MINUS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_416() {
    if (jj_3R_152()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_335() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_416()) {
    jj_scanpos = xsp;
    if (jj_3R_417()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_414() {
    if (jj_scan_token(R_ANGLE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_411() {
    if (jj_scan_token(L_BRAK)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_408() {
    if (jj_scan_token(BANG)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_405() {
    if (jj_scan_token(COLON)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_402() {
    if (jj_scan_token(PLUS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_399() {
    if (jj_scan_token(MINUS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_440() {
    if (jj_3R_152()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_396() {
    if (jj_scan_token(L_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_437() {
    if (jj_scan_token(PLUS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_393() {
    if (jj_scan_token(R_BRACE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_390() {
    if (jj_scan_token(NATIONAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_434() {
    if (jj_scan_token(LOWALPHA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_430() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_434()) {
    jj_scanpos = xsp;
    if (jj_3R_435()) {
    jj_scanpos = xsp;
    if (jj_3R_436()) {
    jj_scanpos = xsp;
    if (jj_3R_437()) {
    jj_scanpos = xsp;
    if (jj_3R_438()) {
    jj_scanpos = xsp;
    if (jj_3R_439()) {
    jj_scanpos = xsp;
    if (jj_3R_440()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_387() {
    if (jj_scan_token(LOWALPHA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_334() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_387()) {
    jj_scanpos = xsp;
    if (jj_3R_388()) {
    jj_scanpos = xsp;
    if (jj_3R_389()) {
    jj_scanpos = xsp;
    if (jj_3R_390()) {
    jj_scanpos = xsp;
    if (jj_3R_391()) {
    jj_scanpos = xsp;
    if (jj_3R_392()) {
    jj_scanpos = xsp;
    if (jj_3R_393()) {
    jj_scanpos = xsp;
    if (jj_3R_394()) {
    jj_scanpos = xsp;
    if (jj_3R_395()) {
    jj_scanpos = xsp;
    if (jj_3R_396()) {
    jj_scanpos = xsp;
    if (jj_3R_397()) {
    jj_scanpos = xsp;
    if (jj_3R_398()) {
    jj_scanpos = xsp;
    if (jj_3R_399()) {
    jj_scanpos = xsp;
    if (jj_3R_400()) {
    jj_scanpos = xsp;
    if (jj_3R_401()) {
    jj_scanpos = xsp;
    if (jj_3R_402()) {
    jj_scanpos = xsp;
    if (jj_3R_403()) {
    jj_scanpos = xsp;
    if (jj_3R_404()) {
    jj_scanpos = xsp;
    if (jj_3R_405()) {
    jj_scanpos = xsp;
    if (jj_3R_406()) {
    jj_scanpos = xsp;
    if (jj_3R_407()) {
    jj_scanpos = xsp;
    if (jj_3R_408()) {
    jj_scanpos = xsp;
    if (jj_3R_409()) {
    jj_scanpos = xsp;
    if (jj_3R_410()) {
    jj_scanpos = xsp;
    if (jj_3R_411()) {
    jj_scanpos = xsp;
    if (jj_3R_412()) {
    jj_scanpos = xsp;
    if (jj_3R_413()) {
    jj_scanpos = xsp;
    if (jj_3R_414()) {
    jj_scanpos = xsp;
    if (jj_3R_415()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_293() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_334()) {
    jj_scanpos = xsp;
    if (jj_3R_335()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_423() {
    if (jj_3R_430()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_386() {
    Token xsp;
    if (jj_3R_423()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_423()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_269() {
    if (jj_3R_293()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_268() {
    if (jj_scan_token(DQUOTE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_196() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_268()) {
    jj_scanpos = xsp;
    if (jj_3R_269()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_385() {
    if (jj_scan_token(STAR)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_333() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_385()) {
    jj_scanpos = xsp;
    if (jj_3R_386()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_267() {
    if (jj_3R_293()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_266() {
    if (jj_scan_token(SQUOTE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_40() {
    if (jj_3R_59()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_195() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_266()) {
    jj_scanpos = xsp;
    if (jj_3R_267()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_382() {
    if (jj_scan_token(HIGHALPHA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_381() {
    if (jj_scan_token(LOWALPHA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_380() {
    if (jj_scan_token(DIGIT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_328() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_380()) {
    jj_scanpos = xsp;
    if (jj_3R_381()) {
    jj_scanpos = xsp;
    if (jj_3R_382()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_422() {
    if (jj_3R_152()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_292() {
    if (jj_3R_333()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_421() {
    if (jj_scan_token(DOT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_420() {
    if (jj_3R_328()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_383() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_420()) {
    jj_scanpos = xsp;
    if (jj_3R_421()) {
    jj_scanpos = xsp;
    if (jj_3R_422()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_330() {
    Token xsp;
    if (jj_3R_383()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_383()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3_39() {
    if (jj_3R_59()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_277() {
    if (jj_scan_token(PERCENT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_212() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_277()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(STAR)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_106() {
    if (jj_3R_196()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_211() {
    if (jj_3R_59()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_68() {
    if (jj_scan_token(SQUOTE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    if (jj_3R_106()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_106()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    if (jj_scan_token(SQUOTE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_276() {
    if (jj_scan_token(PERCENT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_210() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_276()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(STAR)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_105() {
    if (jj_3R_195()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_122() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_210()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_211()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    xsp = jj_scanpos;
    if (jj_3R_212()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_67() {
    if (jj_scan_token(DQUOTE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    if (jj_3R_105()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_105()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    if (jj_scan_token(DQUOTE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_40() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_67()) {
    jj_scanpos = xsp;
    if (jj_3R_68()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_94() {
    if (jj_scan_token(STAR)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_384() {
    if (jj_3R_193()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_154() {
    if (jj_scan_token(DIGIT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_93() {
    Token xsp;
    if (jj_3R_154()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_154()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_58() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_93()) {
    jj_scanpos = xsp;
    if (jj_3R_94()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_332() {
    if (jj_scan_token(L_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    if (jj_3R_384()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_384()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_331() {
    if (jj_3R_40()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_291() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_331()) {
    jj_scanpos = xsp;
    if (jj_3R_332()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_209() {
    if (jj_scan_token(STAR)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_38() {
    if (jj_3R_58()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_290() {
    if (jj_3R_330()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_275() {
    if (jj_scan_token(MINUS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_58()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_208() {
    if (jj_3R_58()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_275()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_121() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_208()) {
    jj_scanpos = xsp;
    if (jj_3R_209()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_263() {
    if (jj_3R_291()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_193() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_262()) {
    jj_scanpos = xsp;
    if (jj_3R_263()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_262() {
    if (jj_3R_290()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_291()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_298() {
    if (jj_3R_152()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_363() {
    if (jj_scan_token(DOT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_362() {
    if (jj_scan_token(MINUS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_361() {
    if (jj_scan_token(DIGIT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_360() {
    if (jj_scan_token(HIGHALPHA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_359() {
    if (jj_scan_token(LOWALPHA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_297() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_359()) {
    jj_scanpos = xsp;
    if (jj_3R_360()) {
    jj_scanpos = xsp;
    if (jj_3R_361()) {
    jj_scanpos = xsp;
    if (jj_3R_362()) {
    jj_scanpos = xsp;
    if (jj_3R_363()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_274() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_297()) {
    jj_scanpos = xsp;
    if (jj_3R_298()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_101() {
    if (jj_3R_193()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_296() {
    if (jj_scan_token(PERCENT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_273() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_296()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(STAR)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_207() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_273()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_274()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_274()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3_33() {
    if (jj_3R_52()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_35() {
    if (jj_scan_token(REQEXT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(L_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    if (jj_3_33()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3_33()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_53() {
    if (jj_scan_token(EXT_NAME)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_81() {
    if (jj_3R_101()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_295() {
    if (jj_scan_token(DIGIT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_32() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_53()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_47()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_272() {
    if (jj_scan_token(DIGIT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_295()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_113() {
    if (jj_scan_token(LOWALPHA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_31() {
    if (jj_scan_token(SHORTNAME)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_40()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_52() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_31()) {
    jj_scanpos = xsp;
    if (jj_3_32()) {
    jj_scanpos = xsp;
    if (jj_3R_81()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_253() {
    if (jj_scan_token(DIGIT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_111() {
    if (jj_scan_token(LOWALPHA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_153() {
    if (jj_scan_token(DIGIT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_253()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_30() {
    if (jj_3R_52()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_34() {
    if (jj_scan_token(OPTEXT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(L_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    if (jj_3_30()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3_30()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_92() {
    if (jj_scan_token(DIGIT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_153()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_112() {
    if (jj_scan_token(HIGHALPHA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_78() {
    if (jj_scan_token(SQUOTE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_112()) {
    jj_scanpos = xsp;
    if (jj_3R_113()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_110() {
    if (jj_scan_token(HIGHALPHA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_77() {
    if (jj_scan_token(DQUOTE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_110()) {
    jj_scanpos = xsp;
    if (jj_3R_111()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_49() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_77()) {
    jj_scanpos = xsp;
    if (jj_3R_78()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_57() {
    if (jj_3R_92()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(DOT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_92()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(DOT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_92()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(DOT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_92()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_51() {
    if (jj_scan_token(NAME)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_76() {
    if (jj_3R_101()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_29() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_51()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_47()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_120() {
    if (jj_3R_207()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_37() {
    if (jj_3R_57()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_28() {
    if (jj_scan_token(NOBUREAU)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_50()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_206() {
    if (jj_scan_token(BANG)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_272()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_27() {
    if (jj_scan_token(RATFILE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_40()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_119() {
    if (jj_3R_57()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_206()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_84() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_119()) {
    jj_scanpos = xsp;
    if (jj_3R_120()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_201() {
    if (jj_scan_token(GOPHER)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_26() {
    if (jj_scan_token(USEEM)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_49()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_25() {
    if (jj_scan_token(BUREAUURL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_47()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_24() {
    if (jj_scan_token(SHORTNAME)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_40()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_48() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_24()) {
    jj_scanpos = xsp;
    if (jj_3_25()) {
    jj_scanpos = xsp;
    if (jj_3_26()) {
    jj_scanpos = xsp;
    if (jj_3_27()) {
    jj_scanpos = xsp;
    if (jj_3_28()) {
    jj_scanpos = xsp;
    if (jj_3_29()) {
    jj_scanpos = xsp;
    if (jj_3R_76()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_204() {
    if (jj_scan_token(PROSPERO)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_36() {
    if (jj_3R_56()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_200() {
    if (jj_scan_token(HTTP)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_23() {
    if (jj_3R_48()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_124() {
    if (jj_scan_token(PERCENT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_89() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_124()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(STAR)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_33() {
    if (jj_scan_token(SERVICEINFO)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(L_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    if (jj_3_23()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3_23()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_88() {
    if (jj_3R_56()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_203() {
    if (jj_scan_token(IRC)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_199() {
    if (jj_scan_token(FTP)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_123() {
    if (jj_scan_token(PERCENT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_87() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_123()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(STAR)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_55() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_87()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_88()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    xsp = jj_scanpos;
    if (jj_3R_89()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(ATSIGN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_205() {
    if (jj_scan_token(TELNET)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_202() {
    if (jj_scan_token(NNTP)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_198() {
    if (jj_scan_token(STAR)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_118() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_198()) {
    jj_scanpos = xsp;
    if (jj_3R_199()) {
    jj_scanpos = xsp;
    if (jj_3R_200()) {
    jj_scanpos = xsp;
    if (jj_3R_201()) {
    jj_scanpos = xsp;
    if (jj_3R_202()) {
    jj_scanpos = xsp;
    if (jj_3R_203()) {
    jj_scanpos = xsp;
    if (jj_3R_204()) {
    jj_scanpos = xsp;
    if (jj_3R_205()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_86() {
    if (jj_scan_token(SLASH)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_122()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_35() {
    if (jj_3R_55()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_85() {
    if (jj_scan_token(COLON)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_121()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_45() {
    if (jj_scan_token(DQUOTE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_73()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_46() {
    if (jj_scan_token(SOURCEURL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_83() {
    if (jj_3R_55()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_181() {
    if (jj_scan_token(L_ANGLE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_185() {
    if (jj_3R_254()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_166() {
    if (jj_scan_token(DOLLAR)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_70() {
    if (jj_3R_101()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_157() {
    if (jj_scan_token(DIGIT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_82() {
    if (jj_3R_118()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(COLON)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_163() {
    if (jj_scan_token(SLASH)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_169() {
    if (jj_scan_token(DOT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_178() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_54() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_82()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(SLASH)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(SLASH)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    xsp = jj_scanpos;
    if (jj_3R_83()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_84()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    xsp = jj_scanpos;
    if (jj_3R_85()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    xsp = jj_scanpos;
    if (jj_3R_86()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_160() {
    if (jj_scan_token(L_BRACE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_175() {
    if (jj_scan_token(EQUAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_172() {
    if (jj_scan_token(QUES)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_22() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_46()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_47()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_34() {
    if (jj_3R_54()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_18() {
    if (jj_3R_43()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_21() {
    if (jj_scan_token(LASTMOD)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_45()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_20() {
    if (jj_scan_token(AUTHOR)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_44()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_183() {
    if (jj_scan_token(POUND)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_264() {
    if (jj_3R_54()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_265() {
    if (jj_3R_292()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_180() {
    if (jj_scan_token(R_BRAK)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_194() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_264()) {
    jj_scanpos = xsp;
    if (jj_3R_265()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_19() {
    if (jj_scan_token(TOOL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_40()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_43() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_19()) {
    jj_scanpos = xsp;
    if (jj_3_20()) {
    jj_scanpos = xsp;
    if (jj_3_21()) {
    jj_scanpos = xsp;
    if (jj_3_22()) {
    jj_scanpos = xsp;
    if (jj_3R_70()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_174() {
    if (jj_scan_token(AMP)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_177() {
    if (jj_scan_token(STAR)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_165() {
    if (jj_scan_token(R_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_159() {
    if (jj_scan_token(TILDE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_162() {
    if (jj_scan_token(ATSIGN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_168() {
    if (jj_scan_token(USCORE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_171() {
    if (jj_scan_token(SEMI)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_42() {
    if (jj_scan_token(RULENAME)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_156() {
    if (jj_scan_token(HIGHALPHA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_184() {
    if (jj_3R_152()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_96() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_184()) {
    jj_scanpos = xsp;
    if (jj_3R_185()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_32() {
    if (jj_scan_token(SOURCE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(L_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    if (jj_3_18()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3_18()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_69() {
    if (jj_3R_101()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_15() {
    if (jj_3R_41()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_182() {
    if (jj_scan_token(R_ANGLE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_179() {
    if (jj_scan_token(L_BRAK)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_17() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_42()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_40()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_176() {
    if (jj_scan_token(BANG)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_173() {
    if (jj_scan_token(COLON)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_170() {
    if (jj_scan_token(PLUS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_167() {
    if (jj_scan_token(MINUS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_164() {
    if (jj_scan_token(L_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_161() {
    if (jj_scan_token(R_BRACE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_16() {
    if (jj_scan_token(DESC)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_40()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_41() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_16()) {
    jj_scanpos = xsp;
    if (jj_3_17()) {
    jj_scanpos = xsp;
    if (jj_3R_69()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_158() {
    if (jj_scan_token(NATIONAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_155() {
    if (jj_scan_token(LOWALPHA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_95() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_155()) {
    jj_scanpos = xsp;
    if (jj_3R_156()) {
    jj_scanpos = xsp;
    if (jj_3R_157()) {
    jj_scanpos = xsp;
    if (jj_3R_158()) {
    jj_scanpos = xsp;
    if (jj_3R_159()) {
    jj_scanpos = xsp;
    if (jj_3R_160()) {
    jj_scanpos = xsp;
    if (jj_3R_161()) {
    jj_scanpos = xsp;
    if (jj_3R_162()) {
    jj_scanpos = xsp;
    if (jj_3R_163()) {
    jj_scanpos = xsp;
    if (jj_3R_164()) {
    jj_scanpos = xsp;
    if (jj_3R_165()) {
    jj_scanpos = xsp;
    if (jj_3R_166()) {
    jj_scanpos = xsp;
    if (jj_3R_167()) {
    jj_scanpos = xsp;
    if (jj_3R_168()) {
    jj_scanpos = xsp;
    if (jj_3R_169()) {
    jj_scanpos = xsp;
    if (jj_3R_170()) {
    jj_scanpos = xsp;
    if (jj_3R_171()) {
    jj_scanpos = xsp;
    if (jj_3R_172()) {
    jj_scanpos = xsp;
    if (jj_3R_173()) {
    jj_scanpos = xsp;
    if (jj_3R_174()) {
    jj_scanpos = xsp;
    if (jj_3R_175()) {
    jj_scanpos = xsp;
    if (jj_3R_176()) {
    jj_scanpos = xsp;
    if (jj_3R_177()) {
    jj_scanpos = xsp;
    if (jj_3R_178()) {
    jj_scanpos = xsp;
    if (jj_3R_179()) {
    jj_scanpos = xsp;
    if (jj_3R_180()) {
    jj_scanpos = xsp;
    if (jj_3R_181()) {
    jj_scanpos = xsp;
    if (jj_3R_182()) {
    jj_scanpos = xsp;
    if (jj_3R_183()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_59() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_95()) {
    jj_scanpos = xsp;
    if (jj_3R_96()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_31() {
    if (jj_scan_token(NAME)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(L_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    if (jj_3_15()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3_15()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_102() {
    if (jj_scan_token(DQUOTE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_194()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_66() {
    if (jj_scan_token(SQUOTE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_99()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_103() {
    if (jj_scan_token(PATTERNS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_65() {
    if (jj_scan_token(DQUOTE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_99()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_38() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_65()) {
    jj_scanpos = xsp;
    if (jj_3R_66()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_39() {
    if (jj_scan_token(EXPLAIN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_104() {
    if (jj_3R_102()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_64() {
    if (jj_scan_token(L_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_103()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_104()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_104()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_245() {
    if (jj_scan_token(HTTP)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_62() {
    if (jj_3R_101()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_232() {
    if (jj_scan_token(BUREAUURL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_251() {
    if (jj_scan_token(OTHERWISE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_63() {
    if (jj_3R_102()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_37() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_63()) {
    jj_scanpos = xsp;
    if (jj_3R_64()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_238() {
    if (jj_scan_token(REQEXT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_14() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_39()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_40()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_248() {
    if (jj_scan_token(IRC)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_218() {
    if (jj_scan_token(REJECTIF)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_223() {
    if (jj_scan_token(RULENAME)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_235() {
    if (jj_scan_token(NOBUREAU)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_226() {
    if (jj_scan_token(SOURCE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_241() {
    if (jj_scan_token(URL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_13() {
    if (jj_scan_token(ACCEPTUNLESS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_38()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_229() {
    if (jj_scan_token(LASTMOD)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_244() {
    if (jj_scan_token(FTP)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_117() {
    if (jj_scan_token(FAIL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_215() {
    if (jj_scan_token(EXPLAIN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_12() {
    if (jj_scan_token(ACCEPTIF)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_38()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_115() {
    if (jj_scan_token(FAIL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_250() {
    if (jj_scan_token(TELNET)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_11() {
    if (jj_scan_token(REJECTUNLESS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_38()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_73() {
    if (jj_scan_token(DIGIT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_231() {
    if (jj_scan_token(SHORTNAME)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_247() {
    if (jj_scan_token(NNTP)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_222() {
    if (jj_scan_token(NAME)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_220() {
    if (jj_scan_token(ACCEPTIF)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_237() {
    if (jj_scan_token(EXT_NAME)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_240() {
    if (jj_scan_token(FAIL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_243() {
    if (jj_scan_token(OR)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_234() {
    if (jj_scan_token(RATFILE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_10() {
    if (jj_scan_token(REJECTIF)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_38()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_116() {
    if (jj_scan_token(PASS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_80() {
    if (jj_scan_token(SQUOTE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_116()) {
    jj_scanpos = xsp;
    if (jj_3R_117()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_217() {
    if (jj_scan_token(ACCEPTURL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_228() {
    if (jj_scan_token(AUTHOR)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_225() {
    if (jj_scan_token(SOURCEURL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_214() {
    if (jj_scan_token(POLICY)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_9() {
    if (jj_scan_token(ACCEPTURL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_37()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_114() {
    if (jj_scan_token(PASS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_79() {
    if (jj_scan_token(DQUOTE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_114()) {
    jj_scanpos = xsp;
    if (jj_3R_115()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_50() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_79()) {
    jj_scanpos = xsp;
    if (jj_3R_80()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_252() {
    if (jj_scan_token(PATTERNS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_249() {
    if (jj_scan_token(PROSPERO)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_8() {
    if (jj_scan_token(REJECTURL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_37()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_36() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_8()) {
    jj_scanpos = xsp;
    if (jj_3_9()) {
    jj_scanpos = xsp;
    if (jj_3_10()) {
    jj_scanpos = xsp;
    if (jj_3_11()) {
    jj_scanpos = xsp;
    if (jj_3_12()) {
    jj_scanpos = xsp;
    if (jj_3_13()) {
    jj_scanpos = xsp;
    if (jj_3_14()) {
    jj_scanpos = xsp;
    if (jj_3R_62()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_246() {
    if (jj_scan_token(GOPHER)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_242() {
    if (jj_scan_token(AND)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_239() {
    if (jj_scan_token(PASS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_236() {
    if (jj_scan_token(OPTEXT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_233() {
    if (jj_scan_token(USEEM)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_230() {
    if (jj_scan_token(SERVICEINFO)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_227() {
    if (jj_scan_token(TOOL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_224() {
    if (jj_scan_token(DESC)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_221() {
    if (jj_scan_token(ACCEPTUNLESS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_219() {
    if (jj_scan_token(REJECTUNLESS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_108() {
    if (jj_3R_196()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_72() {
    if (jj_scan_token(SQUOTE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    if (jj_3R_108()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_108()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_216() {
    if (jj_scan_token(REJECTURL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_7() {
    if (jj_3R_36()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_213() {
    if (jj_scan_token(PICSRULE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_152() {
    Token xsp;
    xsp = jj_scanpos;
    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()) {
    jj_scanpos = xsp;
    if (jj_3R_218()) {
    jj_scanpos = xsp;
    if (jj_3R_219()) {
    jj_scanpos = xsp;
    if (jj_3R_220()) {
    jj_scanpos = xsp;
    if (jj_3R_221()) {
    jj_scanpos = xsp;
    if (jj_3R_222()) {
    jj_scanpos = xsp;
    if (jj_3R_223()) {
    jj_scanpos = xsp;
    if (jj_3R_224()) {
    jj_scanpos = xsp;
    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()) {
    jj_scanpos = xsp;
    if (jj_3R_229()) {
    jj_scanpos = xsp;
    if (jj_3R_230()) {
    jj_scanpos = xsp;
    if (jj_3R_231()) {
    jj_scanpos = xsp;
    if (jj_3R_232()) {
    jj_scanpos = xsp;
    if (jj_3R_233()) {
    jj_scanpos = xsp;
    if (jj_3R_234()) {
    jj_scanpos = xsp;
    if (jj_3R_235()) {
    jj_scanpos = xsp;
    if (jj_3R_236()) {
    jj_scanpos = xsp;
    if (jj_3R_237()) {
    jj_scanpos = xsp;
    if (jj_3R_238()) {
    jj_scanpos = xsp;
    if (jj_3R_239()) {
    jj_scanpos = xsp;
    if (jj_3R_240()) {
    jj_scanpos = xsp;
    if (jj_3R_241()) {
    jj_scanpos = xsp;
    if (jj_3R_242()) {
    jj_scanpos = xsp;
    if (jj_3R_243()) {
    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()) {
    jj_scanpos = xsp;
    if (jj_3R_248()) {
    jj_scanpos = xsp;
    if (jj_3R_249()) {
    jj_scanpos = xsp;
    if (jj_3R_250()) {
    jj_scanpos = xsp;
    if (jj_3R_251()) {
    jj_scanpos = xsp;
    if (jj_3R_252()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_30() {
    if (jj_scan_token(POLICY)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(L_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    if (jj_3_7()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3_7()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_107() {
    if (jj_3R_195()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_71() {
    if (jj_scan_token(DQUOTE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    if (jj_3R_107()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_107()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_44() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_71()) {
    jj_scanpos = xsp;
    if (jj_3R_72()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_6() {
    if (jj_3R_35()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_261() {
    if (jj_scan_token(OTHERWISE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_5() {
    if (jj_3R_34()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_4() {
    if (jj_3R_33()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_3() {
    if (jj_3R_32()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_2() {
    if (jj_3R_31()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3_1() {
    if (jj_3R_30()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_279() {
    if (jj_scan_token(DIGIT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_289() {
    if (jj_scan_token(AND)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_99()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_260() {
    if (jj_scan_token(L_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_99()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    if (jj_3R_289()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_289()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    if (jj_scan_token(R_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_278() {
    if (jj_scan_token(DIGIT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_433() {
    if (jj_scan_token(HIGHALPHA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_100() {
    if (jj_scan_token(OR)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_99()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_432() {
    if (jj_scan_token(LOWALPHA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_431() {
    if (jj_scan_token(DIGIT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_424() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_431()) {
    jj_scanpos = xsp;
    if (jj_3R_432()) {
    jj_scanpos = xsp;
    if (jj_3R_433()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_61() {
    if (jj_scan_token(L_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_99()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    if (jj_3R_100()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_100()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    if (jj_scan_token(R_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_329() {
    if (jj_3R_328()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_288() {
    if (jj_scan_token(DOT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_329()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_418() {
    if (jj_scan_token(PERCENT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_424()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_424()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_287() {
    if (jj_3R_328()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_327() {
    if (jj_scan_token(EQUAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_286() {
    if (jj_scan_token(MINUS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_259() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_286()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_287()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    xsp = jj_scanpos;
    if (jj_3R_288()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_326() {
    if (jj_scan_token(EQUAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_338() {
    if (jj_scan_token(DIGIT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_285() {
    if (jj_scan_token(EQUAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_353() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_350() {
    if (jj_scan_token(POUND)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_341() {
    if (jj_scan_token(ATSIGN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_357() {
    if (jj_scan_token(R_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_347() {
    if (jj_scan_token(DOLLAR)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_344() {
    if (jj_scan_token(COLON)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_254() {
    if (jj_scan_token(PERCENT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_278()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_279()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_284() {
    if (jj_scan_token(R_ANGLE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_327()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_375() {
    if (jj_scan_token(ATSIGN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_366() {
    if (jj_scan_token(DOLLAR)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_258() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_283()) {
    jj_scanpos = xsp;
    if (jj_3R_284()) {
    jj_scanpos = xsp;
    if (jj_3R_285()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_283() {
    if (jj_scan_token(L_ANGLE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_326()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_369() {
    if (jj_scan_token(COLON)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_372() {
    if (jj_scan_token(BANG)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_349() {
    if (jj_scan_token(DOT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_379() {
    if (jj_3R_152()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_352() {
    if (jj_scan_token(STAR)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_337() {
    if (jj_scan_token(HIGHALPHA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_346() {
    if (jj_scan_token(EQUAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_343() {
    if (jj_scan_token(QUES)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_340() {
    if (jj_3R_418()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_358() {
    if (jj_3R_152()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_356() {
    if (jj_scan_token(L_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_429() {
    if (jj_scan_token(MINUS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_428() {
    if (jj_scan_token(PLUS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_427() {
    if (jj_scan_token(DIGIT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_426() {
    if (jj_scan_token(LOWALPHA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_425() {
    if (jj_scan_token(HIGHALPHA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_419() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_425()) {
    jj_scanpos = xsp;
    if (jj_3R_426()) {
    jj_scanpos = xsp;
    if (jj_3R_427()) {
    jj_scanpos = xsp;
    if (jj_3R_428()) {
    jj_scanpos = xsp;
    if (jj_3R_429()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_377() {
    if (jj_scan_token(USCORE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_365() {
    if (jj_scan_token(DOT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_374() {
    if (jj_scan_token(TILDE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_368() {
    if (jj_scan_token(SEMI)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_355() {
    if (jj_scan_token(NATIONAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_371() {
    if (jj_scan_token(QUES)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_354() {
    if (jj_scan_token(TILDE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_351() {
    if (jj_scan_token(BANG)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_348() {
    if (jj_scan_token(USCORE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_345() {
    if (jj_scan_token(AMP)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_378() {
    if (jj_3R_418()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_342() {
    if (jj_scan_token(SEMI)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_339() {
    if (jj_scan_token(MINUS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_325() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_378()) {
    jj_scanpos = xsp;
    if (jj_3R_379()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_336() {
    if (jj_scan_token(LOWALPHA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_294() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_336()) {
    jj_scanpos = xsp;
    if (jj_3R_337()) {
    jj_scanpos = xsp;
    if (jj_3R_338()) {
    jj_scanpos = xsp;
    if (jj_3R_339()) {
    jj_scanpos = xsp;
    if (jj_3R_340()) {
    jj_scanpos = xsp;
    if (jj_3R_341()) {
    jj_scanpos = xsp;
    if (jj_3R_342()) {
    jj_scanpos = xsp;
    if (jj_3R_343()) {
    jj_scanpos = xsp;
    if (jj_3R_344()) {
    jj_scanpos = xsp;
    if (jj_3R_345()) {
    jj_scanpos = xsp;
    if (jj_3R_346()) {
    jj_scanpos = xsp;
    if (jj_3R_347()) {
    jj_scanpos = xsp;
    if (jj_3R_348()) {
    jj_scanpos = xsp;
    if (jj_3R_349()) {
    jj_scanpos = xsp;
    if (jj_3R_350()) {
    jj_scanpos = xsp;
    if (jj_3R_351()) {
    jj_scanpos = xsp;
    if (jj_3R_352()) {
    jj_scanpos = xsp;
    if (jj_3R_353()) {
    jj_scanpos = xsp;
    if (jj_3R_354()) {
    jj_scanpos = xsp;
    if (jj_3R_355()) {
    jj_scanpos = xsp;
    if (jj_3R_356()) {
    jj_scanpos = xsp;
    if (jj_3R_357()) {
    jj_scanpos = xsp;
    if (jj_3R_358()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_376() {
    if (jj_scan_token(POUND)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_373() {
    if (jj_scan_token(STAR)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_370() {
    if (jj_scan_token(AMP)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_367() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_364() {
    if (jj_3R_419()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_324() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_364()) {
    jj_scanpos = xsp;
    if (jj_3R_365()) {
    jj_scanpos = xsp;
    if (jj_3R_366()) {
    jj_scanpos = xsp;
    if (jj_3R_367()) {
    jj_scanpos = xsp;
    if (jj_3R_368()) {
    jj_scanpos = xsp;
    if (jj_3R_369()) {
    jj_scanpos = xsp;
    if (jj_3R_370()) {
    jj_scanpos = xsp;
    if (jj_3R_371()) {
    jj_scanpos = xsp;
    if (jj_3R_372()) {
    jj_scanpos = xsp;
    if (jj_3R_373()) {
    jj_scanpos = xsp;
    if (jj_3R_374()) {
    jj_scanpos = xsp;
    if (jj_3R_375()) {
    jj_scanpos = xsp;
    if (jj_3R_376()) {
    jj_scanpos = xsp;
    if (jj_3R_377()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_282() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_324()) {
    jj_scanpos = xsp;
    if (jj_3R_325()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_271() {
    if (jj_3R_294()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_322() {
    if (jj_scan_token(POUND)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_301() {
    if (jj_scan_token(DIGIT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_197() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_270()) {
    jj_scanpos = xsp;
    if (jj_3R_271()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_270() {
    if (jj_scan_token(SLASH)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_307() {
    if (jj_scan_token(SLASH)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_109() {
    Token xsp;
    if (jj_3R_197()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_197()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_319() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_310() {
    if (jj_scan_token(USCORE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_304() {
    if (jj_scan_token(L_BRACE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_316() {
    if (jj_scan_token(EQUAL)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_313() {
    if (jj_scan_token(QUES)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_257() {
    if (jj_scan_token(SLASH)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_187()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_75() {
    if (jj_scan_token(SQUOTE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_109()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(SQUOTE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_256() {
    if (jj_3R_282()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_187() {
    Token xsp;
    if (jj_3R_256()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_256()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    xsp = jj_scanpos;
    if (jj_3R_257()) jj_scanpos = xsp;
    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_321() {
    if (jj_scan_token(R_BRAK)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_74() {
    if (jj_scan_token(DQUOTE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_3R_109()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    if (jj_scan_token(DQUOTE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_47() {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_74()) {
    jj_scanpos = xsp;
    if (jj_3R_75()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_140() {
    if (jj_scan_token(QUES)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_318() {
    if (jj_scan_token(STAR)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_315() {
    if (jj_scan_token(AMP)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_309() {
    if (jj_scan_token(MINUS)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_306() {
    if (jj_scan_token(ATSIGN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_303() {
    if (jj_scan_token(TILDE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_312() {
    if (jj_scan_token(SEMI)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_300() {
    if (jj_scan_token(HIGHALPHA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_151() {
    if (jj_scan_token(PERCENT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_281() {
    if (jj_3R_152()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_148() {
    if (jj_scan_token(L_ANGLE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_133() {
    if (jj_scan_token(R_PAREN)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_127() {
    if (jj_scan_token(DIGIT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_186() {
    if (jj_3R_255()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_97() {
    Token xsp;
    if (jj_3R_186()) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_186()) { jj_scanpos = xsp; break; }
      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    }
    return false;
  }

  static final private boolean jj_3R_136() {
    if (jj_scan_token(USCORE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_130() {
    if (jj_scan_token(L_BRACE)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_145() {
    if (jj_scan_token(COMMA)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_139() {
    if (jj_scan_token(SEMI)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_323() {
    if (jj_scan_token(PERCENT)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_320() {
    if (jj_scan_token(L_BRAK)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_317() {
    if (jj_scan_token(BANG)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static final private boolean jj_3R_314() {
    if (jj_scan_token(COLON)) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
    return false;
  }

  static private boolean jj_initialized_once = false;
  static public ProfileParserTokenManager token_source;
  static ASCII_CharStream jj_input_stream;
  static public Token token, jj_nt;
  static private int jj_ntk;
  static private Token jj_scanpos, jj_lastpos;
  static private int jj_la;
  static public boolean lookingAhead = false;
  static private boolean jj_semLA;
  static private int jj_gen;
  static final private int[] jj_la1 = new int[111];
  static final private int[] jj_la1_0 = {0x80,0x40228e0,0x40228e0,0x0,0x40228e0,0x4002000,0x0,0x40228e0,0x0,0x40228e0,0x60,0x48000,0x0,0x40228e0,0x60,0x60,0x4002000,0x0,0x40228e0,0x40228e0,0x40228e0,0x4002800,0xffffdfe0,0xfbffffe0,0x4002000,0x200e0,0x200e0,0xe0,0xffffdfe0,0xfbffffe0,0xfbffdfe0,0x0,0xfbffdfe0,0xfbdfd9e0,0xfbdfd9e0,0x3bfdc7e0,0x3bfdc7e0,0x4002000,0xbfbdfe0,0xbfbdfe0,0xbfbdbe0,0xe0,0xffffdfe0,0xfbffffe0,0x4002000,0x0,0x0,0x4002000,0xffffffe0,0xffffffe0,0x0,0x2000,0x2800,0xfbffdfe0,0x0,0xfbffdfe0,0x20680e0,0x2000000,0x200000,0x400,0x2000000,0x0,0x2000000,0x0,0x2000000,0x1000000,0x20280e0,0x80,0x80,0x80,0x0,0x2000000,0x280e0,0x280e0,0x280e0,0x8000,0x2000000,0x80,0x2000080,0x0,0x2000000,0x0,0x2000000,0x0,0x2000000,0x0,0x2000000,0x680e0,0x20680e0,0x680e0,0x2800000,0x800,0xc0800000,0x20000,0x3bfdc7e0,0xb7fc2e0,0x400,0xb7fc2e0,0x0,0xb7fc2e0,0x480e0,0x800000,0x800000,0xc0800000,0x8000,0xe0,0xe0,0x20000,0x0,0x0,0x0,};
  static final private int[] jj_la1_1 = {0x0,0xffffffe0,0xffffffe0,0x80,0xffffffe0,0x0,0x4000,0xffffffe0,0x20000,0xffffffe0,0x0,0x0,0x8000,0xffffffe0,0x0,0x0,0x0,0x20000000,0xffffffe0,0xffffffe0,0xffffffe0,0x0,0xffffffff,0xffffffff,0x0,0xffffffe0,0xffffffe0,0x0,0xffffffff,0xffffffff,0x1d,0xffffffe2,0xffffffff,0x1f,0xffffffff,0x1f,0xffffffff,0x0,0xfffffff3,0xfffffff3,0xfffffff3,0x0,0xffffffff,0xffffffff,0x0,0x80000000,0x80000000,0x0,0xfffffff7,0xfffffff7,0x0,0x0,0x0,0x1d,0xffffffe2,0xffffffff,0xffffffe0,0x0,0x0,0x0,0x0,0x2,0x2,0x2,0x2,0x0,0xffffffe2,0x0,0x0,0x0,0x2,0x2,0x0,0xffffffe0,0xffffffe0,0x0,0x0,0x0,0x0,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0xffffffe0,0xffffffe0,0xffffffe0,0x10,0x0,0x0,0x0,0xffffffff,0xfffffff3,0x0,0x11,0xffffffe2,0xfffffff3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffffe0,};
  static final private int[] jj_la1_2 = {0x0,0x1fff,0x1fff,0x0,0x1fff,0x0,0x0,0x1fff,0x0,0x1fff,0x0,0x0,0x0,0x1fff,0x0,0x0,0x0,0x0,0x1fff,0x1fff,0x1fff,0x0,0x1fff,0x1fff,0x0,0x1fff,0x1fff,0x0,0x1fff,0x1fff,0x0,0x1fff,0x1fff,0x0,0x1fff,0x0,0x1fff,0x0,0x1fff,0x1fff,0x1fff,0x0,0x1fff,0x1fff,0x0,0x1,0x1,0x0,0x1fff,0x1fff,0x1000,0x0,0x0,0x0,0x1fff,0x1fff,0x1fff,0xfe0,0x0,0x0,0xfe0,0x0,0x0,0x0,0x0,0x0,0x1fff,0x0,0x0,0x0,0x0,0x0,0x0,0x1fff,0x1fff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1fff,0x1fff,0x1fff,0x0,0x10,0x0,0x0,0x1fff,0x1fff,0x0,0x0,0x1fff,0x1fff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x4,0x1fff,};
  static final private JJProfileParserCalls[] jj_2_rtns = new JJProfileParserCalls[42];
  static private boolean jj_rescan = false;
  static private int jj_gc = 0;

  public ProfileParser(java.io.InputStream stream) {
    if (jj_initialized_once) {
      System.out.println("ERROR: Second call to constructor of static parser.  You must");
      System.out.println("       either use ReInit() or set the JavaCC option STATIC to false");
      System.out.println("       during parser generation.");
      throw new Error();
    }
    jj_initialized_once = true;
    jj_input_stream = new ASCII_CharStream(stream, 1, 1);
    token_source = new ProfileParserTokenManager(jj_input_stream);
    token = new Token();
    jj_ntk = -1;
    jj_gen = 0;
    for (int i = 0; i < 111; i++) jj_la1[i] = -1;
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJProfileParserCalls();
  }

  static public void ReInit(java.io.InputStream stream) {
    jj_input_stream.ReInit(stream, 1, 1);
    token_source.ReInit(jj_input_stream);
    token = new Token();
    jj_ntk = -1;
    jjtree.reset();
    jj_gen = 0;
    for (int i = 0; i < 111; i++) jj_la1[i] = -1;
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJProfileParserCalls();
  }

  public ProfileParser(ProfileParserTokenManager tm) {
    if (jj_initialized_once) {
      System.out.println("ERROR: Second call to constructor of static parser.  You must");
      System.out.println("       either use ReInit() or set the JavaCC option STATIC to false");
      System.out.println("       during parser generation.");
      throw new Error();
    }
    jj_initialized_once = true;
    token_source = tm;
    token = new Token();
    jj_ntk = -1;
    jj_gen = 0;
    for (int i = 0; i < 111; i++) jj_la1[i] = -1;
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJProfileParserCalls();
  }

  public void ReInit(ProfileParserTokenManager tm) {
    token_source = tm;
    token = new Token();
    jj_ntk = -1;
    jjtree.reset();
    jj_gen = 0;
    for (int i = 0; i < 111; i++) jj_la1[i] = -1;
    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJProfileParserCalls();
  }

  static final private 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++) {
          JJProfileParserCalls 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();
  }

  static final private boolean jj_scan_token(int kind) {
    if (jj_scanpos == jj_lastpos) {
      jj_la--;
      if (jj_scanpos.next == null) {
        jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
      } else {
        jj_lastpos = jj_scanpos = jj_scanpos.next;
      }
    } else {
      jj_scanpos = jj_scanpos.next;
    }
    if (jj_rescan) {
      int i = 0; Token tok = token;
      while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
      if (tok != null) jj_add_error_token(kind, i);
    }
    return (jj_scanpos.kind != kind);
  }

  static final public Token getNextToken() {
    if (token.next != null) token = token.next;
    else token = token.next = token_source.getNextToken();
    jj_ntk = -1;
    jj_gen++;
    return token;
  }

  static final public Token getToken(int index) {
    Token t = lookingAhead ? jj_scanpos : token;
    for (int i = 0; i < index; i++) {
      if (t.next != null) t = t.next;
      else t = t.next = token_source.getNextToken();
    }
    return t;
  }

  static final private int jj_ntk() {
    if ((jj_nt=token.next) == null)
      return (jj_ntk = (token.next=token_source.getNextToken()).kind);
    else
      return (jj_ntk = jj_nt.kind);
  }

  static private java.util.Vector jj_expentries = new java.util.Vector();
  static private int[] jj_expentry;
  static private int jj_kind = -1;
  static private int[] jj_lasttokens = new int[100];
  static private int jj_endpos;

  static private void jj_add_error_token(int kind, int pos) {
    if (pos >= 100) return;
    if (pos == jj_endpos + 1) {
      jj_lasttokens[jj_endpos++] = kind;
    } else if (jj_endpos != 0) {
      jj_expentry = new int[jj_endpos];
      for (int i = 0; i < jj_endpos; i++) {
        jj_expentry[i] = jj_lasttokens[i];
      }
      boolean exists = false;
      for (java.util.Enumeration enum = jj_expentries.elements(); enum.hasMoreElements();) {
        int[] oldentry = (int[])(enum.nextElement());
        if (oldentry.length == jj_expentry.length) {
          exists = true;
          for (int i = 0; i < jj_expentry.length; i++) {
            if (oldentry[i] != jj_expentry[i]) {
              exists = false;
              break;
            }
          }
          if (exists) break;
        }
      }
      if (!exists) jj_expentries.addElement(jj_expentry);
      if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
    }
  }

  static final public ParseException generateParseException() {
    jj_expentries.removeAllElements();
    boolean[] la1tokens = new boolean[77];
    for (int i = 0; i < 77; i++) {
      la1tokens[i] = false;
    }
    if (jj_kind >= 0) {
      la1tokens[jj_kind] = true;
      jj_kind = -1;
    }
    for (int i = 0; i < 111; i++) {
      if (jj_la1[i] == jj_gen) {
        for (int j = 0; j < 32; j++) {
          if ((jj_la1_0[i] & (1<<j)) != 0) {
            la1tokens[j] = true;
          }
          if ((jj_la1_1[i] & (1<<j)) != 0) {
            la1tokens[32+j] = true;
          }
          if ((jj_la1_2[i] & (1<<j)) != 0) {
            la1tokens[64+j] = true;
          }
        }
      }
    }
    for (int i = 0; i < 77; i++) {
      if (la1tokens[i]) {
        jj_expentry = new int[1];
        jj_expentry[0] = i;
        jj_expentries.addElement(jj_expentry);
      }
    }
    jj_endpos = 0;
    jj_rescan_token();
    jj_add_error_token(0, 0);
    int[][] exptokseq = new int[jj_expentries.size()][];
    for (int i = 0; i < jj_expentries.size(); i++) {
      exptokseq[i] = (int[])jj_expentries.elementAt(i);
    }
    return new ParseException(token, exptokseq, tokenImage);
  }

  static final public void enable_tracing() {
  }

  static final public void disable_tracing() {
  }

  static final private void jj_rescan_token() {
    jj_rescan = true;
    for (int i = 0; i < 42; i++) {
      JJProfileParserCalls p = jj_2_rtns[i];
      do {
        if (p.gen > jj_gen) {
          jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
          switch (i) {
            case 0: jj_3_1(); break;
            case 1: jj_3_2(); break;
            case 2: jj_3_3(); break;
            case 3: jj_3_4(); break;
            case 4: jj_3_5(); break;
            case 5: jj_3_6(); break;
            case 6: jj_3_7(); break;
            case 7: jj_3_8(); break;
            case 8: jj_3_9(); break;
            case 9: jj_3_10(); break;
            case 10: jj_3_11(); break;
            case 11: jj_3_12(); break;
            case 12: jj_3_13(); break;
            case 13: jj_3_14(); break;
            case 14: jj_3_15(); break;
            case 15: jj_3_16(); break;
            case 16: jj_3_17(); break;
            case 17: jj_3_18(); break;
            case 18: jj_3_19(); break;
            case 19: jj_3_20(); break;
            case 20: jj_3_21(); break;
            case 21: jj_3_22(); break;
            case 22: jj_3_23(); break;
            case 23: jj_3_24(); break;
            case 24: jj_3_25(); break;
            case 25: jj_3_26(); break;
            case 26: jj_3_27(); break;
            case 27: jj_3_28(); break;
            case 28: jj_3_29(); break;
            case 29: jj_3_30(); break;
            case 30: jj_3_31(); break;
            case 31: jj_3_32(); break;
            case 32: jj_3_33(); break;
            case 33: jj_3_34(); break;
            case 34: jj_3_35(); break;
            case 35: jj_3_36(); break;
            case 36: jj_3_37(); break;
            case 37: jj_3_38(); break;
            case 38: jj_3_39(); break;
            case 39: jj_3_40(); break;
            case 40: jj_3_41(); break;
            case 41: jj_3_42(); break;
          }
        }
        p = p.next;
      } while (p != null);
    }
    jj_rescan = false;
  }

  static final private void jj_save(int index, int xla) {
    JJProfileParserCalls p = jj_2_rtns[index];
    while (p.gen > jj_gen) {
      if (p.next == null) { p = p.next = new JJProfileParserCalls(); break; }
      p = p.next;
    }
    p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
  }

}

final class JJProfileParserCalls {
  int gen;
  Token first;
  int arg;
  JJProfileParserCalls next;
}
