lexer: Factor some token inspectors out into new token functions.
[pspp] / src / language / lexer / token.c
index 9fa5bbb6ba81804534c809f4a2b90bb552c607cf..61f576ed985b934b43789e2a16912e28f4b595fa 100644 (file)
@@ -198,6 +198,22 @@ token_print (const struct token *token, FILE *stream)
              (int) token->string.length, token->string.string);
   putc ('\n', stream);
 }
+
+bool
+token_is_integer (const struct token *t)
+{
+  return (token_is_number (t)
+          && t->number > LONG_MIN
+          && t->number <= LONG_MAX
+          && floor (t->number) == t->number);
+}
+
+long
+token_integer (const struct token *t)
+{
+  assert (token_is_integer (t));
+  return t->number;
+}
 \f
 void
 tokens_copy (struct tokens *dst, const struct tokens *src)