code: public void parse() throws CompilationFailedException {
          if (this.phase > Phases.PARSING) {
              throw new GroovyBugError("parsing is already complete");
          }
  
          if (this.phase == Phases.INITIALIZATION) {
              nextPhase();
          }
  
          //
          // Create a reader on the source and run the parser.
  
          Reader reader = null;
          try {
              reader = source.getReader();
  
              // let's recreate the parser each time as it tends to keep around state
              parserPlugin = getConfiguration().getPluginFactory().createParserPlugin();
  
              cst = parserPlugin.parseCST(this, reader);
  
              reader.close();
  
          }
          catch (IOException e) {
              getErrorCollector().addFatalError(new SimpleMessage(e.getMessage(), this));
          }
          finally {
              if (reader != null) {
                  try {
                      reader.close();
                  }
                  catch (IOException e) {
                      // Ignore
                  }
              }
          }
      }
docs: Parses the source to a CST.  You can retrieve it with getCST().