org.olap4j.mdx
Class ParseRegion

java.lang.Object
  extended by org.olap4j.mdx.ParseRegion

public class ParseRegion
extends java.lang.Object

Region of parser source code.

The main purpose of a ParseRegion is to give detailed locations in error messages and warnings from the parsing and validation process.

A region has a start and end line number and column number. A region is a point if the start and end positions are the same.

The line and column number are one-based, because that is what end-users understand.

A region's end-points are inclusive. For example, in the code

SELECT FROM [Sales]
the SELECT token has region [1:1, 1:6].

Regions are immutable.

Version:
$Id: ParseRegion.java 247 2009-06-20 05:52:40Z jhyde $
Author:
jhyde

Nested Class Summary
static class ParseRegion.RegionAndSource
          Combination of a region within an MDX statement with the source text of the whole MDX statement.
 
Constructor Summary
ParseRegion(int line, int column)
          Creates a ParseRegion.
ParseRegion(int startLine, int startColumn, int endLine, int endColumn)
          Creates a ParseRegion.
 
Method Summary
 java.lang.String annotate(java.lang.String source)
          Generates a string of the source code annotated with caret symbols ("^") at the beginning and end of the region.
 boolean equals(java.lang.Object obj)
           
static ParseRegion.RegionAndSource findPos(java.lang.String code)
          Looks for one or two carets in an MDX string, and if present, converts them into a parser position.
 int getEndColumn()
          Return ending column number (1-based).
 int getEndLine()
          Return ending line number (1-based).
 int getStartColumn()
          Return starting column number (1-based).
 int getStartLine()
          Return starting line number (1-based).
 int hashCode()
           
 boolean isPoint()
          Returns whether this region has the same start and end point.
 ParseRegion plusAll(java.lang.Iterable<ParseRegion> regions)
          Combines this region with a list of parse tree nodes to create a region which spans from the first point in the first to the last point in the other.
static ParseRegion sum(java.lang.Iterable<ParseRegion> nodes)
          Combines the parser positions of a list of nodes to create a position which spans from the beginning of the first to the end of the last.
 java.lang.String toString()
          Returns a string representation of this ParseRegion.
 
Methods inherited from class java.lang.Object
getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

ParseRegion

public ParseRegion(int startLine,
                   int startColumn,
                   int endLine,
                   int endColumn)
Creates a ParseRegion.

All lines and columns are 1-based and inclusive. For example, the token "select" in "select from [Sales]" has a region [1:1, 1:6].

Parameters:
startLine - Line of the beginning of the region
startColumn - Column of the beginning of the region
endLine - Line of the end of the region
endColumn - Column of the end of the region

ParseRegion

public ParseRegion(int line,
                   int column)
Creates a ParseRegion. All lines and columns are 1-based.

Parameters:
line - Line of the beginning and end of the region
column - Column of the beginning and end of the region
Method Detail

getStartLine

public int getStartLine()
Return starting line number (1-based).

Returns:
1-based starting line number

getStartColumn

public int getStartColumn()
Return starting column number (1-based).

Returns:
1-based starting column number

getEndLine

public int getEndLine()
Return ending line number (1-based).

Returns:
1-based ending line number

getEndColumn

public int getEndColumn()
Return ending column number (1-based).

Returns:
1-based starting endings column number

toString

public java.lang.String toString()
Returns a string representation of this ParseRegion.

Regions are of the form [startLine:startColumn, endLine:endColumn], or [startLine:startColumn] for point regions.

Overrides:
toString in class java.lang.Object
Returns:
string representation of this ParseRegion

isPoint

public boolean isPoint()
Returns whether this region has the same start and end point.

Returns:
whether this region has the same start and end point

hashCode

public int hashCode()
Overrides:
hashCode in class java.lang.Object

equals

public boolean equals(java.lang.Object obj)
Overrides:
equals in class java.lang.Object

plusAll

public ParseRegion plusAll(java.lang.Iterable<ParseRegion> regions)
Combines this region with a list of parse tree nodes to create a region which spans from the first point in the first to the last point in the other.

Parameters:
regions - Collection of source code regions
Returns:
region which represents the span of the given regions

sum

public static ParseRegion sum(java.lang.Iterable<ParseRegion> nodes)
Combines the parser positions of a list of nodes to create a position which spans from the beginning of the first to the end of the last.

Parameters:
nodes - Collection of parse tree nodes
Returns:
region which represents the span of the given nodes

findPos

public static ParseRegion.RegionAndSource findPos(java.lang.String code)
Looks for one or two carets in an MDX string, and if present, converts them into a parser position.

Examples:

Parameters:
code - Source code
Returns:
object containing source code annotated with region

annotate

public java.lang.String annotate(java.lang.String source)
Generates a string of the source code annotated with caret symbols ("^") at the beginning and end of the region.

For example, for the region (1, 9, 1, 12) and source "values (foo)", yields the string "values (^foo^)".

Parameters:
source - Source code
Returns:
Source code annotated with position

SourceForge.net_Logo