Most basic macros work.
[pspp] / src / language / control / define.c
index 3f23ec0b104f18ea02e401bb57f270357e11d0cd..5532d60b8bc0287be5900a4b377d88f5220be903 100644 (file)
@@ -68,6 +68,7 @@ parse_quoted_token (struct lexer *lexer, struct token *token)
       lex_error (lexer, _("String must contain exactly one token."));
       return false;
     }
+  lex_get (lexer);
   return true;
 }
 
@@ -111,11 +112,14 @@ cmd_define (struct lexer *lexer, struct dataset *ds UNUSED)
         {
           n_keywords++;
 
-          if (!lex_force_id (lexer) || !lex_force_match (lexer, T_EQUALS))
+          if (!lex_force_id (lexer))
             goto error;
 
           p->name = ss_xstrdup (lex_tokss (lexer));
           lex_get (lexer);
+
+          if (!lex_force_match (lexer, T_EQUALS))
+            goto error;
         }
 
       /* Parse default value. */
@@ -202,6 +206,8 @@ cmd_define (struct lexer *lexer, struct dataset *ds UNUSED)
     }
   m->body = ds_ss (&body);
 
+  lex_define_macro (lexer, m);
+
   return CMD_SUCCESS;
 
 error: