Mercurial > hg > octave-nkf
comparison libinterp/parse-tree/lex.ll @ 16194:b7ca669af528
reset lexical_feedback state before starting a new parse
* lex.h, lex.cc (bbp_nesting_level::reset): New function.
(lexical_feedback::reset, lexical_feedback::reset_token_stack):
New functions.
(lexical_feedback::~lexical_feedback): Call reset_token_stack to do
the job.
(octave_lexer::reset): Call lexical_feedback::reset.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Tue, 05 Mar 2013 10:19:47 -0500 |
parents | d7392bf42fd1 |
children | b52d2f9294b6 |
comparison
equal
deleted
inserted
replaced
16193:d7392bf42fd1 | 16194:b7ca669af528 |
---|---|
1292 char *buf; | 1292 char *buf; |
1293 }; | 1293 }; |
1294 | 1294 |
1295 lexical_feedback::~lexical_feedback (void) | 1295 lexical_feedback::~lexical_feedback (void) |
1296 { | 1296 { |
1297 // Clear out the stack of token info used to track line and | 1297 reset_token_stack (); |
1298 // column numbers. | |
1299 | |
1300 while (! token_stack.empty ()) | |
1301 { | |
1302 delete token_stack.top (); | |
1303 token_stack.pop (); | |
1304 } | |
1305 } | 1298 } |
1306 | 1299 |
1307 void | 1300 void |
1308 lexical_feedback::init (void) | 1301 lexical_feedback::init (void) |
1309 { | 1302 { |
1310 // The closest paren, brace, or bracket nesting is not an object | 1303 // The closest paren, brace, or bracket nesting is not an object |
1311 // index. | 1304 // index. |
1312 looking_at_object_index.push_front (false); | 1305 looking_at_object_index.push_front (false); |
1306 } | |
1307 | |
1308 void | |
1309 lexical_feedback::reset (void) | |
1310 { | |
1311 end_of_input = false; | |
1312 convert_spaces_to_comma = true; | |
1313 do_comma_insert = false; | |
1314 at_beginning_of_statement = true; | |
1315 looking_at_anon_fcn_args = false; | |
1316 looking_at_return_list = false; | |
1317 looking_at_parameter_list = false; | |
1318 looking_at_decl_list = false; | |
1319 looking_at_initializer_expression = false; | |
1320 looking_at_matrix_or_assign_lhs = false; | |
1321 looking_for_object_index = false; | |
1322 looking_at_indirect_ref = false; | |
1323 parsing_class_method = false; | |
1324 maybe_classdef_get_set_method = false; | |
1325 parsing_classdef = false; | |
1326 quote_is_transpose = false; | |
1327 input_line_number = 1; | |
1328 current_input_column = 1; | |
1329 bracketflag = 0; | |
1330 braceflag = 0; | |
1331 looping = 0; | |
1332 defining_func = 0; | |
1333 looking_at_function_handle = 0; | |
1334 block_comment_nesting_level = 0; | |
1335 | |
1336 looking_at_object_index.clear (); | |
1337 looking_at_object_index.push_front (false); | |
1338 | |
1339 while (! parsed_function_name.empty ()) | |
1340 parsed_function_name.pop (); | |
1341 | |
1342 pending_local_variables.clear (); | |
1343 | |
1344 nesting_level.reset (); | |
1345 | |
1346 reset_token_stack (); | |
1347 } | |
1348 | |
1349 void | |
1350 lexical_feedback::reset_token_stack (void) | |
1351 { | |
1352 // Clear out the stack of token info used to track line and | |
1353 // column numbers. | |
1354 | |
1355 while (! token_stack.empty ()) | |
1356 { | |
1357 delete token_stack.top (); | |
1358 token_stack.pop (); | |
1359 } | |
1313 } | 1360 } |
1314 | 1361 |
1315 void | 1362 void |
1316 octave_lexer::input_buffer::read (void) | 1363 octave_lexer::input_buffer::read (void) |
1317 { | 1364 { |
1405 yyrestart (stdin, scanner); | 1452 yyrestart (stdin, scanner); |
1406 | 1453 |
1407 // Clear the buffer for help text. | 1454 // Clear the buffer for help text. |
1408 while (! help_buf.empty ()) | 1455 while (! help_buf.empty ()) |
1409 help_buf.pop (); | 1456 help_buf.pop (); |
1457 | |
1458 lexical_feedback::reset (); | |
1410 } | 1459 } |
1411 | 1460 |
1412 void | 1461 void |
1413 octave_lexer::prep_for_script_file (void) | 1462 octave_lexer::prep_for_script_file (void) |
1414 { | 1463 { |