X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Flexer%2Fformat-parser.c;h=c2187e5a2f1024c78062aa055ba392285f5aaecf;hb=6f6ec79a028eedc0f18a32866ed9af2d0ea4ecd7;hp=85579a2ab2116567d0eb0547c707e198361017ae;hpb=673f49b652a17becffa50f70d8885a5b4f66b722;p=pspp diff --git a/src/language/lexer/format-parser.c b/src/language/lexer/format-parser.c index 85579a2ab2..c2187e5a2f 100644 --- a/src/language/lexer/format-parser.c +++ b/src/language/lexer/format-parser.c @@ -32,7 +32,16 @@ #include "gettext.h" #define _(msgid) gettext (msgid) -static bool +/* Parses a token taking the form of a format specifier and + returns true only if successful. Emits an error message on + failure. Stores a null-terminated string representing the + format type in TYPE, and the width and number of decimal + places in *WIDTH and *DECIMALS. + + TYPE is not checked as to whether it is really the name of a + format. Both width and decimals are considered optional. If + missing, *WIDTH or *DECIMALS or both will be set to 0. */ +bool parse_abstract_format_specifier__ (struct lexer *lexer, char type[FMT_TYPE_LEN_MAX + 1], uint16_t *width, uint8_t *decimals) @@ -75,19 +84,12 @@ parse_abstract_format_specifier__ (struct lexer *lexer, return true; error: - lex_error (lexer, _("expecting valid format specifier")); + lex_error (lexer, _("Syntax error expecting valid format specifier.")); return false; } -/* Parses a token taking the form of a format specifier and - returns true only if successful. Emits an error message on - failure. Stores a null-terminated string representing the - format type in TYPE, and the width and number of decimal - places in *WIDTH and *DECIMALS. - - TYPE is not checked as to whether it is really the name of a - format. Both width and decimals are considered optional. If - missing, *WIDTH or *DECIMALS or both will be set to 0. */ +/* Like parse_abstract_format_specifier__(), but additionally advanced past + the token if successful. */ bool parse_abstract_format_specifier (struct lexer *lexer, char type[FMT_TYPE_LEN_MAX + 1], @@ -113,14 +115,14 @@ parse_format_specifier (struct lexer *lexer, struct fmt_spec *format) if (!fmt_from_name (type, &format->type)) { - msg (SE, _("Unknown format type `%s'."), type); + lex_error (lexer, _("Unknown format type `%s'."), type); return false; } if (format->w == 0 && !strchr (lex_tokcstr (lexer), '0')) { - msg (SE, _("Format specifier `%s' lacks required width."), - lex_tokcstr (lexer)); + lex_error (lexer, _("Format specifier `%s' lacks required width."), + lex_tokcstr (lexer)); return false; } @@ -135,12 +137,12 @@ parse_format_specifier_name (struct lexer *lexer, enum fmt_type *type) { if (lex_token (lexer) != T_ID) { - lex_error (lexer, _("expecting format type")); + lex_error (lexer, _("Syntax error expecting format type.")); return false; } if (!fmt_from_name (lex_tokcstr (lexer), type)) { - msg (SE, _("Unknown format type `%s'."), lex_tokcstr (lexer)); + lex_error (lexer, _("Unknown format type `%s'."), lex_tokcstr (lexer)); return false; } lex_get (lexer);