public override void ExitJumpStatement(CParser.JumpStatementContext context)
 {
     //'goto' Identifier ';'
     if (context.Identifier() != null)
     {
         SafeCall(context, () => CStatment.GotoStatement(context.Identifier().GetText()));
     }
     //'continue' ';'
     else if (context.GetText().StartsWith("continue"))
     {
         SafeCall(context, CStatment.ContinueStatement);
     }
     //'break' ';'
     else if (context.GetText().StartsWith("break"))
     {
         SafeCall(context, CStatment.BreakStatement);
     }
     //'return' expression? ';'
     else if (context.GetText().StartsWith("return"))
     {
         SafeCall(context, () => CStatment.ReturnStatement(context.expression() != null));
     }
     //'goto' unaryExpression ';' -- GCC extension not supported
     else
     {
         SematicError(context, "gcc goto extention not supported");
     }
 }
示例#2
0
        protected ObjectDef EmitJumpStatement(CParser.JumpStatementContext jumpStatement)
        {
            ObjectDef returnObjectDef = null;

            if (jumpStatement.expression() != null && jumpStatement.Return() != null)
            {
                returnObjectDef = EmitExpression(jumpStatement.expression());
            }

            return(returnObjectDef);
        }