code: public static List<QueryExprMeta> parse(String expression) {
          QueryParser parser = parser(tokens(expression));
          try {
              return parse(parser);
          } catch (ParseCancellationException | RecognitionException e) {
              RecognitionException err;
              if (e instanceof ParseCancellationException) {
                  err = (RecognitionException) e.getCause();
              } else {
                  err = (RecognitionException) e;
              }
              throw new QuerySyntaxException(
                      Messages.get("dsl.parse.err", err.getOffendingToken().getCharPositionInLine()),
                      e
              );
          }
      }
docs: <p>parse.</p>
  
  @param expression a {@link java.lang.String} object.
  @return a {@link java.util.List} object.