protected Expression string_literal()
{
Expression e;
IToken dqs = null;
IToken sqs = null;
IToken tqs = null;
IToken bqs = null;
e = null;
try { // for error handling
switch ( LA(1) )
{
case ESEPARATOR:
{
e=expression_interpolation();
break;
}
case DOUBLE_QUOTED_STRING:
{
dqs = LT(1);
match(DOUBLE_QUOTED_STRING);
if (0==inputState.guessing)
{
e = new StringLiteralExpression(ToLexicalInfo(dqs), dqs.getText());
e.Annotate("quote", "\"");
}
break;
}
case SINGLE_QUOTED_STRING:
{
sqs = LT(1);
match(SINGLE_QUOTED_STRING);
if (0==inputState.guessing)
{
e = new StringLiteralExpression(ToLexicalInfo(sqs), sqs.getText());
e.Annotate("quote", "'");
}
break;
}
case TRIPLE_QUOTED_STRING:
{
tqs = LT(1);
match(TRIPLE_QUOTED_STRING);
if (0==inputState.guessing)
{
e = new StringLiteralExpression(ToLexicalInfo(tqs), tqs.getText());
e.Annotate("quote", "\"\"\"");
}
break;
}
case BACKTICK_QUOTED_STRING:
{
bqs = LT(1);
match(BACKTICK_QUOTED_STRING);
if (0==inputState.guessing)
{
e = new StringLiteralExpression(ToLexicalInfo(bqs), bqs.getText());
e.Annotate("quote", "`");
}
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
catch (RecognitionException ex)
{
if (0 == inputState.guessing)
{
reportError(ex, "string_literal");
recover(ex,tokenSet_41_);
}
else
{
throw ex;
}
}
return e;
}