Mercurial > octave-nkf
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); |