PIPS
c_syntax.h
Go to the documentation of this file.
1 /* Warning! Do not modify this file that is automatically generated! */
2 /* Modify src/Libs/c_syntax/c_syntax-local.h instead, to add your own modifications. */
3 
4 /* header file built by cproto */
5 
6 #ifndef c_syntax_header_included
7 #define c_syntax_header_included
8 /* c_syntax-local.h */
9 /*
10 
11  $Id: c_syntax-local.h 23657 2022-05-09 10:40:27Z coelho $
12 
13  Copyright 1989-2016 MINES ParisTech
14 
15  This file is part of PIPS.
16 
17  PIPS is free software: you can redistribute it and/or modify it
18  under the terms of the GNU General Public License as published by
19  the Free Software Foundation, either version 3 of the License, or
20  any later version.
21 
22  PIPS is distributed in the hope that it will be useful, but WITHOUT ANY
23  WARRANTY; without even the implied warranty of MERCHANTABILITY or
24  FITNESS FOR A PARTICULAR PURPOSE.
25 
26  See the GNU General Public License for more details.
27 
28  You should have received a copy of the GNU General Public License
29  along with PIPS. If not, see <http://www.gnu.org/licenses/>.
30 
31 */
32 
33 #include "c_parser_private.h"
34 
35 extern FILE * c_in; /* the file read in by the c_lexer */
36 extern int c_lineno ;
37 extern int c_lex();
38 extern int c_parse();
39 
40 /* The labels in C have function scope... but beware of
41  inlining... and conflict with user labels */
42 /* To disambiguate labels, in case inlining is performed later and to
43  suppress the potential for conflicts with user labels.
44 
45  Temporary entities have to be generated to be replaced later by the
46  final labels. The temporary entities should be eliminated from the
47  symbol table...
48  */
49 #define get_label_prefix() "-" // a character that cannot be used in a correct
50 
51 /* These global variables are declared in ri-util/util.c */
52 extern entity DynamicArea;
53 extern entity StaticArea;
54 extern entity HeapArea;
55 extern entity StackArea;
56 extern entity AllocatableArea;
57 
58 /* Error handling */
59 #define FIRST_C_LINE_NUMBER (1)
60 #define UNDEFINED_C_LINE_NUMBER (-1)
61 
62 #define CParserError(m) c_parser_error(CURRENT_FUNCTION, m)
63 #define c_parser_user_warning(...) \
64  c_parser_user_warning_func(CURRENT_FUNCTION, __FILE__, __LINE__, __VA_ARGS__)
65 
66 /* cproto workaround */
67 /* from "cyacc.y" */
68 extern entity GetFunction(void);
69 extern void reset_expression_comment(void);
70 extern string pop_block_scope(string /*old_scope*/);
71 extern string scope_to_block_scope(string /*full_scope*/);
73 extern void InitScope(void);
74 extern int ScopeStackSize(void);
75 extern string GetScope(void);
76 extern string GetParentScope(void);
77 extern void ExitScope(void);
78 extern void PushContext(c_parser_context /*c*/);
79 extern void PopContext(void);
80 extern c_parser_context GetContext(void);
81 extern c_parser_context GetContextCopy(void);
82 extern void reset_declaration_counter(void);
83 extern int get_declaration_counter(void);
84 extern void init_c_parser_scope_stack(void);
85 extern void reset_c_parser_scope_stack(void);
86 extern void force_reset_c_parser_scope_stack(void);
87 extern void push_new_c_parser_scope(void);
88 extern void pop_c_parser_scope_stack(void);
89 extern bool c_parser_scope_stack_empty_p(void);
90 extern string get_c_parser_current_scope(void);
91 extern string get_c_parser_nth_scope(int /*n*/);
92 extern int c_parser_number_of_scopes(void);
93 /* from "clex.l" */
94 extern int C_line_increment;
95 extern int get_previous_c_lineno(void);
96 extern unsigned int character_occurences_in_string(string /*s*/, char /*c*/);
97 extern int get_current_C_line_number(void);
98 extern int get_previous_C_line_number(void);
99 extern void set_current_C_line_number(void);
100 extern void push_current_C_line_number(void);
101 extern int pop_current_C_line_number(void);
102 extern void reset_current_C_line_number(void);
103 extern void error_reset_current_C_line_number(void);
104 extern void reset_token_has_been_seen_p(void);
105 extern string get_current_C_comment(void);
106 extern void push_current_C_comment(void);
107 extern string pop_current_C_comment(void);
108 extern void update_C_comment(string /*a_comment*/);
109 extern void remove_LFs_from_C_comment(int /*extra_LF*/);
110 extern void discard_C_comment(void);
111 extern void reset_C_comment(bool /*is_compilation_unit_p*/);
112 extern void error_reset_C_comment(bool /*is_compilation_unit_p*/);
113 extern void clear_C_comment(void);
114 extern void init_C_comment(void);
115 extern void c_error(char * /*msg*/);
116 extern void c_reset_lex(void);
117 extern int c_wrap(void);
118 /* cproto-generated files */
119 /* c_parser.c */
120 extern string compilation_unit_name;
121 extern list CalledModules;
123 extern string get_c_parser_current_input_file_name(void);
124 extern void set_c_parser_current_input_file_name(string /*file_name*/);
128 extern void set_c_parser_current_user_input_file_name(string /*file_name*/);
131 extern stack ContextStack;
132 extern stack FunctionStack;
133 extern stack FormalStack;
134 extern stack OffsetStack;
135 extern stack StructNameStack;
136 extern int loop_counter;
137 extern int derived_counter;
138 extern void init_entity_type_storage_table(void);
139 extern void put_to_entity_type_stack_table(entity /*key*/, stack value);
141 extern void remove_entity_type_stack(entity /*e*/);
142 extern void remove_entity_type_stacks(list /*el*/);
143 extern void reset_entity_type_stack_table(void);
144 extern void parser_init_keyword_typedef_table(void);
145 extern bool c_parser_error(const char */*func*/, const char */*msg*/);
146 extern void make_predefined_C_entities(string /*compilation_unit_name*/);
149 extern bool c_parser(const char */*module_name*/);
150 extern bool compilation_unit_parser(const char */*module_name*/);
151 /* statement.c */
152 extern stack BlockStack;
153 extern list LabeledStatements;
154 extern stack SwitchGotoStack;
156 extern stack LoopStack;
157 extern void MakeCurrentModule(entity /*e*/);
158 extern void ResetCurrentModule(void);
159 extern void InitializeBlock(void);
160 extern statement MakeBlock(list /*stmts*/);
162 extern statement MakeLabeledStatement(string /*label*/, statement /*s*/, string /*comment*/);
163 extern statement MakeGotoStatement(string /*label*/);
164 extern entity MakeCLabel(string /*s*/);
165 extern statement MakeWhileLoop(list /*lexp*/, statement /*s*/, bool /*before*/);
166 extern statement MakeForloop(expression /*e1*/, expression /*e2*/, expression /*e3*/, statement /*body*/);
167 extern statement MakeForloopWithIndexDeclaration(list /*decls*/, expression /*e2*/, expression /*e3*/, statement /*body*/);
170 extern statement MakeDefaultStatement(void);
171 extern statement MakeBreakStatement(string /*cmt*/);
172 extern statement MakeContinueStatement(string /*cmt*/);
174 extern list add_prettyprint_control_list_to_declaration_statement(statement /*s*/, list /*initialization_expressions*/);
176 extern bool extern_prettyprint_control_list_p(void);
177 extern void set_prettyprint_control_list_to_dummy(void);
178 extern bool dummy_prettyprint_control_list_p(void);
179 /* util.c */
180 extern void c_parser_user_warning_alist(const char */*pips_func*/, const char */*pips_file*/, const int /*pips_line*/, const char */*format*/, va_list */*args*/);
181 extern void c_parser_user_warning_func(const char */*pips_func*/, const char */*pips_file*/, const int /*pips_line*/, const char */*format*/, ...);
182 extern void reset_current_dummy_parameter_number(void);
183 extern entity get_top_level_entity(void);
184 extern void MakeTopLevelEntity(void);
185 extern void init_c_areas(void);
186 extern entity make_C_constant_entity(string /*name*/, tag /*bt*/, size_t /*size*/);
187 extern void init_c_implicit_variables(entity /*m*/);
189 extern void MakeCurrentCompilationUnitEntity(const char */*name*/);
190 extern void ResetCurrentCompilationUnitEntity(bool /*is_compilation_unit_parser*/);
191 extern expression MakeFunctionExpression(expression /*e*/, list /*le*/);
192 extern expression MemberDerivedIdentifierToExpression(type /*t*/, string /*m*/);
193 extern expression MemberIdentifierToExpression(expression /*e*/, string /*m*/);
194 extern expression IdentifierToExpression(string /*s*/);
195 extern expression MakeArrayExpression(expression /*exp*/, list /*lexp*/);
196 extern entity FindEntityFromLocalName(string /*name*/);
197 extern entity FindOrCreateEntityFromLocalNameAndPrefix(string /*name*/, string /*prefix*/, bool /*is_external*/);
198 extern entity FindOrCreateEntityFromLocalNameAndPrefixAndScope(string /*name*/, string /*prefix*/, string /*scope*/, bool /*is_external*/);
199 extern entity FindEntityFromLocalNameAndPrefixAndScope(string /*name*/, string /*prefix*/, string /*scope*/);
200 extern entity FindEntityFromLocalNameAndPrefix(string /*name*/, string /*prefix*/);
201 extern entity CreateEntityFromLocalNameAndPrefix(string /*name*/, string /*prefix*/, bool /*is_external*/);
202 extern bool CheckExternList(void);
203 extern void c_parser_put_new_typedef(const char */*name*/);
204 extern void put_new_typedef(const char */*name*/);
205 extern entity FindOrCreateCurrentEntity(string /*name*/, stack /*ContextStack*/, stack /*FormalStack*/, stack /*FunctionStack*/, bool /*is_external*/);
206 extern void UpdateParenEntity(entity /*e*/, list /*lq*/);
207 extern dimension MakeDimension(list /*le*/, list /*ql*/);
208 extern type UpdateFinalPointer(type /*pt*/, type /*t*/);
209 extern void UpdatePointerEntity(entity /*e*/, type /*pt*/, list /*lq*/);
210 extern void UpdateArrayEntity(entity /*e*/, list /*lq*/, list /*le*/);
211 extern entity RenameFunctionEntity(entity /*oe*/);
212 extern void UpdateFunctionEntity(entity /*oe*/, list /*la*/);
213 extern type UpdateType(type /*t1*/, type /*t2*/);
214 extern void CCompilationUnitMemoryAllocations(entity /*module*/, bool /*first_p*/);
215 extern void CCompilationUnitMemoryAllocation(entity /*module*/);
216 extern void CCompilationUnitMemoryReallocation(entity /*module*/);
217 extern void CModuleMemoryAllocation(entity /*module*/);
218 extern void UseDummyArguments(entity /*f*/);
219 extern void UseFormalArguments(entity /*f*/);
220 extern void RemoveDummyArguments(entity /*f*/, list /*refs*/);
221 extern void SubstituteDummyParameters(entity /*f*/, list /*el*/);
222 extern void CreateReturnEntity(entity /*f*/);
223 extern void UpdateEntity2(entity /*f*/, stack /*FormalStack*/, stack /*OffsetStack*/);
224 extern void UpdateEntity(entity /*e*/, stack /*ContextStack*/, stack /*FormalStack*/, stack /*FunctionStack*/, stack /*OffsetStack*/, bool /*is_external*/, bool /*is_declaration*/);
225 extern void UpdateEntities(list /*le*/, stack /*ContextStack*/, stack /*FormalStack*/, stack /*FunctionStack*/, stack /*OffsetStack*/, bool /*is_external*/, bool /*is_declaration*/);
226 extern void CleanUpEntities(list /*le*/);
227 extern void UpdateAbstractEntity(entity /*e*/, stack /*ContextStack*/);
228 extern void RemoveFromExterns(entity /*e*/);
229 extern void AddToExterns(entity /*e*/, entity /*mod*/);
230 extern void AddToDeclarations(entity /*e*/, entity /*mod*/);
231 extern void UpdateDerivedEntity(list /*ld*/, entity /*e*/, stack /*ContextStack*/);
232 extern list TakeDerivedEntities(list /*le*/);
233 extern void UpdateDerivedEntities(list /*ld*/, list /*le*/, stack /*ContextStack*/);
234 extern void InitializeEnumMemberValues(list /*lem*/);
235 extern entity MakeDerivedEntity(string /*name*/, list /*members*/, bool /*is_external*/, int /*i*/);
236 extern storage MakeStorageRam(entity /*v*/, bool /*is_external*/, bool /*is_static*/);
237 extern string CreateMemberScope(string /*derived*/, bool /*is_external*/);
238 extern value MakeEnumeratorInitialValue(list /*enum_list*/, int /*counter*/);
239 extern int ComputeAreaOffset(entity /*a*/, entity /*v*/);
240 extern list MakeParameterList(list /*l1*/, list /*l2*/, stack /*FunctionStack*/);
241 extern parameter FindParameterEntity(string /*s*/, int /*offset*/, list /*l*/);
242 extern void AddToCalledModules(entity /*e*/);
243 extern void NStackPop(stack /*s*/, int /*n*/);
244 extern void StackPop(stack /*OffsetStack*/);
245 extern void StackPush(stack /*OffsetStack*/);
246 extern void set_entity_initial(entity /*v*/, expression /*nie*/);
247 extern bool check_declaration_uniqueness_p(statement /*s*/);
248 extern list insert_qualifier(list /*ql*/, qualifier /*nq*/);
249 extern void reset_preprocessor_line_analysis(void);
250 extern int analyze_preprocessor_line(string /*line*/, int /*C_line_number*/);
251 /* return.c */
252 extern entity Generate_C_ReturnLabel(entity /*m*/);
254 extern void Reset_C_ReturnStatement(void);
255 extern statement Get_C_ReturnStatement(void);
256 extern statement C_MakeReturnStatement(list /*el*/, int /*ln*/, string /*c*/);
257 extern int GetReturnNumber(void);
258 extern void FixCReturnStatements(statement /*ms*/);
259 /* cyacc.tab.c */
260 extern entity GetFunction(void);
261 extern void reset_expression_comment(void);
262 extern string pop_block_scope(string /*old_scope*/);
263 extern string scope_to_block_scope(string /*full_scope*/);
265 extern void InitScope(void);
266 extern int ScopeStackSize(void);
267 extern string GetScope(void);
268 extern string GetParentScope(void);
269 extern void ExitScope(void);
270 extern void PushContext(c_parser_context /*c*/);
271 extern void PopContext(void);
272 extern c_parser_context GetContext(void);
273 extern c_parser_context GetContextCopy(void);
274 extern void reset_declaration_counter(void);
275 extern int get_declaration_counter(void);
276 extern void init_c_parser_scope_stack(void);
277 extern void reset_c_parser_scope_stack(void);
278 extern void force_reset_c_parser_scope_stack(void);
279 extern void push_new_c_parser_scope(void);
280 extern void pop_c_parser_scope_stack(void);
281 extern bool c_parser_scope_stack_empty_p(void);
282 extern string get_c_parser_current_scope(void);
283 extern string get_c_parser_nth_scope(int /*n*/);
284 extern int c_parser_number_of_scopes(void);
285 extern int c_debug;
286 extern int c_char;
287 extern int c_nerrs;
288 extern int c_parse(void);
289 /* clexer.c */
290 extern int c_leng;
291 extern FILE *c_in;
292 extern FILE *c_out;
293 extern int c_lineno;
294 extern int c__flex_debug;
295 extern char *c_text;
296 extern int C_line_increment;
297 extern int get_previous_c_lineno(void);
298 extern unsigned int character_occurences_in_string(string /*s*/, char /*c*/);
299 extern int get_current_C_line_number(void);
300 extern int get_previous_C_line_number(void);
301 extern void set_current_C_line_number(void);
302 extern void push_current_C_line_number(void);
303 extern int pop_current_C_line_number(void);
304 extern void reset_current_C_line_number(void);
305 extern void error_reset_current_C_line_number(void);
306 extern void reset_token_has_been_seen_p(void);
307 extern string get_current_C_comment(void);
308 extern void push_current_C_comment(void);
309 extern string pop_current_C_comment(void);
310 extern void update_C_comment(string /*a_comment*/);
311 extern void remove_LFs_from_C_comment(int /*extra_LF*/);
312 extern void discard_C_comment(void);
313 extern void reset_C_comment(bool /*is_compilation_unit_p*/);
314 extern void error_reset_C_comment(bool /*is_compilation_unit_p*/);
315 extern void clear_C_comment(void);
316 extern void init_C_comment(void);
317 extern int c_lex(void);
318 extern void c_restart(FILE */*input_file*/);
319 extern void c_pop_buffer_state(void);
320 extern int c_get_lineno(void);
321 extern FILE *c_get_in(void);
322 extern FILE *c_get_out(void);
323 extern int c_get_leng(void);
324 extern char *c_get_text(void);
325 extern void c_set_lineno(int /*_line_number*/);
326 extern void c_set_in(FILE */*_in_str*/);
327 extern void c_set_out(FILE */*_out_str*/);
328 extern int c_get_debug(void);
329 extern void c_set_debug(int /*_bdebug*/);
330 extern int c_lex_destroy(void);
331 extern void *c_alloc(yy_size_t /*size*/);
332 extern void *c_realloc(void */*ptr*/, yy_size_t /*size*/);
333 extern void c_free(void */*ptr*/);
334 extern void c_error(char */*msg*/);
335 extern void c_reset_lex(void);
336 extern int c_wrap(void);
337 #endif /* c_syntax_header_included */
void error_reset_c_parser_current_user_input_file_name(void)
Definition: c_parser.c:112
string get_current_C_comment(void)
Return the current comment as a string to be freed by the caller and reset the current comment.
Definition: clexer.c:1282
value MakeEnumeratorInitialValue(list, int)
Definition: util.c:3299
entity MakeDerivedEntity(string, list, bool, int)
Definition: util.c:3140
void parser_init_keyword_typedef_table(void)
Definition: c_parser.c:193
statement MakeBreakStatement(string)
Definition: statement.c:849
void c_set_lineno(int)
int derived_counter
Definition: c_parser.c:125
int analyze_preprocessor_line(string, int)
Analyze information about user line number provided by the C preprocessor and by PIPS file splitter a...
Definition: util.c:3617
char * c_text
void UpdateAbstractEntity(entity, stack)
Definition: util.c:2842
statement MakeDefaultStatement(void)
Definition: statement.c:827
bool compilation_unit_parser(const char *)
Definition: c_parser.c:746
expression MakeArrayExpression(expression, list)
FI: this function is called for a bracketed comma expression.
Definition: util.c:713
string CreateMemberScope(string, bool)
Definition: util.c:3261
list TakeDerivedEntities(list)
Definition: util.c:3020
void c_parser_put_new_typedef(const char *)
Store named type for the lexical analyzer, which has to decide if a character string is the name of a...
Definition: util.c:1060
void reset_expression_comment(void)
we don't want an expression comment with new lines, it is disgracefull
Definition: cyacc.tab.c:169
void * c_alloc(yy_size_t)
void PushContext(c_parser_context)
Definition: cyacc.tab.c:434
void ResetCurrentModule(void)
Definition: statement.c:125
type UpdateType(type, type)
This function replaces the undefined field in t1 by t2.
Definition: util.c:1693
void CCompilationUnitMemoryAllocations(entity, bool)
This function allocates the memory to the Current Compilation Unit.
Definition: util.c:1881
void UpdateFunctionEntity(entity, list)
The parser has found out that an entity is a function and partially sets its type.
Definition: util.c:1614
entity get_current_compilation_unit_entity(void)
Definition: util.c:320
void MakeTopLevelEntity(void)
Definition: util.c:157
c_parser_context GetContextCopy(void)
Definition: cyacc.tab.c:476
statement MakeForloop(expression, expression, expression, statement)
Create a for-loop statement with some parser-specific characteristics.
Definition: statement.c:358
void c_free(void *)
void remove_LFs_from_C_comment(int)
Remove "extra_LF" trailing LF from C_current_comment if they can be found at the end of the comment s...
Definition: clexer.c:1398
void StackPop(stack)
The OffsetStack is poped n times, where n is the number of formal arguments of the actual function.
Definition: util.c:3450
entity DynamicArea
These global variables are declared in ri-util/util.c.
Definition: area.c:57
statement Get_C_ReturnStatement(void)
This function is used to generate all goto's towards the unique return used to C replace return state...
Definition: return.c:130
list add_prettyprint_control_list_to_declaration_statement(statement, list)
The control list is hidden as arguments to the call to CONTROL in the declaration statement s.
Definition: statement.c:920
void FixCReturnStatements(statement)
When return statements have been encountered, each of them has been replaced by a goto to a unique re...
Definition: return.c:223
void UpdateEntities(list, stack, stack, stack, stack, bool, bool)
Definition: util.c:2733
c_parser_context GetContext(void)
Definition: cyacc.tab.c:458
expression MakeFunctionExpression(expression, list)
e is now owned by returned expression and must not be used any longer
Definition: util.c:368
entity HeapArea
Definition: area.c:59
void UpdateDerivedEntities(list, list, stack)
Definition: util.c:3097
entity FindEntityFromLocalName(string)
Definition: util.c:778
FILE * c_get_out(void)
stack SwitchControllerStack
Definition: statement.c:63
void set_c_parser_current_input_file_name(string)
Definition: c_parser.c:65
void c_set_in(FILE *)
int get_previous_c_lineno(void)
Definition: clexer.c:1115
type UpdateFinalPointer(type, type)
Definition: util.c:1427
entity StaticArea
Definition: area.c:58
void UpdateArrayEntity(entity, list, list)
Definition: util.c:1514
bool check_declaration_uniqueness_p(statement)
This is designed for standard C functions, not for compilation units.
Definition: util.c:3540
void UpdatePointerEntity(entity, type, list)
Definition: util.c:1444
void reset_c_parser_current_input_file_name(void)
Definition: c_parser.c:73
expression MemberDerivedIdentifierToExpression(type, string)
Definition: util.c:463
list insert_qualifier(list, qualifier)
if qualifier "nq" does not already belong to qualifier list "ql", add it in front of the list.
Definition: util.c:3567
void push_new_c_parser_scope(void)
Definition: cyacc.tab.c:549
void set_prettyprint_control_list_to_dummy(void)
Definition: statement.c:1084
stack LoopStack
Definition: statement.c:64
void put_to_entity_type_stack_table(entity, stack value)
Definition: c_parser.c:139
int c_get_debug(void)
void init_c_parser_scope_stack(void)
Definition: cyacc.tab.c:514
void reset_token_has_been_seen_p(void)
Definition: clexer.c:1270
void discard_C_comment(void)
Discard a C comment because we don't know how to deal with it.
Definition: clexer.c:1426
int GetReturnNumber(void)
Definition: return.c:214
entity Generate_C_ReturnLabel(entity)
return.c
Definition: return.c:58
bool c_parser(const char *)
Definition: c_parser.c:739
int c__flex_debug
void * c_realloc(void *, yy_size_t)
void ExitScope(void)
Definition: cyacc.tab.c:400
string get_c_parser_current_scope(void)
Definition: cyacc.tab.c:569
void set_current_C_line_number(void)
Definition: clexer.c:1166
void push_current_C_comment(void)
Push the current C comment so that we can get it back when building the statement later.
Definition: clexer.c:1331
void reset_preprocessor_line_analysis(void)
Definition: util.c:3592
expression MemberIdentifierToExpression(expression, string)
Definition: util.c:498
void make_predefined_C_entities(string)
Definition: c_parser.c:425
void ResetCurrentCompilationUnitEntity(bool)
Definition: util.c:349
void init_c_areas(void)
In C we have 4 areas.
Definition: util.c:186
dimension MakeDimension(list, list)
Definition: util.c:1389
entity get_top_level_entity(void)
Definition: util.c:152
entity FindOrCreateEntityFromLocalNameAndPrefix(string, string, bool)
Definition: util.c:811
parameter FindParameterEntity(string, int, list)
Definition: util.c:3384
list LabeledStatements
BlockStack is used to handle block scope.
Definition: statement.c:60
void reset_c_parser_scope_stack(void)
Definition: cyacc.tab.c:522
void set_entity_initial(entity, expression)
Be careful if the initial value has already been set.
Definition: util.c:3469
FILE * c_out
bool c_parser_error(const char *, const char *)
Output a parser message error.
Definition: c_parser.c:266
void reset_declaration_counter(void)
Definition: cyacc.tab.c:492
stack StructNameStack
Definition: c_parser.c:121
void RemoveFromExterns(entity)
Definition: util.c:2884
void InitializeBlock(void)
Definition: statement.c:143
int c_parse()
int get_current_C_line_number(void)
Definition: clexer.c:1146
void Reset_C_ReturnStatement(void)
The return statement must be reset when it is used by the parser to add the return statement to the f...
Definition: return.c:115
void InitializeEnumMemberValues(list)
Definition: util.c:3104
list CalledModules
Definition: c_parser.c:51
stack SwitchGotoStack
list of labeled statements of the current module
Definition: statement.c:62
stack BlockStack
statement.c
Definition: statement.c:58
FILE * c_get_in(void)
void c_set_debug(int)
c_parser_context CreateDefaultContext(void)
Definition: cyacc.tab.c:292
int c_char
void c_error(char *)
string compilation_unit_name
cproto-generated files
Definition: c_parser.c:49
entity FindEntityFromLocalNameAndPrefixAndScope(string, string, string)
The parameter "scope" is potentially destroyed.
Definition: util.c:850
int ScopeStackSize(void)
Definition: cyacc.tab.c:366
int c_lex()
entity MakeCLabel(string)
Definition: statement.c:278
string get_c_parser_nth_scope(int)
Definition: cyacc.tab.c:581
list MakeParameterList(list, list, stack)
Definition: util.c:3348
string pop_current_C_comment(void)
Pop the current comment.
Definition: clexer.c:1352
int C_line_increment
from "clex.l"
Definition: c_syntax.h:296
void UpdateEntity(entity, stack, stack, stack, stack, bool, bool)
Update the entity with final type, storage and initial value; and also (sometimes?...
Definition: util.c:2473
void reset_c_parser_current_user_input_file_name(void)
Definition: c_parser.c:104
void error_reset_c_parser_current_input_file_name(void)
Definition: c_parser.c:81
storage MakeStorageRam(entity, bool, bool)
The storage part should not be called twice when reparsing compilation unit.
Definition: util.c:3177
void init_entity_type_storage_table(void)
Definition: c_parser.c:131
statement Generate_C_ReturnStatement(void)
Definition: return.c:84
void MakeCurrentModule(entity)
is used for switch statements also, because we do not distinguish a break in a loop or a switch
Definition: statement.c:67
string scope_to_block_scope(string)
Allocate a new string containing only block scope information.
Definition: cyacc.tab.c:268
string get_c_parser_current_input_file_name(void)
Definition: c_parser.c:58
void CreateReturnEntity(entity)
If necessary, create the return entity, which is a hidden variable used in PIPS internal representati...
Definition: util.c:2382
void reset_current_dummy_parameter_number(void)
Definition: util.c:144
unsigned int character_occurences_in_string(string, char)
Use a stack to survive to file inclusions if any.
Definition: clexer.c:1133
statement MakeSwitchStatement(statement)
Definition: statement.c:586
void init_C_comment(void)
Definition: clexer.c:1513
int c_get_lineno(void)
void reset_current_C_line_number(void)
Definition: clexer.c:1210
entity StackArea
Definition: area.c:60
void NStackPop(stack, int)
Pop n times the stack s.
Definition: util.c:3442
void put_new_typedef(const char *)
This function is used by libraries "step"* and "task_parallelization".
Definition: util.c:1078
void c_parser_user_warning_func(const char *, const char *, const int, const char *,...)
Definition: util.c:112
statement ExpressionToStatement(expression)
e is now owned by returned statement
Definition: statement.c:880
void InitScope(void)
Definition: cyacc.tab.c:306
void push_current_C_line_number(void)
The line number stack, designed for structured control structure, is not used yet.
Definition: clexer.c:1194
string GetParentScope(void)
Definition: cyacc.tab.c:387
void reset_C_comment(bool)
reset and reset_error should be handled differently
Definition: clexer.c:1450
stack get_from_entity_type_stack_table(entity)
Definition: c_parser.c:146
bool c_parser_scope_stack_empty_p(void)
Definition: cyacc.tab.c:564
void UpdateEntity2(entity, stack, stack)
void pop_c_parser_scope_stack(void)
Definition: cyacc.tab.c:558
statement MakeForloopWithIndexDeclaration(list, expression, expression, statement)
Create a C99 for-loop statement with a declaration as first parameter in the for clause,...
Definition: statement.c:508
statement FindStatementFromLabel(entity)
Definition: statement.c:189
bool extern_prettyprint_control_list_p(void)
void reset_prettyprint_control_list_to_extern(void)
Definition: statement.c:1053
void c_parser_user_warning_alist(const char *, const char *, const int, const char *, va_list *)
util.c
Definition: util.c:60
void c_pop_buffer_state(void)
bool dummy_prettyprint_control_list_p(void)
Provide the information only once.
Definition: statement.c:1090
statement MakeCaseStatement(expression)
Transform.
Definition: statement.c:712
void SubstituteDummyParameters(entity, list)
Definition: util.c:2351
char * c_get_text(void)
string pop_block_scope(string)
The scope is moved up the scope tree and a NULL is return when there are no more scope to explore.
Definition: cyacc.tab.c:235
void CCompilationUnitMemoryReallocation(entity)
Definition: util.c:1972
bool compilation_unit_parser_is_running_p
To pass down the information to functions used by the syntactical analyzer.
Definition: c_parser.c:541
int c_parser_number_of_scopes(void)
Definition: cyacc.tab.c:587
int c_leng
clexer.c
void UpdateParenEntity(entity, list)
Definition: util.c:1368
entity FindOrCreateCurrentEntity(string, stack, stack, stack, bool)
entity FindOrCreateEntityFromLocalNameAndPrefixAndScope(string, string, string, bool)
Definition: util.c:820
void AddToCalledModules(entity)
Definition: util.c:3413
void c_reset_lex(void)
void c_restart(FILE *)
void UpdateDerivedEntity(list, entity, stack)
Definition: util.c:2942
void remove_entity_type_stack(entity)
Definition: c_parser.c:156
stack OffsetStack
Definition: c_parser.c:120
statement MakeBlock(list)
Create a block statement.
Definition: statement.c:153
statement MakeContinueStatement(string)
Definition: statement.c:865
void AddToExterns(entity, entity)
Definition: util.c:2898
void c_set_out(FILE *)
void error_reset_current_C_line_number(void)
Definition: clexer.c:1224
stack FunctionStack
Definition: c_parser.c:118
entity RenameFunctionEntity(entity)
Rename function oe if necessary.
Definition: util.c:1556
void remove_entity_type_stacks(list)
Definition: c_parser.c:179
entity AllocatableArea
Definition: area.c:61
int c_wrap(void)
int c_debug
entity make_C_constant_entity(string, tag, size_t)
Definition: util.c:269
int c_lex_destroy(void)
int c_get_leng(void)
statement C_MakeReturnStatement(list, int, string)
This function creates a goto instruction to label end_label.
Definition: return.c:155
void error_reset_C_comment(bool)
void CModuleMemoryAllocation(entity)
This function is for MemoryAllocation for Module of C programs.
Definition: util.c:1979
void MakeCurrentCompilationUnitEntity(const char *)
A compilation unit is also considered as a module.
Definition: util.c:328
int get_previous_C_line_number(void)
Should be called just before get_current_C_line_number.
Definition: clexer.c:1161
int ComputeAreaOffset(entity, entity)
Definition: util.c:3324
FILE * c_in
Warning! Do not modify this file that is automatically generated!
Definition: c_syntax.h:291
expression IdentifierToExpression(string)
Definition: util.c:650
list removable_extern_entities
Definition: c_parser.c:542
string GetScope(void)
Definition: cyacc.tab.c:371
void set_prettyprint_control_list_to_extern(void)
Definition: statement.c:1042
void RemoveDummyArguments(entity, list)
To chase formals in type declarations.
Definition: util.c:2224
int loop_counter
Global counter.
Definition: c_parser.c:124
statement MakeWhileLoop(list, statement, bool)
Definition: statement.c:297
entity CreateEntityFromLocalNameAndPrefix(string, string, bool)
Definition: util.c:962
void init_c_implicit_variables(entity)
Definition: util.c:277
stack FormalStack
Definition: c_parser.c:119
void CleanUpEntities(list)
Definition: util.c:2772
string get_c_parser_current_user_input_file_name(void)
Definition: c_parser.c:89
void reset_entity_type_stack_table(void)
Definition: c_parser.c:186
void force_reset_c_parser_scope_stack(void)
To be used by an error handler.
Definition: cyacc.tab.c:539
void StackPush(stack)
The OffsetStack is pushed incrementally.
Definition: util.c:3457
bool CheckExternList(void)
Definition: util.c:1025
void clear_C_comment(void)
Definition: clexer.c:1489
void UseDummyArguments(entity)
If f has regular formal parameters, destroy them.
Definition: util.c:2019
void PopContext(void)
Definition: cyacc.tab.c:441
statement MakeLabeledStatement(string, statement, string)
Construct a new statement from.
Definition: statement.c:204
void update_C_comment(string)
Add a comment to the current one.
Definition: clexer.c:1365
entity FindEntityFromLocalNameAndPrefix(string, string)
Definition: util.c:877
int get_declaration_counter(void)
Definition: cyacc.tab.c:497
stack ContextStack
Definition: c_parser.c:117
entity GetFunction(void)
cproto workaround
Definition: cyacc.tab.c:146
void AddToDeclarations(entity, entity)
FI: check the difference with AddEntityToDeclarations()
Definition: util.c:2924
statement MakeGotoStatement(string)
Definition: statement.c:254
statement ModuleStatement
Definition: c_parser.c:53
int pop_current_C_line_number(void)
Definition: clexer.c:1202
int c_lineno
the file read in by the c_lexer
Definition: c_syntax.h:293
int c_nerrs
void set_c_parser_current_user_input_file_name(string)
Definition: c_parser.c:96
void CCompilationUnitMemoryAllocation(entity)
Definition: util.c:1967
void UseFormalArguments(entity)
If f has dummy formal parameters, replace them by standard formal parameters.
Definition: util.c:2063
size_t yy_size_t
Definition: genread_lex.c:413
int tag
TAG.
Definition: newgen_types.h:92
the stack head
Definition: stack.c:62
The structure used to build lists in NewGen.
Definition: newgen_list.h:41