Package org.codehaus.groovy.control

# Class SourceUnit

java.lang.Object
org.codehaus.groovy.control.ProcessingUnit
org.codehaus.groovy.control.SourceUnit

public class SourceUnit extends ProcessingUnit
Provides an anchor for a single source unit (usually a script file) as it passes through the compiler system.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected ModuleNode`
  `ast`
  The root of the Abstract Syntax Tree for the source
  `protected Reduction`
  `cst`
  A Concrete Syntax Tree of the source
  `protected String`
  `name`
  A descriptive name of the source unit.
  `protected ReaderSource`
  `source`
  Where we can get Readers for our source unit

  ### Fields inherited from class org.codehaus.groovy.control.ProcessingUnit

  `classLoader, configuration, errorCollector, phase, phaseComplete`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `SourceUnit(File source, CompilerConfiguration configuration, GroovyClassLoader loader, ErrorCollector er)`
  Initializes the SourceUnit from the specified file.
  `SourceUnit(String name, String source, CompilerConfiguration configuration, GroovyClassLoader loader, ErrorCollector er)`
  Initializes the SourceUnit for a string of source.
  `SourceUnit(String name, ReaderSource source, CompilerConfiguration flags, GroovyClassLoader loader, ErrorCollector er)`
  Initializes the SourceUnit from existing machinery.
  `SourceUnit(URL source, CompilerConfiguration configuration, GroovyClassLoader loader, ErrorCollector er)`
  Initializes the SourceUnit from the specified URL.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addError(SyntaxException se)`
  This method adds a SyntaxException to the error collector.
  `void`
  `addErrorAndContinue(SyntaxException se)`
  Adds a non-fatal syntax error to this source unit.
  `void`
  `addException(Exception e)`
  This method adds an exception to the error collector.
  `void`
  `addFatalError(String text, ASTNode node)`
  Convenience wrapper for `ErrorCollector.addFatalError(org.codehaus.groovy.control.messages.Message)`.
  `void`
  `addWarning(int importance, String text, ASTNode node)`
  Adds a warning at the given importance level.
  `void`
  `addWarning(String text, ASTNode node)`
  Adds a warning with `WarningMessage.POSSIBLE_ERRORS` importance.
  `ModuleNode`
  `buildAST()`
  Builds the AST.
  `void`
  `convert()`
  Generates an AST from the CST.
  `static SourceUnit`
  `create(String name, String source)`
  A convenience routine to create a standalone SourceUnit on a String with defaults for almost everything that is configurable but with tolerance set to 1.
  `static SourceUnit`
  `create(String name, String source, int tolerance)`
  A convenience routine to create a standalone SourceUnit on a String with defaults for almost everything that is configurable.
  `boolean`
  `failedWithUnexpectedEOF()`
  Deprecated.
  since 6.0.0, use `ProcessingUnit.getErrorCollector()` and `ErrorCollector.hasErrors()` instead.
  `ModuleNode`
  `getAST()`
  Returns the Abstract Syntax Tree produced during convert()ing and expanded during later phases.
  `Reduction`
  `getCST()`
  Returns the Concrete Syntax Tree produced during parse()ing.
  `String`
  `getName()`
  Returns the name for the SourceUnit.
  `String`
  `getSample(int line, int column, Janitor janitor)`
  Returns a sampling of the source at the specified line and column, or null if it is unavailable.
  `ReaderSource`
  `getSource()`
  Returns the reader source backing this source unit.
  `void`
  `parse()`
  Parses the source to a CST.
  `void`
  `setSource(ReaderSource source)`
  Replaces the reader source backing this source unit.

  ### Methods inherited from class org.codehaus.groovy.control.ProcessingUnit

  `completePhase, configure, getClassLoader, getConfiguration, getErrorCollector, getPhase, getPhaseDescription, gotoPhase, isPhaseComplete, nextPhase, setClassLoader, setConfiguration`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### source

    protected ReaderSource source
    Where we can get Readers for our source unit

  - ### name

    protected String name
    A descriptive name of the source unit. This name shouldn't be used for controlling the SourceUnit, it is only for error messages and to determine the name of the class for a script.

  - ### cst

    protected Reduction cst
    A Concrete Syntax Tree of the source

  - ### ast

    protected ModuleNode ast
    The root of the Abstract Syntax Tree for the source

