ソースを参照

* 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

peter 21 年 前
コミット
607b41f22e
2 ファイル変更17 行追加4 行削除
  1. 7 2
      compiler/pbase.pas
  2. 10 2
      compiler/pstatmnt.pas

+ 7 - 2
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

+ 10 - 2
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