X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fcommand.c;h=2284deedc8324a51c05bad47f9ea6a4b90e506de;hb=c246143823df29e9ce4c5115c647a47954dea883;hp=b46d1e83b813a7744e7b9c056fe9205b11cbd33a;hpb=480a0746507ce73d26f528b56dc3ed80195096e0;p=pspp diff --git a/src/language/command.c b/src/language/command.c index b46d1e83b8..2284deedc8 100644 --- a/src/language/command.c +++ b/src/language/command.c @@ -136,14 +136,15 @@ static enum cmd_result do_parse_command (struct lexer *, struct dataset *, enum dot. On failure, skips to the terminating dot. Returns the command's success or failure result. */ enum cmd_result -cmd_parse (struct lexer *lexer, struct dataset *ds, enum cmd_state state) +cmd_parse_in_state (struct lexer *lexer, struct dataset *ds, + enum cmd_state state) { int result; - + som_new_series (); result = do_parse_command (lexer, ds, state); - if (cmd_result_is_failure (result)) + if (cmd_result_is_failure (result)) lex_discard_rest_of_command (lexer); unset_cmd_algorithm (); @@ -152,6 +153,17 @@ cmd_parse (struct lexer *lexer, struct dataset *ds, enum cmd_state state) return result; } +enum cmd_result +cmd_parse (struct lexer *lexer, struct dataset *ds) +{ + const struct dictionary *dict = dataset_dict (ds); + return cmd_parse_in_state (lexer, ds, + proc_has_source (ds) && + dict_get_var_cnt (dict) > 0 ? + CMD_STATE_DATA : CMD_STATE_INITIAL); +} + + /* Parses an entire command, from command name to terminating dot. */ static enum cmd_result