From 607b41f22e1294a35332ab81f8f43d8627fa505a Mon Sep 17 00:00:00 2001 From: peter <peter@freepascal.org> Date: Thu, 22 Jan 2004 17:24:49 +0000 Subject: [PATCH] * except is also an end of block token * after a label don't try to parse a statement when the next token is an end token --- compiler/pbase.pas | 9 +++++++-- compiler/pstatmnt.pas | 12 ++++++++++-- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/compiler/pbase.pas b/compiler/pbase.pas index 0f79deb313..34729ae63f 100644 --- a/compiler/pbase.pas +++ b/compiler/pbase.pas @@ -35,7 +35,7 @@ interface const { tokens that end a block or statement. And don't require a ; on the statement before } - endtokens = [_SEMICOLON,_END,_ELSE,_UNTIL]; + endtokens = [_SEMICOLON,_END,_ELSE,_UNTIL,_EXCEPT]; { true, if we are after an assignement } afterassignment : boolean = false; @@ -270,7 +270,12 @@ implementation end. { $Log$ - Revision 1.25 2003-09-23 17:56:05 peter + Revision 1.26 2004-01-22 17:24:49 peter + * except is also an end of block token + * after a label don't try to parse a statement when the next token + is an end token + + Revision 1.25 2003/09/23 17:56:05 peter * locals and paras are allocated in the code generation * tvarsym.localloc contains the location of para/local when generating code for the current procedure diff --git a/compiler/pstatmnt.pas b/compiler/pstatmnt.pas index f1f5f34039..e1fbe3cbd4 100644 --- a/compiler/pstatmnt.pas +++ b/compiler/pstatmnt.pas @@ -939,7 +939,10 @@ implementation begin { the pointer to the following instruction } { isn't a very clean way } - tlabelnode(p).left:=statement{$ifdef FPCPROCVAR}(){$endif}; + if token in endtokens then + tlabelnode(p).left:=cnothingnode.create + else + tlabelnode(p).left:=statement{$ifdef FPCPROCVAR}(){$endif}; { be sure to have left also resulttypepass } resulttypepass(tlabelnode(p).left); end; @@ -1084,7 +1087,12 @@ implementation end. { $Log$ - Revision 1.125 2004-01-12 16:36:53 peter + Revision 1.126 2004-01-22 17:24:49 peter + * except is also an end of block token + * after a label don't try to parse a statement when the next token + is an end token + + Revision 1.125 2004/01/12 16:36:53 peter * removed asmmode_direct Revision 1.124 2003/12/07 16:40:45 jonas