final public void LetClause()

in jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/query/xpath/XPath.java [2433:2554]


  final public void LetClause() throws ParseException {
 /*@bgen(jjtree) LetClause */
  SimpleNode jjtn000 = new SimpleNode(this, JJTLETCLAUSE);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      jj_consume_token(LetVariable);
                 SimpleNode jjtn001 = new SimpleNode(this, JJTLETVARIABLE);
                 boolean jjtc001 = true;
                 jjtree.openNodeScope(jjtn001);
      try {
                 jjtree.closeNodeScope(jjtn001,  true);
                 jjtc001 = false;
                jjtn001.processToken(token);
      } finally {
                 if (jjtc001) {
                   jjtree.closeNodeScope(jjtn001,  true);
                 }
      }
      jj_consume_token(VarName);
                                                                            SimpleNode jjtn002 = new SimpleNode(this, JJTVARNAME);
                                                                            boolean jjtc002 = true;
                                                                            jjtree.openNodeScope(jjtn002);
      try {
                                                                            jjtree.closeNodeScope(jjtn002,  true);
                                                                            jjtc002 = false;
                                                        jjtn002.processToken(token);
      } finally {
                                                                            if (jjtc002) {
                                                                              jjtree.closeNodeScope(jjtn002,  true);
                                                                            }
      }
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case As:
        TypeDeclaration();
        break;
      default:
        jj_la1[43] = jj_gen;
        ;
      }
      jj_consume_token(ColonEquals);
                                                                                                                                                           SimpleNode jjtn003 = new SimpleNode(this, JJTCOLONEQUALS);
                                                                                                                                                           boolean jjtc003 = true;
                                                                                                                                                           jjtree.openNodeScope(jjtn003);
      try {
                                                                                                                                                           jjtree.closeNodeScope(jjtn003,  true);
                                                                                                                                                           jjtc003 = false;
                                                                                                                        jjtn003.processToken(token);
      } finally {
                                                                                                                                                           if (jjtc003) {
                                                                                                                                                             jjtree.closeNodeScope(jjtn003,  true);
                                                                                                                                                           }
      }
      ExprSingle();
      label_11:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case Comma:
          ;
          break;
        default:
          jj_la1[44] = jj_gen;
          break label_11;
        }
        jj_consume_token(Comma);
        jj_consume_token(VariableIndicator);
        jj_consume_token(VarName);
                                                                                                                                                                                                                                                                SimpleNode jjtn004 = new SimpleNode(this, JJTVARNAME);
                                                                                                                                                                                                                                                                boolean jjtc004 = true;
                                                                                                                                                                                                                                                                jjtree.openNodeScope(jjtn004);
        try {
                                                                                                                                                                                                                                                                jjtree.closeNodeScope(jjtn004,  true);
                                                                                                                                                                                                                                                                jjtc004 = false;
                                                                                                                                                                                                          jjtn004.processToken(token);
        } finally {
                                                                                                                                                                                                                                                                if (jjtc004) {
                                                                                                                                                                                                                                                                  jjtree.closeNodeScope(jjtn004,  true);
                                                                                                                                                                                                                                                                }
        }
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case As:
          TypeDeclaration();
          break;
        default:
          jj_la1[45] = jj_gen;
          ;
        }
        jj_consume_token(ColonEquals);
                                                                                                                                                                                                                                                                                                                                               SimpleNode jjtn005 = new SimpleNode(this, JJTCOLONEQUALS);
                                                                                                                                                                                                                                                                                                                                               boolean jjtc005 = true;
                                                                                                                                                                                                                                                                                                                                               jjtree.openNodeScope(jjtn005);
        try {
                                                                                                                                                                                                                                                                                                                                               jjtree.closeNodeScope(jjtn005,  true);
                                                                                                                                                                                                                                                                                                                                               jjtc005 = false;
                                                                                                                                                                                                                                                                          jjtn005.processToken(token);
        } finally {
                                                                                                                                                                                                                                                                                                                                               if (jjtc005) {
                                                                                                                                                                                                                                                                                                                                                 jjtree.closeNodeScope(jjtn005,  true);
                                                                                                                                                                                                                                                                                                                                               }
        }
        ExprSingle();
      }
    } catch (Throwable jjte000) {
    if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    if (jjte000 instanceof RuntimeException) {
      {if (true) throw (RuntimeException)jjte000;}
    }
    if (jjte000 instanceof ParseException) {
      {if (true) throw (ParseException)jjte000;}
    }
    {if (true) throw (Error)jjte000;}
    } finally {
    if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
    }
  }