slcom/slangc/parser/SourcePosition.sauce

47 lines
955 B
Plaintext
Raw Normal View History

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 + ")";
}
}