X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flexer.h;h=95553f10c868280e3ae60919ad18353d12b30c02;hb=843e8862e77bcc2813a944b6feb524ea6cc2ab6a;hp=23ce64bf2154b20098dfd2a44e7cde9e6d469aa3;hpb=97d6c6f6b1922621ca013668eba9a9a9f71d60fe;p=pspp-builds.git diff --git a/src/lexer.h b/src/lexer.h index 23ce64bf..95553f10 100644 --- a/src/lexer.h +++ b/src/lexer.h @@ -20,6 +20,9 @@ #if !lexer_h #define lexer_h 1 +#include +#include "bool.h" + /* Returns nonzero if character CH may be the first character in an identifier. */ #define CHAR_IS_ID1(CH) \ @@ -41,7 +44,8 @@ enum { T_ID = 256, /* Identifier. */ - T_NUM, /* Number. */ + T_POS_NUM, /* Positive number. */ + T_NEG_NUM, /* Negative number. */ T_STRING, /* Quoted string. */ T_STOP, /* End of input. */ @@ -65,7 +69,7 @@ enum T_FIRST_KEYWORD = T_AND, T_LAST_KEYWORD = T_WITH, - T_N_KEYWORDS = T_LAST_KEYWORD - T_FIRST_KEYWORD + 1, + T_N_KEYWORDS = T_LAST_KEYWORD - T_FIRST_KEYWORD + 1 }; @@ -78,6 +82,7 @@ extern struct string tokstr; /* Initialization. */ void lex_init (void); +void lex_done (void); /* Common functions. */ void lex_get (void); @@ -85,10 +90,10 @@ void lex_error (const char *, ...); int lex_end_of_command (void); /* Token testing functions. */ -int lex_integer_p (void); +bool lex_is_number (void); +double lex_number (void); +bool lex_is_integer (void); long lex_integer (void); -int lex_double_p (void); -double lex_double (void); /* Token matching functions. */ int lex_match (int); @@ -107,6 +112,7 @@ int lex_force_string (void); int lex_id_match_len (const char *keyword_string, size_t keyword_len, const char *token_string, size_t token_len); int lex_id_match (const char *keyword_string, const char *token_string); +int lex_id_to_token (const char *id, size_t len); /* Weird token functions. */ int lex_look_ahead (void);