X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Flanguage%2Flexer%2Flexer.c;h=1c9542d78ed54ccf5271811b5cc27be54337aeae;hb=ebad3a92846289fb77c7e0fb8bb48ac7c02de68c;hp=79657df7d52793ec2b9cc8f385947de13bac3203;hpb=9f4661992f4b481c6dafa6fd53c94ecfe7b3af8c;p=pspp diff --git a/src/language/lexer/lexer.c b/src/language/lexer/lexer.c index 79657df7d5..1c9542d78e 100644 --- a/src/language/lexer/lexer.c +++ b/src/language/lexer/lexer.c @@ -52,7 +52,7 @@ struct lexer int token; /* Current token. */ double tokval; /* T_POS_NUM, T_NEG_NUM: the token's value. */ - char tokid [LONG_NAME_LEN + 1]; /* T_ID: the identifier. */ + char tokid [VAR_NAME_LEN + 1]; /* T_ID: the identifier. */ struct string tokstr; /* T_ID, T_STRING: token string value. For T_ID, this is not truncated as is @@ -548,9 +548,19 @@ lex_match (struct lexer *lexer, int t) Otherwise, returns false. */ bool lex_match_id (struct lexer *lexer, const char *s) +{ + return lex_match_id_n (lexer, s, 3); +} + +/* If the current token is the identifier S, skips it and returns + true. The identifier may be abbreviated to its first N + letters. + Otherwise, returns false. */ +bool +lex_match_id_n (struct lexer *lexer, const char *s, size_t n) { if (lexer->token == T_ID - && lex_id_match (ss_cstr (s), ss_cstr (lexer->tokid))) + && lex_id_match_n (ss_cstr (s), ss_cstr (lexer->tokid), n)) { lex_get (lexer); return true; @@ -849,8 +859,8 @@ lex_preprocess_line (struct string *line, { strip_comments (line); ds_rtrim (line, ss_cstr (CC_SPACES)); - *line_ends_command = (ds_chomp (line, get_endcmd ()) - || (ds_is_empty (line) && get_nulline ())); + *line_ends_command = (ds_chomp (line, settings_get_endcmd ()) + || (ds_is_empty (line) && settings_get_nulline ())); *line_starts_command = false; if (syntax == GETL_BATCH) {