lexer: Factor some token inspectors out into new token functions.
[pspp] / src / language / lexer / token.h
index cab1a8cf9c63d011b3788e8a0123ba7acf19dd34..67bc7ddc3b74753d587e4e1a29e4b356caf033d0 100644 (file)
@@ -18,6 +18,7 @@
 #define TOKEN_H 1
 
 #include <stdio.h>
+#include "libpspp/assertion.h"
 #include "libpspp/str.h"
 #include "data/identifier.h"
 
@@ -42,4 +43,29 @@ char *token_to_string (const struct token *);
 
 void token_print (const struct token *, FILE *);
 
+static inline bool token_is_number (const struct token *);
+static inline double token_number (const struct token *);
+bool token_is_integer (const struct token *);
+long token_integer (const struct token *);
+static inline bool token_is_string (const struct token *);
+
+static inline bool
+token_is_number (const struct token *t)
+{
+  return t->type == T_POS_NUM || t->type == T_NEG_NUM;
+}
+
+static inline double
+token_number (const struct token *t)
+{
+  assert (token_is_number (t));
+  return t->number;
+}
+
+static inline bool
+token_is_string (const struct token *t)
+{
+  return t->type == T_STRING;
+}
+
 #endif /* token.h */