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"); } }
protected ObjectDef EmitJumpStatement(CParser.JumpStatementContext jumpStatement) { ObjectDef returnObjectDef = null; if (jumpStatement.expression() != null && jumpStatement.Return() != null) { returnObjectDef = EmitExpression(jumpStatement.expression()); } return(returnObjectDef); }