SimpleTokenFactory.ceylon
import org.antlr.runtime {
CommonToken
}
"A simple [[TokenFactory]] implementation.
The [[token index|CommonToken.tokenIndex]]
and [[start index|CommonToken.startIndex]]
is incremented with each token."
shared class SimpleTokenFactory(initialIndex = 0, initialStartIndex = 0) satisfies TokenFactory {
"The [[token index|CommonToken.tokenIndex]] of the first token."
Integer initialIndex;
variable Integer index = initialIndex;
"The [[start index|CommonToken.startIndex]] of the first token."
Integer initialStartIndex;
variable Integer startIndex = initialStartIndex;
shared actual CommonToken token(String text, Integer type, Integer length) {
value token = CommonToken(type, text);
token.tokenIndex = index++;
token.startIndex = startIndex;
token.stopIndex = (startIndex += length) - 1;
token.charPositionInLine = 0; // initialized to -1
return token;
}
}