comparison libinterp/parse-tree/lex.ll @ 16193:d7392bf42fd1

use inheritance to simplify initialization in octave_lexer constructor * lex.h (lexical_feedback): New class containing feedback data for the lexer that was previously contained directly in octave_lexer. (octave_lexer): Inherit from lexical_feedback.
author John W. Eaton <jwe@octave.org>
date Tue, 05 Mar 2013 10:19:38 -0500
parents 359d56094efa
children b7ca669af528
comparison
equal deleted inserted replaced
16192:741dbca67d80 16193:d7392bf42fd1
1290 octave_lexer *lexer; 1290 octave_lexer *lexer;
1291 1291
1292 char *buf; 1292 char *buf;
1293 }; 1293 };
1294 1294
1295 lexical_feedback::~lexical_feedback (void)
1296 {
1297 // Clear out the stack of token info used to track line and
1298 // column numbers.
1299
1300 while (! token_stack.empty ())
1301 {
1302 delete token_stack.top ();
1303 token_stack.pop ();
1304 }
1305 }
1306
1307 void
1308 lexical_feedback::init (void)
1309 {
1310 // The closest paren, brace, or bracket nesting is not an object
1311 // index.
1312 looking_at_object_index.push_front (false);
1313 }
1314
1295 void 1315 void
1296 octave_lexer::input_buffer::read (void) 1316 octave_lexer::input_buffer::read (void)
1297 { 1317 {
1298 buffer = get_user_input (eof); 1318 buffer = get_user_input (eof);
1299 chars_left = buffer.length (); 1319 chars_left = buffer.length ();
1335 return len; 1355 return len;
1336 } 1356 }
1337 1357
1338 octave_lexer::~octave_lexer (void) 1358 octave_lexer::~octave_lexer (void)
1339 { 1359 {
1340 // Clear out the stack of token info used to track line and
1341 // column numbers.
1342
1343 while (! token_stack.empty ())
1344 {
1345 delete token_stack.top ();
1346 token_stack.pop ();
1347 }
1348
1349 yylex_destroy (scanner); 1360 yylex_destroy (scanner);
1350 } 1361 }
1351 1362
1352 void 1363 void
1353 octave_lexer::init (void) 1364 octave_lexer::init (void)
1354 { 1365 {
1355 // The closest paren, brace, or bracket nesting is not an object
1356 // index.
1357 looking_at_object_index.push_front (false);
1358
1359 yylex_init (&scanner); 1366 yylex_init (&scanner);
1360 1367
1361 // Make octave_lexer object available through yyextra in 1368 // Make octave_lexer object available through yyextra in
1362 // flex-generated lexer. 1369 // flex-generated lexer.
1363 yyset_extra (this, scanner); 1370 yyset_extra (this, scanner);