protected DoubleLiteralExpression double_literal()
{
DoubleLiteralExpression rle;
IToken neg = null;
IToken value = null;
IToken single = null;
rle = null;
string val;
try { // for error handling
switch ( LA(1) )
{
case SUBTRACT:
case DOUBLE:
{
{
switch ( LA(1) )
{
case SUBTRACT:
{
neg = LT(1);
match(SUBTRACT);
break;
}
case DOUBLE:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
value = LT(1);
match(DOUBLE);
if (0==inputState.guessing)
{
val = value.getText();
if (neg != null) val = neg.getText() + val;
rle = new DoubleLiteralExpression(ToLexicalInfo(value), PrimitiveParser.ParseDouble(value, val));
}
break;
}
case FLOAT:
{
single = LT(1);
match(FLOAT);
if (0==inputState.guessing)
{
val = single.getText();
val = val.Substring(0, val.Length-1);
if (neg != null) val = neg.getText() + val;
rle = new DoubleLiteralExpression(ToLexicalInfo(single), PrimitiveParser.ParseDouble(single, val, true), true);
}
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
catch (RecognitionException ex)
{
if (0 == inputState.guessing)
{
reportError(ex, "double_literal");
recover(ex,tokenSet_41_);
}
else
{
throw ex;
}
}
return rle;
}