code: final public void wimexpr() throws ParseException, AttributeNotSupportedException {
          switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
              case SLASH_SLASH:
                  jj_consume_token(SLASH_SLASH);
                  jj_consume_token(ENTITIES);
                  if (jj_2_1(2147483647)) {
                      predefinedLocPredicate();
                  } else {
                      switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                          case 4:
                              locOrEntityTypeExpr();
                              break;
                          default:
                              jj_la1[0] = jj_gen;
                              jj_consume_token(-1);
                              throw new ParseException();
                      }
                  }
                  break;
              case 2:
              case 7:
                  if (jj_2_2(2147483647)) {
                      predefinedPredicate();
                  } else {
                      switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                          case 7:
                              orEntityTypeExpr();
                              break;
                          default:
                              jj_la1[1] = jj_gen;
                              jj_consume_token(-1);
                              throw new ParseException();
                      }
                  }
                  break;
              default:
                  jj_la1[2] = jj_gen;
                  jj_consume_token(-1);
                  throw new ParseException();
          }
      }
docs: /*
  void noun() : { Token t; } { t=<NAME> { checkNoun(t.image); } }