From 1b3322acf30d531cefe3cdbf7287ec8cde601bcd Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Sat, 19 Mar 2011 14:40:11 -0700 Subject: [PATCH] identifier: Rename token_type_to_string() and make a new version. --- src/data/identifier.c | 108 +++++++++++++++++++++++++++++++++++++++++- src/data/identifier.h | 3 +- 2 files changed, 109 insertions(+), 2 deletions(-) diff --git a/src/data/identifier.c b/src/data/identifier.c index 498f5ea9..4b613bb4 100644 --- a/src/data/identifier.c +++ b/src/data/identifier.c @@ -26,15 +26,23 @@ #include #include #include +#include #include "libpspp/assertion.h" +#include "libpspp/cast.h" +#include "libpspp/i18n.h" +#include "libpspp/message.h" #include "gl/c-ctype.h" +#include "gettext.h" +#define _(msgid) gettext (msgid) + /* Tokens. */ +/* Returns TYPE as a string, e.g. "ID" for T_ID. */ const char * -token_type_to_string (enum token_type type) +token_type_to_name (enum token_type type) { switch (type) { @@ -47,6 +55,104 @@ token_type_to_string (enum token_type type) } } +/* Returns an ASCII string that yields TOKEN if it appeared in a syntax file, + as a statically allocated constant string. This function returns NULL for + tokens that don't have any fixed string representation, such as identifier + and number tokens. */ +const char * +token_type_to_string (enum token_type token) +{ + switch (token) + { + case T_ID: + case T_POS_NUM: + case T_NEG_NUM: + case T_STRING: + case T_STOP: + return NULL; + + case T_ENDCMD: + return "."; + + case T_PLUS: + return "+"; + + case T_DASH: + return "-"; + + case T_ASTERISK: + return "*"; + + case T_SLASH: + return "/"; + + case T_EQUALS: + return "="; + + case T_LPAREN: + return "("; + + case T_RPAREN: + return ")"; + + case T_LBRACK: + return "["; + + case T_RBRACK: + return "]"; + + case T_COMMA: + return ","; + + case T_AND: + return "AND"; + + case T_OR: + return "OR"; + + case T_NOT: + return "NOT"; + + case T_EQ: + return "EQ"; + + case T_GE: + return ">="; + + case T_GT: + return ">"; + + case T_LE: + return "<="; + + case T_LT: + return "<"; + + case T_NE: + return "~="; + + case T_ALL: + return "ALL"; + + case T_BY: + return "BY"; + + case T_TO: + return "TO"; + + case T_WITH: + return "WITH"; + + case T_EXP: + return "**"; + + case TOKEN_N_TYPES: + NOT_REACHED (); + } + + NOT_REACHED (); +} + /* Recognizing identifiers. */ static bool diff --git a/src/data/identifier.h b/src/data/identifier.h index fe030d1c..bf20f9cc 100644 --- a/src/data/identifier.h +++ b/src/data/identifier.h @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 1997-9, 2000, 2010 Free Software Foundation, Inc. + Copyright (C) 1997-9, 2000, 2010, 2011 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -68,6 +68,7 @@ enum token_type #undef TOKEN_TYPE }; +const char *token_type_to_name (enum token_type); const char *token_type_to_string (enum token_type); /* Tokens. */ -- 2.30.2