PIPS
syntax.h
Go to the documentation of this file.
1 /* Warning! Do not modify this file that is automatically generated! */
2 /* Modify src/Libs/syntax/syntax-local.h instead, to add your own modifications. */
3 
4 /* header file built by cproto */
5 
6 #ifndef syntax_header_included
7 #define syntax_header_included
8 /* syntax-local.h */
9 /*
10 
11  $Id: syntax-local.h 23065 2016-03-02 09:05:50Z 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 /* Legal characters to start a comment line
33  *
34  * '\n' is added to cope with empty lines
35  * Empty lines with SPACE and TAB characters
36  * are be preprocessed and reduced to an empty line by GetChar().
37  */
38 #define START_COMMENT_LINE "CcDd*!#\n"
39 
40 /* lex yacc interface */
41 extern FILE * syn_in;
42 extern int syn_lex();
43 extern void syn_reset_lex();
44 extern int syn_parse();
45 extern void syn_error(const char*);
46 
47 /* definition of implementation dependent constants */
48 
49 #include "constants.h"
50 
51 #define HASH_SIZE 1013
52 #define FORMATLENGTH (4096)
53 #define LOCAL static
54 
55 #ifndef abs
56 #define abs(v) (((v) < 0) ? -(v) : (v))
57 #endif
58 
59 /* extern char * getenv(); */
60 
61 #define Warning(f,m) \
62 (user_warning(f,"Warning between lines %d and %d\n%s\n",line_b_I,line_e_I,m) )
63 
64 #define FatalError(f,m) \
65 (pips_internal_error("Fatal error between lines %d and %d\n%s\n",line_b_I,line_e_I,m))
66 
67 /* These global variables are declared in ri-util/util.c */
68 extern entity DynamicArea;
69 extern entity StaticArea;
70 extern entity HeapArea;
71 extern entity StackArea;
72 extern entity AllocatableArea;
73 
74 #include "parser_private.h"
75 
76 /* cproto-generated files */
77 /* declaration.c */
78 extern int SafeSizeOfArray(entity /*a*/);
79 extern void InitAreas(void);
80 extern void save_all_entities(void);
81 extern void SaveEntity(entity /*e*/);
82 extern void MakeVariableStatic(entity /*v*/, bool /*force_it*/);
83 extern void ProcessSave(entity /*v*/);
84 extern void save_initialized_variable(entity /*v*/);
85 extern void SaveCommon(entity /*c*/);
86 extern void PrintData(cons */*ldvr*/, cons */*ldvl*/);
87 extern void AnalyzeData(list /*ldvr*/, list /*ldvl*/);
88 extern void MakeDataStatement(list /*ldr*/, list /*ldv*/);
89 extern void DeclarePointer(entity /*ptr*/, entity /*pointed_array*/, list /*decl_dims*/);
90 extern void DeclareVariable(entity /*e*/, type /*t*/, list /*d*/, storage /*s*/, value /*v*/);
91 extern void DeclareIntrinsic(entity /*e*/);
92 extern bool fortran_relevant_area_entity_p(entity /*c*/);
93 extern void initialize_common_size_map(void);
94 extern void reset_common_size_map(void);
95 extern void reset_common_size_map_on_error(void);
96 extern bool common_to_defined_size_p(entity /*a*/);
97 extern size_t common_to_size(entity /*a*/);
98 extern void set_common_to_size(entity /*a*/, size_t /*size*/);
99 extern void update_common_to_size(entity /*a*/, size_t /*new_size*/);
100 extern entity MakeCommon(entity /*e*/);
101 extern entity NameToCommon(string /*n*/);
102 extern void AddVariableToCommon(entity /*c*/, entity /*v*/);
103 extern int CurrentOffsetOfArea(entity /*a*/, entity /*v*/);
104 extern void update_common_sizes(void);
105 extern void InitImplicit(void);
106 extern void cr_implicit(tag /*t*/, int /*l*/, int /*lettre_d*/, int /*lettre_f*/);
107 extern type ImplicitType(entity /*e*/);
108 extern bool implicit_type_p(entity /*e*/);
109 extern void retype_formal_parameters(void);
110 extern type MakeFortranType(tag /*t*/, value /*v*/);
111 extern int OffsetOfReference(reference /*r*/);
112 extern int ValueOfIthLowerBound(entity /*e*/, int /*i*/);
113 extern int SizeOfRange(range /*r*/);
114 extern int IsIntegerScalar(entity /*e*/);
115 extern void update_user_common_layouts(entity /*m*/);
116 extern bool update_common_layout(entity /*m*/, entity /*c*/);
117 extern entity SafeFindOrCreateEntity(const char */*package*/, const char */*name*/);
118 extern void add_entity_to_declarations(string /*name*/, string /*area_name*/, enum basic_utype tag, void */*val*/);
119 /* expression.c */
120 extern char vcid_syntax_expression[];
121 extern entity MakeParameter(entity /*e*/, expression /*x*/);
122 extern expression MakeImpliedDo(syntax /*v*/, range /*r*/, cons */*l*/);
123 extern expression loop_to_implieddo(loop /*l*/);
124 extern syntax MakeAtom(entity /*e*/, cons */*indices*/, expression /*fc*/, expression /*lc*/, int /*HasParenthesis*/);
125 extern cons *MakeIoList(cons */*l*/);
126 extern list FortranExpressionList(list /*l*/);
127 extern expression MakeFortranBinaryCall(entity /*op*/, expression /*e1*/, expression /*e2*/);
128 extern expression MakeFortranUnaryCall(entity /*op*/, expression /*e1*/);
129 extern syntax CheckLeftHandSide(syntax /*s*/);
130 extern entity make_Fortran_constant_entity(string /*name*/, tag /*bt*/, size_t /*size*/);
131 /* equivalence.c */
132 extern char vcid_syntax_equivalence[];
133 extern void ResetChains(void);
134 extern void SetChains(void);
135 extern atom MakeEquivAtom(syntax /*s*/);
136 extern void StoreEquivChain(chain /*c*/);
137 extern void ComputeEquivalences(void);
138 extern int AddOrMergeChain(chain /*ct*/);
139 extern int ChainIntersection(cons */*opc1*/, cons */*opc2*/);
140 extern cons *MergeTwoChains(cons */*opc1*/, cons */*opc2*/);
141 extern void PrintChains(equivalences /*e*/);
142 extern void PrintChain(chain /*c*/);
143 extern bool entity_in_equivalence_chains_p(entity /*e*/);
144 extern bool entity_in_equivalence_chain_p(entity /*e*/, chain /*c*/);
145 extern void ComputeAddresses(void);
146 extern void SaveChains(void);
147 /* parser.c */
148 extern char *CurrentFN;
149 extern cons *FormalParameters;
150 extern const char *CurrentPackage;
151 extern int line_b_I;
152 extern int line_e_I;
153 extern int line_b_C;
154 extern int line_e_C;
155 extern char lab_I[6];
156 extern void reset_current_label_string(void);
157 extern string get_current_label_string(void);
158 extern void set_current_label_string(string /*ln*/);
159 extern bool empty_current_label_string_p(void);
160 extern char FormatValue[(4096)];
161 extern bool InParserError;
162 extern bool ParserError(const char */*f*/, const char */*m*/);
163 extern void BeginingOfParsing(void);
164 extern bool hpfc_parser(const string /*module*/);
165 extern bool parser(const string /*module*/);
166 extern void init_parser_properties(void);
167 /* procedure.c */
168 extern void init_ghost_variable_entities(void);
169 extern void substitute_ghost_variable_in_expression(expression /*expr*/, entity /*v*/, entity /*f*/);
170 extern void substitute_ghost_variable_in_statement(statement /*stmt*/, entity /*v*/, entity /*f*/);
171 extern void remove_ghost_variable_entities(bool /*substitute_p*/);
172 extern void add_ghost_variable_entity(entity /*e*/);
173 extern void reify_ghost_variable_entity(entity /*e*/);
174 extern bool ghost_variable_entity_p(entity /*e*/);
175 extern void BeginingOfProcedure(void);
176 extern void update_called_modules(entity /*e*/);
177 extern void remove_from_called_modules(entity /*e*/);
178 extern void AbortOfProcedure(void);
179 extern void EndOfProcedure(void);
180 extern void UpdateFunctionalType(entity /*f*/, list /*l*/);
181 extern void remove_module_entity(entity /*m*/);
182 extern void MakeCurrentFunction(type /*t*/, int /*msf*/, const char */*cfn*/, list /*lfp*/);
183 extern void ResetEntries(void);
184 extern void AbortEntries(void);
185 extern bool EmptyEntryListsP(void);
186 extern void AddEntryLabel(entity /*l*/);
187 extern void AddEntryTarget(statement /*s*/);
188 extern void AddEntryEntity(entity /*e*/);
189 extern void AddEffectiveFormalParameter(entity /*f*/);
190 extern bool IsEffectiveFormalParameterP(entity /*f*/);
191 extern entity SafeLocalToGlobal(entity /*e*/, type /*r*/);
192 extern type MakeResultType(entity /*e*/, type /*r*/);
193 extern entity LocalToGlobal(entity /*e*/);
194 extern instruction MakeEntry(entity /*e*/, list /*lfp*/);
195 extern void ProcessEntries(void);
196 extern entity NameToFunctionalEntity(string /*name*/);
197 extern void TypeFunctionalEntity(entity /*fe*/, type /*r*/);
198 extern entity MakeExternalFunction(entity /*e*/, type /*r*/);
200 extern void MakeFormalParameter(entity /*m*/, entity /*fp*/, int /*nfp*/);
201 extern void ScanFormalParameters(entity /*m*/, list /*l*/);
202 extern void UpdateFormalStorages(entity /*m*/, list /*lfp*/);
203 /* reader.c */
204 extern char *Comm;
205 extern char *PrevComm;
206 extern char *CurrComm;
207 extern int iComm;
208 extern int iPrevComm;
209 extern int iCurrComm;
211 extern void parser_reset_all_reader_buffers(void);
212 extern void init_parser_reader_properties(void);
213 extern int syn_wrap(void);
214 extern void ScanNewFile(void);
215 extern int IsCapKeyword(char */*s*/);
216 extern int PipsGetc(FILE */*fp*/);
217 extern int GetChar(FILE */*fp*/);
218 extern int ReadLine(FILE */*fp*/);
219 extern int ReadStmt(FILE */*fp*/);
220 extern void CheckParenthesis(void);
221 extern int FindDoWhile(void);
222 extern int FindDo(void);
223 extern int FindImplicit(void);
224 extern int FindIfArith(void);
225 extern void FindIf(void);
226 extern void FindAutre(void);
227 extern int FindAssign(void);
228 extern void FindPoints(void);
229 extern size_t FindProfZero(int /*c*/);
230 extern size_t FindMatchingPar(size_t /*i*/);
231 extern int StmtEqualString(char */*s*/, int /*i*/);
232 extern int CapitalizeStmt(char /*s*/[], int /*i*/);
233 extern int NeedKeyword(void);
234 extern void dump_current_statement(void);
235 extern int get_statement_number(void);
236 /* statement.c */
237 extern void parser_reset_StmtHeap_buffer(void);
238 extern statement LabelToStmt(string /*l*/);
239 extern void CheckAndInitializeStmt(void);
240 extern void NewStmt(entity /*e*/, statement /*s*/);
241 extern void ResetBlockStack(void);
242 extern bool IsBlockStackEmpty(void);
243 extern bool IsBlockStackFull(void);
244 extern void PushBlock(instruction /*i*/, string /*l*/);
245 extern instruction PopBlock(void);
246 extern entity MakeLabel(const char */*s*/);
249 extern statement MakeStatement(entity /*l*/, instruction /*i*/);
250 extern void LinkInstToCurrentBlock(instruction /*i*/, bool /*number_it*/);
252 extern instruction MakeZeroOrOneArgCallInst(char */*s*/, expression /*e*/);
253 extern instruction MakeGotoInst(string /*n*/);
255 extern instruction MakeComputedGotoInst(list /*ll*/, expression /*e*/);
256 extern instruction MakeAssignedGotoInst(list /*ll*/, entity /*i*/);
257 extern instruction MakeAssignedOrComputedGotoInst(list /*ll*/, expression /*ce*/, bool /*assigned*/);
258 extern instruction MakeAssignInst(syntax /*l*/, expression /*e*/);
259 extern void update_functional_type_result(entity /*f*/, type /*nt*/);
261 extern instruction MakeCallInst(entity /*e*/, cons */*l*/);
262 extern void MakeDoInst(syntax /*s*/, range /*r*/, string /*l*/);
263 extern void MakeWhileDoInst(expression /*c*/, string /*l*/);
266 extern instruction MakeArithmIfInst(expression /*e*/, string /*l1*/, string /*l2*/, string /*l3*/);
267 extern void MakeBlockIfInst(expression /*e*/, int /*elsif*/);
268 extern int MakeElseInst(bool /*is_else_p*/);
269 extern void MakeEndifInst(void);
270 extern void MakeEnddoInst(void);
271 extern string NameOfToken(int /*token*/);
272 extern statement make_check_io_statement(string /*n*/, expression /*u*/, entity /*l*/);
273 extern instruction MakeIoInstA(int /*keyword*/, list /*lci*/, list /*lio*/);
274 extern instruction MakeIoInstB(int /*keyword*/, expression /*e1*/, expression /*e2*/, expression /*e3*/, expression /*e4*/);
275 extern instruction MakeSimpleIoInst1(int /*keyword*/, expression unit);
276 extern instruction MakeSimpleIoInst2(int /*keyword*/, expression /*f*/, list /*io_list*/);
277 extern void reset_first_statement(void);
278 extern void set_first_format_statement(void);
279 extern bool first_executable_statement_seen(void);
280 extern bool first_format_statement_seen(void);
281 extern void check_in_declarations(void);
282 extern void check_first_statement(void);
283 /* return.c */
284 extern void SubstituteAlternateReturns(const char */*option*/);
285 extern bool SubstituteAlternateReturnsP(void);
286 extern entity GetReturnCodeVariable(void);
287 extern bool ReturnCodeVariableP(entity /*rcv*/);
288 extern void ResetReturnCodeVariable(void);
289 extern bool uses_alternate_return_p(void);
290 extern void uses_alternate_return(bool /*use*/);
294 extern list add_formal_return_code(list /*fpl*/);
295 extern list add_actual_return_code(list /*apl*/);
296 extern void add_alternate_return(string /*label_name*/);
297 extern list get_alternate_returns(void);
298 extern void set_alternate_returns(void);
299 extern void reset_alternate_returns(void);
300 extern void soft_reset_alternate_returns(void);
301 extern instruction generate_return_code_checks(list /*labels*/);
302 extern instruction MakeReturn(expression /*e*/);
303 extern void GenerateReturn(void);
304 /* malloc-info.c */
305 extern void print_malloc_info(FILE */*fd*/);
306 extern void print_full_malloc_info(FILE */*fd*/);
307 /* macros.c */
308 extern void parser_init_macros_support(void);
309 extern void parser_close_macros_support(void);
310 extern bool parser_entity_macro_p(entity /*e*/);
311 extern void parser_add_a_macro(call /*c*/, expression /*e*/);
313 extern void parser_macro_expansion(expression /*e*/);
314 extern void parser_substitute_all_macros(statement /*s*/);
316 /* syn_yacc.c */
317 extern int ici;
318 extern type CurrentType;
320 extern int syn_char;
321 extern int syn_nerrs;
322 extern int syn_parse(void);
323 /* scanner.c */
324 extern int syn_leng;
325 extern FILE *syn_in;
326 extern FILE *syn_out;
327 extern int syn_lineno;
328 extern int syn__flex_debug;
329 extern char *syn_text;
330 extern int syn_lex(void);
331 extern void syn_restart(FILE */*input_file*/);
332 extern void syn_pop_buffer_state(void);
333 extern int syn_get_lineno(void);
334 extern FILE *syn_get_in(void);
335 extern FILE *syn_get_out(void);
336 extern int syn_get_leng(void);
337 extern char *syn_get_text(void);
338 extern void syn_set_lineno(int /*_line_number*/);
339 extern void syn_set_in(FILE */*_in_str*/);
340 extern void syn_set_out(FILE */*_out_str*/);
341 extern int syn_get_debug(void);
342 extern void syn_set_debug(int /*_bdebug*/);
343 extern int syn_lex_destroy(void);
344 extern void *syn_alloc(yy_size_t /*size*/);
345 extern void *syn_realloc(void */*ptr*/, yy_size_t /*size*/);
346 extern void syn_free(void */*ptr*/);
347 extern void syn_error(const char */*msg*/);
348 extern void syn_reset_lex(void);
349 #endif /* syntax_header_included */
size_t yy_size_t
Definition: genread_lex.c:413
int tag
TAG.
Definition: newgen_types.h:92
int unit
UNIT.
Definition: newgen_types.h:97
basic_utype
Definition: ri.h:570
#define intptr_t
Definition: stdint.in.h:294
The structure used to build lists in NewGen.
Definition: newgen_list.h:41
int FindIfArith(void)
Definition: reader.c:1134
void UpdateFunctionalType(entity, list)
This function analyzes the CurrentFunction formal parameter list to determine the CurrentFunction fun...
Definition: procedure.c:1131
void EndOfProcedure(void)
This function is called when the parsing of a procedure is completed.
Definition: procedure.c:979
char * Comm
reader.c
Definition: reader.c:152
bool entity_in_equivalence_chains_p(entity)
Definition: equivalence.c:403
bool update_common_layout(entity, entity)
(Re)compute offests of all variables allocated in common c from module m and update (if necessary) th...
Definition: declaration.c:1746
void DeclareVariable(entity, type, list, storage, value)
void DeclareVariable(e, t, d, s, v): update entity e description as declaration statements are encoun...
Definition: declaration.c:670
int get_current_number_of_alternate_returns(void)
Definition: return.c:197
instruction MakeZeroOrOneArgCallInst(char *, expression)
this function creates a simple Fortran statement such as RETURN, CONTINUE, ...
Definition: statement.c:669
void set_current_label_string(string)
Definition: parser.c:81
statement make_check_io_statement(string, expression, entity)
Generate a test to jump to l if flag f is TRUE Used to implement control effects of IO's due to ERR= ...
Definition: statement.c:1691
int line_e_C
Definition: parser.c:68
bool entity_in_equivalence_chain_p(entity, chain)
Definition: equivalence.c:420
expression fix_if_condition(expression)
Definition: statement.c:1293
instruction MakeIoInstA(int, list, list)
this function creates an IO statement.
Definition: statement.c:1715
bool hpfc_parser(const string)
parser for HPFC.
Definition: parser.c:286
entity MakeParameter(entity, expression)
lint
Definition: expression.c:52
list FortranExpressionList(list)
Make sure that no call to implied do is in l.
Definition: expression.c:492
int CapitalizeStmt(char[], int)
Definition: reader.c:1308
char * CurrentFN
parser.c
Definition: parser.c:49
void update_functional_type_result(entity, type)
Update of the type returned by function f.
Definition: statement.c:932
void MakeEndifInst(void)
Definition: statement.c:1578
int syn_leng
scanner.c
void ProcessSave(entity)
Definition: declaration.c:282
entity LocalToGlobal(entity)
Definition: procedure.c:1801
int OffsetOfReference(reference)
This function computes the numerical offset of a variable element from the begining of the variable.
Definition: declaration.c:1565
void parser_close_macros_support(void)
Definition: macros.c:72
void DeclareIntrinsic(entity)
Intrinsic e is used in the current module.
Definition: declaration.c:918
cons * FormalParameters
the current function
Definition: parser.c:55
void MakeCurrentFunction(type, int, const char *, list)
this function creates one entity cf that represents the Fortran function f being analyzed.
Definition: procedure.c:1239
void retype_formal_parameters(void)
If an IMPLICIT statement is encountered, it must be applied to the formal parameters,...
Definition: declaration.c:1411
entity NameToCommon(string)
Definition: declaration.c:1071
entity DynamicArea
These global variables are declared in ri-util/util.c.
Definition: area.c:57
bool IsBlockStackFull(void)
Definition: statement.c:215
bool ghost_variable_entity_p(entity)
Definition: procedure.c:292
expression MakeFortranBinaryCall(entity, expression, expression)
Definition: expression.c:502
FILE * syn_out
entity HeapArea
Definition: area.c:59
bool InParserError
Parser error handling.
Definition: parser.c:113
int syn__flex_debug
type MakeResultType(entity, type)
The result type of a function may be carried by e, by r or be implicit.
Definition: procedure.c:1754
void StoreEquivChain(chain)
This function is called when an equivalence chain has been completely parsed.
Definition: equivalence.c:176
void UpdateFormalStorages(entity, list)
this function check and set if necessary the storage of formal parameters in lfp.
Definition: procedure.c:2522
void CheckParenthesis(void)
Definition: reader.c:1032
void substitute_ghost_variable_in_statement(statement, entity, entity)
Definition: procedure.c:139
void SaveCommon(entity)
this function transforms a dynamic common into a static one.
Definition: declaration.c:295
void print_malloc_info(FILE *)
malloc-info.c
void ComputeEquivalences(void)
This function merges all the equivalence chains to take into account equivalences due to transitivity...
Definition: equivalence.c:215
int syn_char
void uses_alternate_return(bool)
Definition: return.c:171
void ResetReturnCodeVariable(void)
Definition: return.c:151
expression MakeImpliedDo(syntax, range, cons *)
expressions from input output lists might contain implied do loops.
Definition: expression.c:115
bool IsEffectiveFormalParameterP(entity)
Definition: procedure.c:1534
void AddEntryTarget(statement)
Definition: procedure.c:1518
int line_e_I
Definition: parser.c:68
void syn_set_in(FILE *)
bool parser_entity_macro_p(entity)
Definition: macros.c:108
size_t common_to_size(entity)
Definition: declaration.c:990
void update_user_common_layouts(entity)
Check...
Definition: declaration.c:1670
void parser_substitute_all_macros(statement)
Definition: macros.c:294
entity StaticArea
Definition: area.c:58
void reify_ghost_variable_entity(entity)
It is possible to change one's mind and effectively use an entity which was previously assumed useles...
Definition: procedure.c:284
instruction MakeSimpleIoInst1(int, expression unit)
Definition: statement.c:1854
int line_b_C
Definition: parser.c:68
char * PrevComm
Definition: reader.c:152
int get_statement_number(void)
eturn the line number of the statement being parsed
Definition: reader.c:1392
size_t FindProfZero(int)
Definition: reader.c:1248
intptr_t CurrentTypeSize
the type in a type or dimension or common statement
Definition: syn_yacc.c:103
void ResetChains(void)
undefine chains between two successives calls to parser
Definition: equivalence.c:65
int line_b_I
Indicates where the current instruction (in fact statement) starts and ends in the input file and giv...
Definition: parser.c:68
int NeedKeyword(void)
Definition: reader.c:1329
int syn_get_debug(void)
void AddEntryLabel(entity)
Definition: procedure.c:1513
int SizeOfRange(range)
This function computes the size of a range, ie.
Definition: declaration.c:1619
instruction MakeLogicalIfInst(expression, instruction)
this function creates a logical if statement.
Definition: statement.c:1329
void initialize_common_size_map(void)
Definition: declaration.c:947
entity MakeExternalFunction(entity, type)
Definition: procedure.c:2372
void MakeEnddoInst(void)
Definition: statement.c:1611
void update_common_to_size(entity, size_t)
Definition: declaration.c:1010
void syn_restart(FILE *)
int iCurrComm
Definition: reader.c:153
int CurrentOffsetOfArea(entity, entity)
Definition: declaration.c:1195
void AddEntryEntity(entity)
Definition: procedure.c:1523
void check_in_declarations(void)
Definition: statement.c:1976
void reset_first_statement(void)
Definition: statement.c:1944
bool ParserError(const char *, const char *)
Definition: parser.c:116
void reset_substitute_expression_in_expression(void)
Definition: macros.c:218
void check_first_statement(void)
This function is called each time an executable statement is encountered but is effective the first t...
Definition: statement.c:2004
void update_common_sizes(void)
Definition: declaration.c:1215
bool IsBlockStackEmpty(void)
Definition: statement.c:209
bool implicit_type_p(entity)
This function checks that entity e has an undefined or an implicit type which can be superseded by an...
Definition: declaration.c:1358
void syn_set_lineno(int)
instruction MakeAssignInst(syntax, expression)
this function creates an affectation statement.
Definition: statement.c:848
void remove_module_entity(entity)
Definition: procedure.c:1188
entity DeclareExternalFunction(entity)
Definition: procedure.c:2426
void add_alternate_return(string)
Definition: return.c:242
void CheckAndInitializeStmt(void)
this function looks for undefined labels.
Definition: statement.c:113
void set_common_to_size(entity, size_t)
Definition: declaration.c:1004
void parser_init_macros_support(void)
macros.c
Definition: macros.c:57
int GetChar(FILE *)
Routine de lecture physique.
Definition: reader.c:614
void GenerateReturn(void)
Generate a unique call to RETURN per module.
Definition: return.c:499
void parser_reset_StmtHeap_buffer(void)
statement.c
Definition: statement.c:85
void MakeBlockIfInst(expression, int)
this function and the two next ones create a block if statement.
Definition: statement.c:1498
bool first_executable_statement_seen(void)
Definition: statement.c:1964
int syn_get_lineno(void)
list add_formal_return_code(list)
Update the formal and actual parameter lists by adding the return code variable as last argument.
Definition: return.c:209
void PrintData(cons *, cons *)
a debugging function, just in case ...
Definition: declaration.c:310
int SafeSizeOfArray(entity)
cproto-generated files
Definition: declaration.c:83
bool empty_current_label_string_p(void)
Definition: parser.c:87
void parser_reset_all_reader_buffers(void)
Definition: reader.c:313
instruction MakeEmptyInstructionBlock(void)
this function creates an empty block
Definition: statement.c:654
list get_alternate_returns(void)
Definition: return.c:258
bool common_to_defined_size_p(entity)
Definition: declaration.c:980
void NewStmt(entity, statement)
this function stores a new association in table StmtHeap: the label of statement s is e.
Definition: statement.c:141
instruction MakeAssignedGotoInst(list, entity)
Definition: statement.c:734
void InitImplicit(void)
this function initializes the data structure used to compute implicit types
Definition: declaration.c:1271
void BeginingOfParsing(void)
this function is called for each new file (FI: once?) FI: I do not understand how this works.
Definition: parser.c:208
void remove_from_called_modules(entity)
macros are added, although they should not have been.
Definition: procedure.c:354
bool uses_alternate_return_p(void)
Definition: return.c:166
entity SafeLocalToGlobal(entity, type)
A local entity might have been created but found out later to be global, depending on the order of de...
Definition: procedure.c:1681
void MakeWhileDoInst(expression, string)
This function creates a while do loop statement.
Definition: statement.c:1262
type MakeFortranType(tag, value)
this function creates a type that represents a fortran type.
Definition: declaration.c:1505
void set_current_number_of_alternate_returns(void)
Definition: return.c:187
void SetChains(void)
initialize chains before each call to the parser
Definition: equivalence.c:76
void PrintChains(equivalences)
two debugging functions, just in case ...
Definition: equivalence.c:364
int FindAssign(void)
Definition: reader.c:1197
int FindImplicit(void)
Definition: reader.c:1114
void reset_alternate_returns(void)
Definition: return.c:272
void * syn_alloc(yy_size_t)
void soft_reset_alternate_returns(void)
ParserError() cannot guess if it has been performed or not, because it is reinitialized before and af...
Definition: return.c:284
void cr_implicit(tag, int, int, int)
this function updates the data structure used to compute implicit types.
Definition: declaration.c:1284
char lab_I[6]
Definition: parser.c:69
void parser_substitute_all_macros_in_expression(expression)
Definition: macros.c:302
int syn_get_leng(void)
int MakeElseInst(bool)
This function is used to handle either an ELSE or an ELSEIF construct.
Definition: statement.c:1522
int syn_lex_destroy(void)
syntax MakeAtom(entity, cons *, expression, expression, int)
MakeAtom: this function creates a syntax, ie.
Definition: expression.c:222
void init_parser_reader_properties(void)
Definition: reader.c:434
entity MakeLabel(const char *)
void reset_current_number_of_alternate_returns(void)
Definition: return.c:192
void dump_current_statement(void)
Definition: reader.c:1354
bool first_format_statement_seen(void)
Definition: statement.c:1970
FILE * syn_get_out(void)
void syn_set_out(FILE *)
void FindAutre(void)
Definition: reader.c:1169
void ScanNewFile(void)
La fonction a appeler pour l'analyse d'un nouveau fichier.
Definition: reader.c:474
void save_all_entities(void)
functions for the SAVE declaration
Definition: declaration.c:138
int ReadStmt(FILE *)
regroupement des lignes du statement en une unique ligne sans continuation
Definition: reader.c:942
void ProcessEntries(void)
Definition: procedure.c:2171
size_t FindMatchingPar(size_t)
Definition: reader.c:1267
void reset_current_label_string(void)
Definition: parser.c:71
char vcid_syntax_expression[]
expression.c
Definition: expression.c:29
void BeginingOfProcedure(void)
this function is called each time a new procedure is encountered.
Definition: procedure.c:301
list add_actual_return_code(list)
Definition: return.c:222
void save_initialized_variable(entity)
Definition: declaration.c:287
entity SafeFindOrCreateEntity(const char *, const char *)
Problem: A functional global entity may be referenced without parenthesis or CALL keyword in a functi...
Definition: declaration.c:1891
instruction MakeEntry(entity, list)
An ENTRY statement is substituted by a labelled continue.
Definition: procedure.c:1810
void parser_add_a_macro(call, expression)
Definition: macros.c:113
instruction MakeArithmIfInst(expression, string, string, string)
this function transforms an arithmetic if statement into a set of regular tests.
Definition: statement.c:1399
entity StackArea
Definition: area.c:60
void add_ghost_variable_entity(entity)
Definition: procedure.c:275
bool parser(const string)
Definition: parser.c:291
void AddVariableToCommon(entity, entity)
This function adds a variable v to a common block c.
Definition: declaration.c:1108
type ImplicitType(entity)
This function computes the Fortran implicit type of entity e.
Definition: declaration.c:1311
char FormatValue[(4096)]
a string that will contain the value of the format in case of format statement
Definition: parser.c:95
int FindDo(void)
Definition: reader.c:1087
int ReadLine(FILE *)
All physical lines of a statement are put together in a unique buffer called "line_buffer".
Definition: reader.c:765
void DeclarePointer(entity, entity, list)
Definition: declaration.c:546
atom MakeEquivAtom(syntax)
this function creates an atom of an equivalence chain.
Definition: equivalence.c:89
entity MakeCommon(entity)
MakeCommon: This function creates a common block.
Definition: declaration.c:1047
instruction MakeGotoInst(string)
this function creates a goto instruction.
Definition: statement.c:686
void init_parser_properties(void)
Definition: parser.c:296
void remove_ghost_variable_entities(bool)
Definition: procedure.c:206
instruction MakeAssignedOrComputedGotoInst(list, expression, bool)
Definition: statement.c:747
void InitAreas(void)
Definition: declaration.c:100
void TypeFunctionalEntity(entity, type)
Definition: procedure.c:2257
void ScanFormalParameters(entity, list)
this function scans the formal parameter list.
Definition: procedure.c:2503
expression loop_to_implieddo(loop)
Definition: expression.c:167
void PrintChain(chain)
Definition: equivalence.c:382
instruction MakeSimpleIoInst2(int, expression, list)
Definition: statement.c:1899
int syn_wrap(void)
Definition: reader.c:466
char * syn_text
instruction MakeReturn(expression)
Definition: return.c:445
instruction make_goto_instruction(entity)
In a "go to" instruction, the label does not appear explictly.
Definition: statement.c:706
entity NameToFunctionalEntity(string)
Definition: procedure.c:2217
void SubstituteAlternateReturns(const char *)
return.c
Definition: return.c:59
void append_data_current_stmt_buffer_to_declarations(void)
Definition: reader.c:276
void MakeDataStatement(list, list)
Receives as first input an implicit list of references, including implicit DO, and as second input an...
Definition: declaration.c:524
syntax CheckLeftHandSide(syntax)
If a left hand side is a call, it should be a substring operator or a macro.
Definition: expression.c:542
void LinkInstToCurrentBlock(instruction, bool)
this function links the instruction i to the current block of statements.
Definition: statement.c:529
int ici
syn_yacc.c
Definition: syn_yacc.c:100
void MakeFormalParameter(entity, entity, int)
This function transforms an untyped entity into a formal parameter.
Definition: procedure.c:2466
int syn_parse()
void AbortOfProcedure(void)
Definition: procedure.c:386
char * syn_get_text(void)
FILE * syn_in
lex yacc interface
Definition: syntax.h:325
type CurrentType
to count control specifications in IO statements
Definition: syn_yacc.c:101
void ResetBlockStack(void)
Definition: statement.c:203
void parser_macro_expansion(expression)
Definition: macros.c:224
statement MakeStatement(entity, instruction)
This function makes a statement.
Definition: statement.c:431
void substitute_ghost_variable_in_expression(expression, entity, entity)
Definition: procedure.c:75
void add_entity_to_declarations(string, string, enum basic_utype tag, void *)
FI: I do not understand the naming here, or the parameter.
Definition: declaration.c:1969
instruction PopBlock(void)
Definition: statement.c:238
void syn_error(const char *)
int iPrevComm
Definition: reader.c:153
string NameOfToken(int)
Definition: statement.c:1636
entity make_Fortran_constant_entity(string, tag, size_t)
Definition: expression.c:597
int IsCapKeyword(char *)
Fonction appelee par sslex sur la reduction de la regle de reconnaissance des mot clefs.
Definition: reader.c:515
void AnalyzeData(list, list)
this function scans at the same time a list of datavar and a list of dataval.
Definition: declaration.c:352
void syn_reset_lex()
bool SubstituteAlternateReturnsP(void)
Definition: return.c:81
int syn_lex()
int ChainIntersection(cons *, cons *)
this function returns true if the there is a variable that occurs in both atom lists.
Definition: equivalence.c:302
void SaveChains(void)
Initialize the shared fields of aliased variables.
Definition: equivalence.c:859
void reset_common_size_map(void)
Definition: declaration.c:954
void set_first_format_statement(void)
Definition: statement.c:1952
int FindDoWhile(void)
This function is redundant with FindDo() but much easier to understand.
Definition: reader.c:1073
void init_ghost_variable_entities(void)
procedure.c
Definition: procedure.c:69
int iComm
Definition: reader.c:153
cons * MergeTwoChains(cons *, cons *)
this function merges two equivalence chains whose intersection is not empty, ie.
Definition: equivalence.c:322
entity AllocatableArea
Definition: area.c:61
instruction MakeIoInstB(int, expression, expression, expression, expression)
this function creates a BUFFER IN or BUFFER OUT io statement.
Definition: statement.c:1837
int AddOrMergeChain(chain)
this function adds a chain ct to the set of equivalences.
Definition: equivalence.c:269
instruction MakeComputedGotoInst(list, expression)
Definition: statement.c:727
void FindPoints(void)
Definition: reader.c:1220
statement MakeNewLabelledStatement(entity, instruction)
Definition: statement.c:289
void ComputeAddresses(void)
This function computes an address for every variable.
Definition: equivalence.c:503
void print_full_malloc_info(FILE *)
void FindIf(void)
Definition: reader.c:1150
void update_called_modules(entity)
Definition: procedure.c:308
int PipsGetc(FILE *)
Routine de lecture pour l'analyseur lexical, lex ou flex.
Definition: reader.c:557
bool EmptyEntryListsP(void)
Definition: procedure.c:1506
bool ReturnCodeVariableP(entity)
Definition: return.c:145
void SaveEntity(entity)
These two functions transform a dynamic variable into a static one.
Definition: declaration.c:178
void MakeVariableStatic(entity, bool)
Definition: declaration.c:245
cons * MakeIoList(cons *)
This function takes a list of io elements (i, j, t(i,j)), and returns the same list,...
Definition: expression.c:468
instruction MakeCallInst(entity, cons *)
this function creates a call statement.
Definition: statement.c:1091
int StmtEqualString(char *, int)
Definition: reader.c:1290
void syn_pop_buffer_state(void)
char vcid_syntax_equivalence[]
equivalence.c
Definition: equivalence.c:33
void set_alternate_returns(void)
Definition: return.c:264
void MakeDoInst(syntax, range, string)
this function creates a do loop statement.
Definition: statement.c:1167
bool fortran_relevant_area_entity_p(entity)
These tests are needed to check area consistency when dumping or printing a symbol table.
Definition: declaration.c:940
void * syn_realloc(void *, yy_size_t)
statement ReuseLabelledStatement(statement, instruction)
Definition: statement.c:338
int syn_nerrs
void syn_free(void *)
void syn_set_debug(int)
FILE * syn_get_in(void)
expression MakeFortranUnaryCall(entity, expression)
Definition: expression.c:519
char * CurrComm
Definition: reader.c:152
entity GetReturnCodeVariable(void)
Definition: return.c:95
int syn_lineno
void reset_common_size_map_on_error(void)
Definition: declaration.c:972
int IsIntegerScalar(entity)
FI: should be moved in ri-util; this function returns true if e is a zero dimension variable of basic...
Definition: declaration.c:1647
statement LabelToStmt(string)
this functions looks up in table StmtHeap for the statement s whose label is l.
Definition: statement.c:94
void update_functional_type_with_actual_arguments(entity, list)
Definition: statement.c:971
int ValueOfIthLowerBound(entity, int)
this function returns the size of the ith lower bound of a variable e.
Definition: declaration.c:1591
string get_current_label_string(void)
Definition: parser.c:76
const char * CurrentPackage
the name of the current package, i.e.
Definition: parser.c:58
void ResetEntries(void)
Definition: procedure.c:1458
instruction generate_return_code_checks(list)
Definition: return.c:337
void AddEffectiveFormalParameter(entity)
Keep track of the formal parameters for the current module.
Definition: procedure.c:1529
void PushBlock(instruction, string)
Definition: statement.c:221
void AbortEntries(void)
Definition: procedure.c:1473