public override void Accept(TryExceptStatement tryExcept) { IodineLabel exceptLabel = methodBuilder.CreateLabel(); IodineLabel endLabel = methodBuilder.CreateLabel(); methodBuilder.EmitInstruction(tryExcept.Location, Opcode.PushExceptionHandler, exceptLabel); tryExcept.TryBody.Visit(this); methodBuilder.EmitInstruction(tryExcept.TryBody.Location, Opcode.PopExceptionHandler); methodBuilder.EmitInstruction(tryExcept.TryBody.Location, Opcode.Jump, endLabel); methodBuilder.MarkLabelPosition(exceptLabel); tryExcept.TypeList.Visit(this); if (tryExcept.TypeList.Children.Count > 0) { methodBuilder.EmitInstruction(tryExcept.ExceptBody.Location, Opcode.BeginExcept, tryExcept.TypeList.Children.Count); } if (tryExcept.ExceptionIdentifier != null) { methodBuilder.EmitInstruction(tryExcept.ExceptBody.Location, Opcode.LoadException); methodBuilder.EmitInstruction(tryExcept.ExceptBody.Location, Opcode.StoreLocal, symbolTable.GetSymbol(tryExcept.ExceptionIdentifier).Index); } tryExcept.ExceptBody.Visit(this); methodBuilder.MarkLabelPosition(endLabel); }
public override bool Visit(TryExceptStatement node) { Visit((Statement)node); TraversePrint(node.body); TraversePrint(node.final); return(true); }
public override void Accept(TryExceptStatement tryExcept) { tryExcept.TryBody.Visit(this); if (tryExcept.ExceptionIdentifier != null) { symbolTable.AddSymbol(tryExcept.ExceptionIdentifier); } tryExcept.ExceptBody.Visit(this); }
public override void Accept(TryExceptStatement tryCatch) { tryCatch.VisitChildren(this); }
public virtual T Visit(TryExceptStatement node) { Visit((Statement)node); traverse(node.body); return(traverse(node.final)); }
public override void Accept(TryExceptStatement tryExcept) { tryExcept.Visit(functionCompiler); }
public virtual void Accept(TryExceptStatement tryCatch) { }
public override void Accept(TryExceptStatement tryExcept) { errorLog.AddError(ErrorType.ParserError, tryExcept.Location, "statement can not exist inside pattern!"); }
public override void Accept(TryExceptStatement tryExcept) { errorLog.AddError(ErrorType.ParserError, tryExcept.Location, "Statement not allowed outside function body!"); }