Subversion Repositories tendra.SVN

Rev

Rev 5 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5 Rev 6
Line -... Line 1...
-
 
1
/*
-
 
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
 */
1
/*
31
/*
2
    		 Crown Copyright (c) 1997, 1998
32
    		 Crown Copyright (c) 1997, 1998
3
    
33
 
4
    This TenDRA(r) Computer Program is subject to Copyright
34
    This TenDRA(r) Computer Program is subject to Copyright
5
    owned by the United Kingdom Secretary of State for Defence
35
    owned by the United Kingdom Secretary of State for Defence
6
    acting through the Defence Evaluation and Research Agency
36
    acting through the Defence Evaluation and Research Agency
7
    (DERA).  It is made available to Recipients with a
37
    (DERA).  It is made available to Recipients with a
8
    royalty-free licence for its use, reproduction, transfer
38
    royalty-free licence for its use, reproduction, transfer
9
    to other parties and amendment for any purpose not excluding
39
    to other parties and amendment for any purpose not excluding
10
    product development provided that any such use et cetera
40
    product development provided that any such use et cetera
11
    shall be deemed to be acceptance of the following conditions:-
41
    shall be deemed to be acceptance of the following conditions:-
12
    
42
 
13
        (1) Its Recipients shall ensure that this Notice is
43
        (1) Its Recipients shall ensure that this Notice is
14
        reproduced upon any copies or amended versions of it;
44
        reproduced upon any copies or amended versions of it;
15
    
45
 
16
        (2) Any amended version of it shall be clearly marked to
46
        (2) Any amended version of it shall be clearly marked to
17
        show both the nature of and the organisation responsible
47
        show both the nature of and the organisation responsible
18
        for the relevant amendment or amendments;
48
        for the relevant amendment or amendments;
19
    
49
 
20
        (3) Its onward transfer from a recipient to another
50
        (3) Its onward transfer from a recipient to another
21
        party shall be deemed to be that party's acceptance of
51
        party shall be deemed to be that party's acceptance of
22
        these conditions;
52
        these conditions;
23
    
53
 
24
        (4) DERA gives no warranty or assurance as to its
54
        (4) DERA gives no warranty or assurance as to its
25
        quality or suitability for any purpose and DERA accepts
55
        quality or suitability for any purpose and DERA accepts
26
        no liability whatsoever in relation to any use to which
56
        no liability whatsoever in relation to any use to which
27
        it may be put.
57
        it may be put.
28
*/
58
*/
Line 38... Line 68...
38
    The routines in this module are used to implement look-ahead functions
68
    The routines in this module are used to implement look-ahead functions
39
    within the parser in order to get round some of the more complex parsing
69
    within the parser in order to get round some of the more complex parsing
40
    problems (such as resolving between declarations and expressions).
70
    problems (such as resolving between declarations and expressions).
41
*/
71
*/
42
 
72
 
43
extern int predict_array PROTO_S ( ( void ) ) ;
73
extern int predict_array(void);
44
extern int predict_class PROTO_S ( ( int ) ) ;
74
extern int predict_class(int);
45
extern int predict_decl PROTO_S ( ( void ) ) ;
75
extern int predict_decl(void);
46
extern int predict_destr PROTO_S ( ( NAMESPACE ) ) ;
76
extern int predict_destr(NAMESPACE);
47
extern int predict_dspec PROTO_S ( ( int ) ) ;
77
extern int predict_dspec(int);
48
extern int predict_func_defn PROTO_S ( ( void ) ) ;
78
extern int predict_func_defn(void);
49
extern int predict_init PROTO_S ( ( void ) ) ;
79
extern int predict_init(void);
50
extern int predict_obj_defn PROTO_S ( ( void ) ) ;
80
extern int predict_obj_defn(void);
51
extern int predict_operator PROTO_S ( ( void ) ) ;
81
extern int predict_operator(void);
52
extern int predict_param PROTO_S ( ( void ) ) ;
82
extern int predict_param(void);
53
extern int predict_ptr PROTO_S ( ( int ) ) ;
83
extern int predict_ptr(int);
54
extern int predict_template PROTO_S ( ( void ) ) ;
84
extern int predict_template(void);
55
extern int predict_tspec PROTO_S ( ( int ) ) ;
85
extern int predict_tspec(int);
56
extern int predict_typeid PROTO_S ( ( int ) ) ;
86
extern int predict_typeid(int);
57
extern int predict_typename PROTO_S ( ( void ) ) ;
87
extern int predict_typename(void);
58
 
88
 
59
 
89
 
60
/*
90
/*
61
    PARSER STATE VARIABLES
91
    PARSER STATE VARIABLES
62
 
92
 
63
    These variables are used by the parser to store information about the
93
    These variables are used by the parser to store information about the
64
    current parser state.
94
    current parser state.
65
*/
95
*/
66
 
96
 
67
extern int have_type_specifier ;
97
extern int have_type_specifier;
68
extern int have_type_declaration ;
98
extern int have_type_declaration;
69
extern int have_func_declarator ;
99
extern int have_func_declarator;
70
extern int in_function_defn ;
100
extern int in_function_defn;
71
extern int in_class_defn ;
101
extern int in_class_defn;
72
extern int in_declaration ;
102
extern int in_declaration;
73
extern int in_default_arg ;
103
extern int in_default_arg;
74
extern int in_weak_param ;
104
extern int in_weak_param;
75
extern int in_ptr_mem_selector ;
105
extern int in_ptr_mem_selector;
76
extern int in_token_decl ;
106
extern int in_token_decl;
77
extern int in_template_decl ;
107
extern int in_template_decl;
78
extern int really_in_function_defn ;
108
extern int really_in_function_defn;
79
extern int really_in_class_defn ;
109
extern int really_in_class_defn;
80
extern int is_function_next ;
110
extern int is_function_next;
81
extern int is_constructor_next ;
111
extern int is_constructor_next;
82
 
112
 
83
extern int no_side_effects ;
113
extern int no_side_effects;
84
extern int no_type_defns ;
114
extern int no_type_defns;
85
extern int have_destructor ;
115
extern int have_destructor;
86
extern unsigned long no_declarations ;
116
extern unsigned long no_declarations;
87
extern unsigned long no_token_defns ;
117
extern unsigned long no_token_defns;
88
 
118
 
89
 
119
 
90
/*
120
/*
91
    FEATURE USE FLAGS
121
    FEATURE USE FLAGS
92
 
122
 
93
    These flags are set to indicate that certain features, which require
123
    These flags are set to indicate that certain features, which require
94
    the program to perform extra checks, have been used.
124
    the program to perform extra checks, have been used.
95
*/
125
*/
96
 
126
 
97
extern int used_extern_volatile ;
127
extern int used_extern_volatile;
98
extern int used_register ;
128
extern int used_register;
99
 
129
 
100
 
130
 
101
/*
131
/*
102
    TYPE DECLARATION VALUES
132
    TYPE DECLARATION VALUES
103
 
133