private IToken MatchIdentifier()
{
// called from subTemplate; so keep resetting position during speculation
startCharIndex = input.Index;
startLine = input.Line;
startCharPositionInLine = input.CharPositionInLine;
Consume();
while (IsIDLetter(c))
{
Consume();
}
return NewToken(ID);
}