Subversion Repositories tendra.SVN

Rev

Rev 5 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 7u83 1
/*
6 7u83 2
 * Copyright (c) 2002-2005 The TenDRA Project <http://www.tendra.org/>.
3
 * All rights reserved.
4
 *
5
 * Redistribution and use in source and binary forms, with or without
6
 * modification, are permitted provided that the following conditions are met:
7
 *
8
 * 1. Redistributions of source code must retain the above copyright notice,
9
 *    this list of conditions and the following disclaimer.
10
 * 2. Redistributions in binary form must reproduce the above copyright notice,
11
 *    this list of conditions and the following disclaimer in the documentation
12
 *    and/or other materials provided with the distribution.
13
 * 3. Neither the name of The TenDRA Project nor the names of its contributors
14
 *    may be used to endorse or promote products derived from this software
15
 *    without specific, prior written permission.
16
 *
17
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS
18
 * IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
19
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
21
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22
 * EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
23
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
24
 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
26
 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
27
 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
 *
29
 * $Id$
30
 */
31
/*
2 7u83 32
    		 Crown Copyright (c) 1997, 1998
6 7u83 33
 
2 7u83 34
    This TenDRA(r) Computer Program is subject to Copyright
35
    owned by the United Kingdom Secretary of State for Defence
36
    acting through the Defence Evaluation and Research Agency
37
    (DERA).  It is made available to Recipients with a
38
    royalty-free licence for its use, reproduction, transfer
39
    to other parties and amendment for any purpose not excluding
40
    product development provided that any such use et cetera
41
    shall be deemed to be acceptance of the following conditions:-
6 7u83 42
 
2 7u83 43
        (1) Its Recipients shall ensure that this Notice is
44
        reproduced upon any copies or amended versions of it;
6 7u83 45
 
2 7u83 46
        (2) Any amended version of it shall be clearly marked to
47
        show both the nature of and the organisation responsible
48
        for the relevant amendment or amendments;
6 7u83 49
 
2 7u83 50
        (3) Its onward transfer from a recipient to another
51
        party shall be deemed to be that party's acceptance of
52
        these conditions;
6 7u83 53
 
2 7u83 54
        (4) DERA gives no warranty or assurance as to its
55
        quality or suitability for any purpose and DERA accepts
56
        no liability whatsoever in relation to any use to which
57
        it may be put.
58
*/
59
 
60
 
61
#ifndef PREDICT_INCLUDED
62
#define PREDICT_INCLUDED
63
 
64
 
65
/*
66
    PARSER LOOK-AHEAD DECLARATIONS
67
 
68
    The routines in this module are used to implement look-ahead functions
69
    within the parser in order to get round some of the more complex parsing
70
    problems (such as resolving between declarations and expressions).
71
*/
72
 
6 7u83 73
extern int predict_array(void);
74
extern int predict_class(int);
75
extern int predict_decl(void);
76
extern int predict_destr(NAMESPACE);
77
extern int predict_dspec(int);
78
extern int predict_func_defn(void);
79
extern int predict_init(void);
80
extern int predict_obj_defn(void);
81
extern int predict_operator(void);
82
extern int predict_param(void);
83
extern int predict_ptr(int);
84
extern int predict_template(void);
85
extern int predict_tspec(int);
86
extern int predict_typeid(int);
87
extern int predict_typename(void);
2 7u83 88
 
89
 
90
/*
91
    PARSER STATE VARIABLES
92
 
93
    These variables are used by the parser to store information about the
94
    current parser state.
95
*/
96
 
6 7u83 97
extern int have_type_specifier;
98
extern int have_type_declaration;
99
extern int have_func_declarator;
100
extern int in_function_defn;
101
extern int in_class_defn;
102
extern int in_declaration;
103
extern int in_default_arg;
104
extern int in_weak_param;
105
extern int in_ptr_mem_selector;
106
extern int in_token_decl;
107
extern int in_template_decl;
108
extern int really_in_function_defn;
109
extern int really_in_class_defn;
110
extern int is_function_next;
111
extern int is_constructor_next;
2 7u83 112
 
6 7u83 113
extern int no_side_effects;
114
extern int no_type_defns;
115
extern int have_destructor;
116
extern unsigned long no_declarations;
117
extern unsigned long no_token_defns;
2 7u83 118
 
119
 
120
/*
121
    FEATURE USE FLAGS
122
 
123
    These flags are set to indicate that certain features, which require
124
    the program to perform extra checks, have been used.
125
*/
126
 
6 7u83 127
extern int used_extern_volatile;
128
extern int used_register;
2 7u83 129
 
130
 
131
/*
132
    TYPE DECLARATION VALUES
133
 
134
    These macros give the various values assigned to have_type_declaration.
135
    If no types have been declared in a sequence of type specifiers it is
136
    TYPE_DECL_NONE, if an anonymous class is defined it is TYPE_DECL_ANON,
137
    if an elaborated type specifier is declared it is TYPE_DECL_ELABORATE,
138
    otherwise it is TYPE_DECL_NORMAL.
139
*/
140
 
141
#define TYPE_DECL_NONE			0
142
#define TYPE_DECL_NORMAL		1
143
#define TYPE_DECL_ANON			2
144
#define TYPE_DECL_ELABORATE		3
145
#define TYPE_DECL_OVER_ELAB		4
146
 
147
 
148
#endif