[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 12/18] identifier: Rename token_type_to_string() and make a new v
From: |
Ben Pfaff |
Subject: |
[PATCH 12/18] identifier: Rename token_type_to_string() and make a new version. |
Date: |
Sat, 19 Mar 2011 17:09:58 -0700 |
---
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 498f5ea..4b613bb 100644
--- a/src/data/identifier.c
+++ b/src/data/identifier.c
@@ -26,15 +26,23 @@
#include <assert.h>
#include <string.h>
#include <unictype.h>
+#include <unistr.h>
#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 fe030d1..bf20f9c 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. */
--
1.7.2.3
- [PATCH 01/18] data-reader: Remove unreachable "return" statements., (continued)
- [PATCH 01/18] data-reader: Remove unreachable "return" statements., Ben Pfaff, 2011/03/19
- [PATCH 07/18] str: New functions for checking for and removing string suffixes., Ben Pfaff, 2011/03/19
- [PATCH 10/18] i18n: New function recode_string_len()., Ben Pfaff, 2011/03/19
- [PATCH 09/18] i18n: New function uc_name()., Ben Pfaff, 2011/03/19
- [PATCH 14/18] encoding-guesser: New library to guess the encoding of a text file., Ben Pfaff, 2011/03/19
- [PATCH 04/18] output: New function text_item_create_nocopy()., Ben Pfaff, 2011/03/19
- [PATCH 05/18] str: New function ss_realloc()., Ben Pfaff, 2011/03/19
- [PATCH 13/18] i18n: New functions and data structure for obtaining encoding info., Ben Pfaff, 2011/03/19
- [PATCH 06/18] str: Rename ss_chomp() to ss_chomp_byte(), ds_chomp() to ds_chomp_byte()., Ben Pfaff, 2011/03/19
- [PATCH 02/18] file-name: Do not make output files line-buffered in fn_open()., Ben Pfaff, 2011/03/19
- [PATCH 12/18] identifier: Rename token_type_to_string() and make a new version.,
Ben Pfaff <=
- [PATCH 08/18] hash-functions: New function hash_case_bytes()., Ben Pfaff, 2011/03/19
- [PATCH 11/18] i18n: New functions for truncating strings in an arbitrary encoding., Ben Pfaff, 2011/03/19
- [PATCH 17/18] scan: New library for high-level PSPP syntax lexical analysis., Ben Pfaff, 2011/03/19
- [PATCH 15/18] u8-istream: New library for reading a text file and recoding to UTF-8., Ben Pfaff, 2011/03/19
- [PATCH 16/18] segment: New library for low-level phase of lexical syntax analysis., Ben Pfaff, 2011/03/19
- [PATCH 03/18] sys-file-reader: Refactor to clean up character encoding support., Ben Pfaff, 2011/03/19
- Re: [PATCH 00/18] rewrite PSPP lexer, John Darrington, 2011/03/20
- Re: [PATCH 00/18] rewrite PSPP lexer, John Darrington, 2011/03/22