aboutsummaryrefslogtreecommitdiff
path: root/gnu/gcc2/cc1plus/cp-lex.h
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/gcc2/cc1plus/cp-lex.h')
-rw-r--r--gnu/gcc2/cc1plus/cp-lex.h107
1 files changed, 107 insertions, 0 deletions
diff --git a/gnu/gcc2/cc1plus/cp-lex.h b/gnu/gcc2/cc1plus/cp-lex.h
new file mode 100644
index 000000000000..9df38e5ee403
--- /dev/null
+++ b/gnu/gcc2/cc1plus/cp-lex.h
@@ -0,0 +1,107 @@
+/* Define constants and variables for communication with cp-parse.y.
+ Copyright (C) 1987, 1992, 1993 Free Software Foundation, Inc.
+ Hacked by Michael Tiemann (tiemann@cygnus.com)
+ and by Brendan Kehoe (brendan@cygnus.com).
+
+This file is part of GNU CC.
+
+GNU CC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY. No author or distributor
+accepts responsibility to anyone for the consequences of using it
+or for whether it serves any particular purpose or works at all,
+unless he says so in writing. Refer to the GNU CC General Public
+License for full details.
+
+Everyone is granted permission to copy, modify and redistribute
+GNU CC, but only under the conditions described in the
+GNU CC General Public License. A copy of this license is
+supposed to have been given to you along with GNU CC so you
+can know your rights and responsibilities. It should be in a
+file named COPYING. Among other things, the copyright notice
+and this notice must be preserved on all copies. */
+
+
+
+enum rid
+{
+ RID_UNUSED,
+ RID_INT,
+ RID_CHAR,
+ RID_WCHAR,
+ RID_FLOAT,
+ RID_DOUBLE,
+ RID_VOID,
+
+ /* C++ extension */
+ RID_CLASS,
+ RID_RECORD,
+ RID_UNION,
+ RID_ENUM,
+ RID_LONGLONG,
+
+ /* This is where grokdeclarator starts its search when setting the specbits.
+ The first seven are in the order of most frequently used, as found
+ building libg++. */
+
+ RID_EXTERN,
+ RID_CONST,
+ RID_LONG,
+ RID_TYPEDEF,
+ RID_UNSIGNED,
+ RID_SHORT,
+ RID_INLINE,
+
+ RID_STATIC,
+
+ RID_REGISTER,
+ RID_VOLATILE,
+ RID_FRIEND,
+ RID_VIRTUAL,
+ RID_PUBLIC,
+ RID_PRIVATE,
+ RID_PROTECTED,
+ RID_SIGNED,
+ RID_EXCEPTION,
+ RID_RAISES,
+ RID_AUTO,
+
+ /* Note this is 31, and is unusable in shifts where ints are 32 bits.
+ As soon as a new rid has to be added to this enum, you have to
+ stop and come up with a better way to do all of this than by
+ doing `specbits & (1 << (int) RID_FOO)', since you'll end up
+ with an integer overflow. */
+ RID_UNUSED1,
+
+ RID_MAX
+};
+
+#define NORID RID_UNUSED
+
+#define RID_FIRST_MODIFIER RID_EXTERN
+
+/* The integral type that can represent all values of RIDBIT. */
+typedef unsigned long RID_BIT_TYPE;
+
+/* A bit that represents the given RID_... value. */
+#define RIDBIT(N) ((RID_BIT_TYPE) 1 << (int) (N))
+
+/* The elements of `ridpointers' are identifier nodes
+ for the reserved type names and storage classes.
+ It is indexed by a RID_... value. */
+extern tree ridpointers[(int) RID_MAX];
+
+/* the declaration found for the last IDENTIFIER token read in.
+ yylex must look this up to detect typedefs, which get token type TYPENAME,
+ so it is left around in case the identifier is not a typedef but is
+ used in a context which makes it a reference to a variable. */
+extern tree lastiddecl;
+
+extern char *token_buffer; /* Pointer to token buffer. */
+
+/* Back-door communication channel to the lexer. */
+extern int looking_for_typename;
+
+extern tree make_pointer_declarator (), make_reference_declarator ();
+extern void reinit_parse_for_function ();
+extern void reinit_parse_for_method ();
+extern int yylex ();