- ## Constructor Details

  - ### SourceUnit

    public SourceUnit(String name, ReaderSource source, CompilerConfiguration flags, GroovyClassLoader loader, ErrorCollector er)
    Initializes the SourceUnit from existing machinery.

  - ### SourceUnit

    public SourceUnit(File source, CompilerConfiguration configuration, GroovyClassLoader loader, ErrorCollector er)
    Initializes the SourceUnit from the specified file.

  - ### SourceUnit

    public SourceUnit(URL source, CompilerConfiguration configuration, GroovyClassLoader loader, ErrorCollector er)
    Initializes the SourceUnit from the specified URL.

  - ### SourceUnit

    public SourceUnit(String name, String source, CompilerConfiguration configuration, GroovyClassLoader loader, ErrorCollector er)
    Initializes the SourceUnit for a string of source.

- ## Method Details

  - ### getName

    public String getName()
    Returns the name for the SourceUnit. This name shouldn't be used for controlling the SourceUnit, it is only for error messages

  - ### getCST

    public Reduction getCST()
    Returns the Concrete Syntax Tree produced during parse()ing.

  - ### getAST

    public ModuleNode getAST()
    Returns the Abstract Syntax Tree produced during convert()ing and expanded during later phases.

  - ### failedWithUnexpectedEOF

    @Deprecated(since="6.0.0") public boolean failedWithUnexpectedEOF()
    Deprecated.
    since 6.0.0, use `ProcessingUnit.getErrorCollector()` and `ErrorCollector.hasErrors()` instead.
    Legacy Antlr 2 error reporting method no longer in use. Similar in intent to `getErrorCollector().hasErrors()`, which should be used instead.
    Returns:
      true if any error was collected while parsing

  - ### create

    public static SourceUnit create(String name, String source)
    A convenience routine to create a standalone SourceUnit on a String with defaults for almost everything that is configurable but with tolerance set to 1.

  - ### create

    public static SourceUnit create(String name, String source, int tolerance)
    A convenience routine to create a standalone SourceUnit on a String with defaults for almost everything that is configurable.

  - ### parse

    public void parse() throws CompilationFailedException
    Parses the source to a CST. You can retrieve it with getCST().
    Throws:
      `CompilationFailedException`

  - ### convert

    public void convert() throws CompilationFailedException
    Generates an AST from the CST. You can retrieve it with getAST().
    Throws:
      `CompilationFailedException`

  - ### buildAST

    public ModuleNode buildAST()
    Builds the AST.

  - ### getSample

    public String getSample(int line, int column, Janitor janitor)
    Returns a sampling of the source at the specified line and column, or null if it is unavailable.

  - ### addException

    public void addException(Exception e) throws CompilationFailedException
    This method adds an exception to the error collector. The Exception most likely has no line number attached to it. For this reason you should use this method sparingly. Prefer using addError for syntax errors or add an error to the `ErrorCollector` directly by retrieving it with getErrorCollector().
    Parameters:
      `e` - the exception that occurred
    Throws:
      `CompilationFailedException` - on error

  - ### addError

    public void addError(SyntaxException se) throws CompilationFailedException
    This method adds a SyntaxException to the error collector. The exception should specify the line and column number of the error. This method should be reserved for real errors in the syntax of the SourceUnit. If your error is not in syntax, and is a semantic error, or more general error, then use addException or use the error collector directly by retrieving it with getErrorCollector().
    Parameters:
      `se` - the exception, which should have line and column information
    Throws:
      `CompilationFailedException` - on error

  - ### addFatalError

    public void addFatalError(String text, ASTNode node) throws CompilationFailedException
    Convenience wrapper for `ErrorCollector.addFatalError(org.codehaus.groovy.control.messages.Message)`.
    Parameters:
      `text` - the error message
      `node` - for locating the offending code
    Throws:
      `CompilationFailedException` - on error
    Since:
      3.0.0

  - ### addWarning

    public void addWarning(String text, ASTNode node)
    Adds a warning with `WarningMessage.POSSIBLE_ERRORS` importance.
    Since:
      4.0.7

  - ### addWarning

    public void addWarning(int importance, String text, ASTNode node)
    Adds a warning at the given importance level. The warning is only retained if the importance is relevant for the configured warning level.
    Parameters:
      `importance` - one of the `WarningMessage` level constants
      `text` - the warning text
      `node` - the AST node the warning relates to (for line/column info)
    Since:
      6.0.0

  - ### addErrorAndContinue

    public void addErrorAndContinue(SyntaxException se)
    Adds a non-fatal syntax error to this source unit.
    Parameters:
      `se` - the syntax error to record

  - ### getSource

    public ReaderSource getSource()
    Returns the reader source backing this source unit.
    Returns:
      the underlying reader source

  - ### setSource

    public void setSource(ReaderSource source)
    Replaces the reader source backing this source unit.
    Parameters:
      `source` - the new reader source