@@ -71,10 +71,9 @@ bool ansi_c_languaget::parse(
71
71
ansi_c_internal_additions (code, config.ansi_c .float16_type );
72
72
std::istringstream codestr (code);
73
73
74
- ansi_c_parser. clear () ;
74
+ ansi_c_parsert ansi_c_parser{message_handler} ;
75
75
ansi_c_parser.set_file (ID_built_in);
76
76
ansi_c_parser.in =&codestr;
77
- ansi_c_parser.log .set_message_handler (message_handler);
78
77
ansi_c_parser.for_has_scope =config.ansi_c .for_has_scope ;
79
78
ansi_c_parser.ts_18661_3_Floatn_types =config.ansi_c .ts_18661_3_Floatn_types ;
80
79
ansi_c_parser.float16_type = config.ansi_c .float16_type ;
@@ -83,25 +82,19 @@ bool ansi_c_languaget::parse(
83
82
ansi_c_parser.cpp11 =false ; // it's not C++
84
83
ansi_c_parser.mode =config.ansi_c .mode ;
85
84
86
- ansi_c_scanner_init ();
87
-
88
85
bool result=ansi_c_parser.parse ();
89
86
90
87
if (!result)
91
88
{
92
89
ansi_c_parser.set_line_no (0 );
93
90
ansi_c_parser.set_file (path);
94
91
ansi_c_parser.in =&i_preprocessed;
95
- ansi_c_scanner_init ();
96
92
result=ansi_c_parser.parse ();
97
93
}
98
94
99
95
// save result
100
96
parse_tree.swap (ansi_c_parser.parse_tree );
101
97
102
- // save some memory
103
- ansi_c_parser.clear ();
104
-
105
98
return result;
106
99
}
107
100
@@ -199,15 +192,16 @@ bool ansi_c_languaget::to_expr(
199
192
200
193
// parsing
201
194
202
- ansi_c_parser. clear () ;
195
+ ansi_c_parsert ansi_c_parser{message_handler} ;
203
196
ansi_c_parser.set_file (irep_idt ());
204
197
ansi_c_parser.in =&i_preprocessed;
205
- ansi_c_parser.log .set_message_handler (message_handler);
206
- ansi_c_parser.mode =config.ansi_c .mode ;
198
+ ansi_c_parser.for_has_scope = config.ansi_c .for_has_scope ;
207
199
ansi_c_parser.ts_18661_3_Floatn_types =config.ansi_c .ts_18661_3_Floatn_types ;
208
200
ansi_c_parser.float16_type = config.ansi_c .float16_type ;
209
201
ansi_c_parser.bf16_type = config.ansi_c .bf16_type ;
210
- ansi_c_scanner_init ();
202
+ ansi_c_parser.cpp98 = false ; // it's not C++
203
+ ansi_c_parser.cpp11 = false ; // it's not C++
204
+ ansi_c_parser.mode = config.ansi_c .mode ;
211
205
212
206
bool result=ansi_c_parser.parse ();
213
207
@@ -221,9 +215,6 @@ bool ansi_c_languaget::to_expr(
221
215
result = ansi_c_typecheck (expr, message_handler, ns);
222
216
}
223
217
224
- // save some memory
225
- ansi_c_parser.clear ();
226
-
227
218
// now remove that (void) cast
228
219
if (expr.id ()==ID_typecast &&
229
220
expr.type ().id ()==ID_empty &&
0 commit comments