Mercurial > octave
diff libinterp/parse-tree/lex.ll @ 25443:2fa7cd178c4a
new class for miscellaneous interpreter settings
* libgui/src/editor-settings.h: Rename from octave-settings.h. Change
all uses.
* libgui/src/module.mk: Update.
* settings.h, settings.cc: New files for miscellaneous interpreter
settings and access functions.
* libinterp/corefcn/module.mk: Update.
* lex.h, lex.ll: Move static variables Vdisplay_tokens, Vtoken_count,
and lexer_debug_flag to new settings class. Change all uses.
(base_lexer::debug_flag, base_lexer::display_tokens,
base_lexer::increment_token_count, base_lexer::lexer_debug):
New functions.
(F__display_tokens__, F__token_count__, F__lexer_debug_flag__):
Move to settings.cc.
* interpreter.h, interpreter.cc (interpreter::m_settings,
interpreter::settings): New data member and access function.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Fri, 08 Jun 2018 18:04:18 -0400 |
parents | 6652d3823428 |
children | 4d565baa475e |
line wrap: on
line diff
--- a/libinterp/parse-tree/lex.ll Fri Jun 08 18:34:26 2018 -0400 +++ b/libinterp/parse-tree/lex.ll Fri Jun 08 18:04:18 2018 -0400 @@ -323,13 +323,6 @@ } \ while (0) -static bool Vdisplay_tokens = false; - -static unsigned int Vtoken_count = 0; - -// Internal variable for lexer debugging state. -static bool lexer_debug_flag = false; - %} D [0-9] @@ -2036,44 +2029,6 @@ */ -DEFUN (__display_tokens__, args, nargout, - doc: /* -*- texinfo -*- -@deftypefn {} {} __display_tokens__ () -Query or set the internal variable that determines whether Octave's -lexer displays tokens as they are read. -@seealso{__lexer_debug_flag__, __token_count__} -@end deftypefn */) -{ - return SET_INTERNAL_VARIABLE (display_tokens); -} - -DEFUN (__token_count__, , , - doc: /* -*- texinfo -*- -@deftypefn {} {} __token_count__ () -Return the number of language tokens processed since Octave startup. -@seealso{__lexer_debug_flag__, __display_tokens__} -@end deftypefn */) -{ - return octave_value (Vtoken_count); -} - -DEFUN (__lexer_debug_flag__, args, nargout, - doc: /* -*- texinfo -*- -@deftypefn {} {@var{val} =} __lexer_debug_flag__ () -@deftypefnx {} {@var{old_val} =} __lexer_debug_flag__ (@var{new_val}) -Query or set the internal flag that determines whether Octave's lexer prints -debug information as it processes an expression. -@seealso{__display_tokens__, __token_count__, __parse_debug_flag__} -@end deftypefn */) -{ - octave_value retval; - - retval = set_internal_variable (lexer_debug_flag, args, nargout, - "__lexer_debug_flag__"); - - return retval; -} - namespace octave { void @@ -2438,7 +2393,7 @@ { int c = yyinput (m_scanner); - if (lexer_debug_flag) + if (debug_flag ()) { std::cerr << "I: "; display_character (c); @@ -2451,7 +2406,7 @@ { c = yyinput (m_scanner); - if (lexer_debug_flag) + if (debug_flag ()) { std::cerr << "I: "; display_character (c); @@ -2473,7 +2428,7 @@ { if (c != EOF) { - if (lexer_debug_flag) + if (debug_flag ()) { std::cerr << "U: "; display_character (c); @@ -3407,10 +3362,33 @@ error ("fatal lexer error: %s", msg); } + bool + base_lexer::debug_flag (void) const + { + settings& stgs = m_interpreter.get_settings (); + return stgs.lexer_debug_flag (); + } + + bool + base_lexer::display_tokens (void) const + { + settings& stgs = m_interpreter.get_settings (); + return stgs.display_tokens (); + } + + void + base_lexer::increment_token_count (void) + { + settings& stgs = m_interpreter.get_settings (); + stgs.increment_token_count (); + + m_token_count++; + } + void base_lexer::lexer_debug (const char *pattern) { - if (lexer_debug_flag) + if (debug_flag ()) { std::cerr << std::endl; @@ -3600,10 +3578,7 @@ base_lexer::count_token_internal (int tok) { if (tok != '\n') - { - Vtoken_count++; - m_token_count++; - } + increment_token_count (); return show_token (tok); } @@ -3611,10 +3586,11 @@ int base_lexer::show_token (int tok) { - if (Vdisplay_tokens) + + if (display_tokens ()) display_token (tok); - if (lexer_debug_flag) + if (debug_flag ()) { std::cerr << "R: "; display_token (tok);