protected TryStatement try_stmt()
{
TryStatement s;
IToken t = null;
IToken ftoken = null;
IToken etoken = null;
s = null;
Block sblock = null;
Block eblock = null;
try { // for error handling
t = LT(1);
match(TRY);
if (0==inputState.guessing)
{
s = new TryStatement(ToLexicalInfo(t));
}
compound_stmt(s.ProtectedBlock);
{ // ( ... )*
for (;;)
{
if ((LA(1)==EXCEPT))
{
exception_handler(s);
}
else
{
goto _loop367_breakloop;
}
}
_loop367_breakloop: ;
} // ( ... )*
{
switch ( LA(1) )
{
case FAILURE:
{
ftoken = LT(1);
match(FAILURE);
if (0==inputState.guessing)
{
eblock = new Block(ToLexicalInfo(ftoken));
}
compound_stmt(eblock);
if (0==inputState.guessing)
{
s.FailureBlock = eblock;
}
break;
}
case EOF:
case DEDENT:
case ESEPARATOR:
case ASSEMBLY_ATTRIBUTE_BEGIN:
case MODULE_ATTRIBUTE_BEGIN:
case ABSTRACT:
case BREAK:
case CONTINUE:
case CALLABLE:
case CAST:
case CHAR:
case CLASS:
case DEF:
case ENSURE:
case ENUM:
case EVENT:
case FINAL:
case FOR:
case FALSE:
case GOTO:
case INTERFACE:
case INTERNAL:
case IF:
case NEW:
case NULL:
case OVERRIDE:
case PARTIAL:
case PUBLIC:
case PROTECTED:
case PRIVATE:
case RAISE:
case RETURN:
case SELF:
case SUPER:
case STATIC:
case STRUCT:
case THEN:
case TRY:
case TRANSIENT:
case TRUE:
case TYPEOF:
case UNLESS:
case VIRTUAL:
case WHILE:
case YIELD:
case TRIPLE_QUOTED_STRING:
case LPAREN:
case DOUBLE_QUOTED_STRING:
case SINGLE_QUOTED_STRING:
case ID:
case MULTIPLY:
case LBRACK:
case SPLICE_BEGIN:
case DOT:
case COLON:
case LBRACE:
case QQ_BEGIN:
case SUBTRACT:
case LONG:
case INCREMENT:
case DECREMENT:
case ONES_COMPLEMENT:
case INT:
case BACKTICK_QUOTED_STRING:
case RE_LITERAL:
case DOUBLE:
case FLOAT:
case TIMESPAN:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
{
switch ( LA(1) )
{
case ENSURE:
{
etoken = LT(1);
match(ENSURE);
if (0==inputState.guessing)
{
eblock = new Block(ToLexicalInfo(etoken));
}
compound_stmt(eblock);
if (0==inputState.guessing)
{
s.EnsureBlock = eblock;
}
break;
}
case EOF:
case DEDENT:
case ESEPARATOR:
case ASSEMBLY_ATTRIBUTE_BEGIN:
case MODULE_ATTRIBUTE_BEGIN:
case ABSTRACT:
case BREAK:
case CONTINUE:
case CALLABLE:
case CAST:
case CHAR:
case CLASS:
case DEF:
case ENUM:
case EVENT:
case FINAL:
case FOR:
case FALSE:
case GOTO:
case INTERFACE:
case INTERNAL:
case IF:
case NEW:
case NULL:
case OVERRIDE:
case PARTIAL:
case PUBLIC:
case PROTECTED:
case PRIVATE:
case RAISE:
case RETURN:
case SELF:
case SUPER:
case STATIC:
case STRUCT:
case THEN:
case TRY:
case TRANSIENT:
case TRUE:
case TYPEOF:
case UNLESS:
case VIRTUAL:
case WHILE:
case YIELD:
case TRIPLE_QUOTED_STRING:
case LPAREN:
case DOUBLE_QUOTED_STRING:
case SINGLE_QUOTED_STRING:
case ID:
case MULTIPLY:
case LBRACK:
case SPLICE_BEGIN:
case DOT:
case COLON:
case LBRACE:
case QQ_BEGIN:
case SUBTRACT:
case LONG:
case INCREMENT:
case DECREMENT:
case ONES_COMPLEMENT:
case INT:
case BACKTICK_QUOTED_STRING:
case RE_LITERAL:
case DOUBLE:
case FLOAT:
case TIMESPAN:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
}
catch (RecognitionException ex)
{
if (0 == inputState.guessing)
{
reportError(ex, "try_stmt");
recover(ex,tokenSet_82_);
}
else
{
throw ex;
}
}
return s;
}