public override Handle StringLiteral(TerminalAST stringLiteralAST)
{
string chars = stringLiteralAST.Text;
ATNState left = NewState(stringLiteralAST);
ATNState right;
chars = CharSupport.GetStringFromGrammarStringLiteral(chars);
if (chars == null)
{
g.tool.errMgr.GrammarError(ErrorType.INVALID_ESCAPE_SEQUENCE,
g.fileName, stringLiteralAST.Token);
return new Handle(left, left);
}
int n = chars.Length;
ATNState prev = left;
right = null;
for (int i = 0; i < n; i++)
{
right = NewState(stringLiteralAST);
prev.AddTransition(new AtomTransition(right, chars[i]));
prev = right;
}
stringLiteralAST.atnState = left;
return new Handle(left, right);
}