DEADSOFTWARE

Разрешено повторно объявлять блоки CONST TYPE VAR, поправлено сравнение массивов...
[dsw-obn.git] / src / oberon.c
index 04eaf8c8fd29e32e6b5318db2981e64d2a02b2cd..5abb2090477536027219f41e2e0b9e78b69d9ab5 100644 (file)
@@ -3141,33 +3141,34 @@ oberon_prevent_undeclarated_procedures(oberon_context_t * ctx)
 static void
 oberon_decl_seq(oberon_context_t * ctx)
 {
-       if(ctx -> token == CONST)
+       while(ctx -> token >= CONST && ctx -> token <= VAR)
        {
-               oberon_assert_token(ctx, CONST);
-               while(ctx -> token == IDENT)
+               if(ctx -> token == CONST)
                {
-                       oberon_const_decl(ctx);
-                       oberon_assert_token(ctx, SEMICOLON);
+                       oberon_assert_token(ctx, CONST);
+                       while(ctx -> token == IDENT)
+                       {
+                               oberon_const_decl(ctx);
+                               oberon_assert_token(ctx, SEMICOLON);
+                       }
                }
-       }
-
-       if(ctx -> token == TYPE)
-       {
-               oberon_assert_token(ctx, TYPE);
-               while(ctx -> token == IDENT)
+               else if(ctx -> token == TYPE)
                {
-                       oberon_type_decl(ctx);
-                       oberon_assert_token(ctx, SEMICOLON);
+                       oberon_assert_token(ctx, TYPE);
+                       while(ctx -> token == IDENT)
+                       {
+                               oberon_type_decl(ctx);
+                               oberon_assert_token(ctx, SEMICOLON);
+                       }
                }
-       }
-
-       if(ctx -> token == VAR)
-       {
-               oberon_assert_token(ctx, VAR);
-               while(ctx -> token == IDENT)
+               else if(ctx -> token == VAR)
                {
-                       oberon_var_decl(ctx);
-                       oberon_assert_token(ctx, SEMICOLON);
+                       oberon_assert_token(ctx, VAR);
+                       while(ctx -> token == IDENT)
+                       {
+                               oberon_var_decl(ctx);
+                               oberon_assert_token(ctx, SEMICOLON);
+                       }
                }
        }