47 lines
955 B
Plaintext
47 lines
955 B
Plaintext
|
package slangc.parser;
|
||
|
|
||
|
public final class SourcePosition {
|
||
|
private final Source source;
|
||
|
private final int index, line, character;
|
||
|
|
||
|
public SourcePosition(Source source, int index, int line, int character) {
|
||
|
this.source = source;
|
||
|
this.index = index;
|
||
|
this.line = line;
|
||
|
this.character = character;
|
||
|
}
|
||
|
|
||
|
public SourcePosition(Source source) {
|
||
|
this(source, 0, 1, 1);
|
||
|
}
|
||
|
|
||
|
public SourcePosition clone() {
|
||
|
return new SourcePosition(source, index, line, character);
|
||
|
}
|
||
|
|
||
|
public Source getSource() {
|
||
|
return source;
|
||
|
}
|
||
|
|
||
|
public int getIndex() {
|
||
|
return index;
|
||
|
}
|
||
|
|
||
|
public int getLineCount() {
|
||
|
return line;
|
||
|
}
|
||
|
|
||
|
public int getCharacterCount() {
|
||
|
return character;
|
||
|
}
|
||
|
|
||
|
public boolean isAtEnd() {
|
||
|
return !source.isIndexWithinBounds(index);
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public String toString() {
|
||
|
return "SourcePosition(" + source.toString() + ", " + index + ", " + line + ", " + character + ")";
|
||
|
}
|
||
|
}
|