From: Ben Pfaff Date: Sun, 23 Apr 2023 17:24:49 +0000 (-0700) Subject: SAVE TRANSLATE: Make first '/' optional in syntax. X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5c32b9f8e121e807f34e437dc4f7a2e5fdfe37e0;p=pspp SAVE TRANSLATE: Make first '/' optional in syntax. This matches SPSS behavior. Thanks to Matthias Faeth for reporting this bug. --- diff --git a/src/language/commands/save-translate.c b/src/language/commands/save-translate.c index 48b5d4507a..0bf0bcafeb 100644 --- a/src/language/commands/save-translate.c +++ b/src/language/commands/save-translate.c @@ -65,11 +65,9 @@ cmd_save_translate (struct lexer *lexer, struct dataset *ds) int outfile_start = 0; int outfile_end = 0; - while (lex_token (lexer) != T_ENDCMD) + lex_match (lexer, T_SLASH); + for (;;) { - if (!lex_force_match (lexer, T_SLASH)) - goto error; - if (lex_match_id (lexer, "OUTFILE")) { outfile_start = lex_ofs (lexer) - 1; @@ -215,6 +213,12 @@ cmd_save_translate (struct lexer *lexer, struct dataset *ds) } else if (!parse_dict_trim (lexer, dict)) goto error; + + if (lex_token (lexer) == T_ENDCMD) + break; + + if (!lex_force_match (lexer, T_SLASH)) + goto error; } if (type == 0) diff --git a/tests/language/commands/save-translate.at b/tests/language/commands/save-translate.at index ebfca92d4c..9b1b5ce2c9 100644 --- a/tests/language/commands/save-translate.at +++ b/tests/language/commands/save-translate.at @@ -30,7 +30,7 @@ DATA LIST LIST NOTABLE FILE="data.txt" filter(F1.0). MISSING VALUES number(0) time('0 12:00') string('xyzzy'). FILTER BY filter. -SAVE TRANSLATE /OUTFILE="data.csv" /TYPE=m4_if([$2], [], [CSV], [$2]) +SAVE TRANSLATE OUTFILE="data.csv" /TYPE=m4_if([$2], [], [CSV], [$2]) $1. ]) AT_CHECK([pspp -O format=csv save-translate.pspp], [0]) @@ -202,9 +202,10 @@ SAVE TRANSLATE/RENAME=v1=v1. SAVE TRANSLATE/DROP=ALL. SAVE TRANSLATE/DROP=**. SAVE TRANSLATE/KEEP=**. +SAVE TRANSLATE/OUTFILE='xyzzy.txt' **. ]) AT_CHECK([pspp -O format=csv save-translate.sps], [1], [dnl -"save-translate.sps:2.16-2.17: error: SAVE TRANSLATE: Syntax error expecting `/'. +"save-translate.sps:2.16-2.17: error: SAVE TRANSLATE: Syntax error expecting MAP, DROP, KEEP, or RENAME. 2 | SAVE TRANSLATE **. | ^~" @@ -357,5 +358,9 @@ save-translate.sps:26: error: SAVE TRANSLATE: Old and new variable counts do not "save-translate.sps:35.21-35.22: error: SAVE TRANSLATE: Syntax error expecting variable name. 35 | SAVE TRANSLATE/KEEP=**. | ^~" + +"save-translate.sps:36.36-36.37: error: SAVE TRANSLATE: Syntax error expecting `/'. + 36 | SAVE TRANSLATE/OUTFILE='xyzzy.txt' **. + | ^~" ]) AT_CLEANUP