code: public CommonTree parse(final CommonTokenStream tokens)
              throws RecognizerException {
          if (_log.isDebugEnabled()) {
              _log.debug("3. Parsing tokens: {}", tokens.toString());
          }
          try {
              CobolStructureParser parser = new CobolStructureParserImpl(tokens,
                      getErrorHandler());
              cobdata_return parserResult = parser.cobdata();
              if (parser.getNumberOfSyntaxErrors() != 0 || parserResult == null) {
                  throw (new RecognizerException("Parsing failed. "
                          + parser.getNumberOfSyntaxErrors() + " syntax errors."
                          + " Last error was "
                          + getErrorHistory().get(getErrorHistory().size() - 1)));
              }
              return (CommonTree) parserResult.getTree();
          } catch (RecognitionException e) {
              throw (new RecognizerException(e));
          }
      }
docs: Apply Parser to produce an abstract syntax tree from a token stream.
  
  @param tokens the stream token produced by lexer
  @return an antlr abstract syntax tree
  @throws RecognizerException if source contains unsupported statements