-/* Nonzero tells yylex to ignore \ in string constants. */
-static int ignore_escape_flag;
-
-static tree interpret_integer PARAMS ((const cpp_token *, unsigned int));
-static tree interpret_float PARAMS ((const cpp_token *, unsigned int));
-static enum integer_type_kind
- narrowest_unsigned_type PARAMS ((tree, unsigned int));
-static enum integer_type_kind
- narrowest_signed_type PARAMS ((tree, unsigned int));
-static tree lex_string PARAMS ((const unsigned char *, unsigned int,
- int));
-static tree lex_charconst PARAMS ((const cpp_token *));
-static void update_header_times PARAMS ((const char *));
-static int dump_one_header PARAMS ((splay_tree_node, void *));
-static void cb_line_change PARAMS ((cpp_reader *, const cpp_token *, int));
-static void cb_ident PARAMS ((cpp_reader *, unsigned int,
- const cpp_string *));
-static void cb_def_pragma PARAMS ((cpp_reader *, unsigned int));
-static void cb_define PARAMS ((cpp_reader *, unsigned int,
- cpp_hashnode *));
-static void cb_undef PARAMS ((cpp_reader *, unsigned int,
- cpp_hashnode *));
+/* If we need to translate characters received. This is tri-state:
+ 0 means use only the untranslated string; 1 means use only
+ the translated string; -1 means chain the translated string
+ to the untranslated one. */
+int c_lex_string_translate = 1;
+
+/* True if strings should be passed to the caller of c_lex completely
+ unmolested (no concatenation, no translation). */
+bool c_lex_return_raw_strings = false;
+
+static tree interpret_integer (const cpp_token *, unsigned int);
+static tree interpret_float (const cpp_token *, unsigned int);
+static tree interpret_fixed (const cpp_token *, unsigned int);
+static enum integer_type_kind narrowest_unsigned_type
+ (unsigned HOST_WIDE_INT, unsigned HOST_WIDE_INT, unsigned int);
+static enum integer_type_kind narrowest_signed_type
+ (unsigned HOST_WIDE_INT, unsigned HOST_WIDE_INT, unsigned int);
+static enum cpp_ttype lex_string (const cpp_token *, tree *, bool);
+static tree lex_charconst (const cpp_token *);
+static void update_header_times (const char *);
+static int dump_one_header (splay_tree_node, void *);
+static void cb_line_change (cpp_reader *, const cpp_token *, int);
+static void cb_ident (cpp_reader *, unsigned int, const cpp_string *);
+static void cb_def_pragma (cpp_reader *, unsigned int);
+static void cb_define (cpp_reader *, unsigned int, cpp_hashnode *);
+static void cb_undef (cpp_reader *, unsigned int, cpp_hashnode *);