Mercurial > octave
changeset 31481:cfa938be2999
maint: merge stable to default.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Sat, 19 Nov 2022 00:03:30 -0500 |
parents | 63f808063238 (current diff) 1bbcaa97b2dd (diff) |
children | 75cbfaf709cb |
files | libinterp/parse-tree/lex.h libinterp/parse-tree/lex.ll |
diffstat | 6 files changed, 37 insertions(+), 35 deletions(-) [+] |
line wrap: on
line diff
--- a/libinterp/parse-tree/lex.h Fri Nov 18 14:48:41 2022 -0800 +++ b/libinterp/parse-tree/lex.h Sat Nov 19 00:03:30 2022 -0500 @@ -681,8 +681,6 @@ void maybe_warn_separator_insert (char sep); - void warn_single_quote_string (void); - void warn_language_extension (const std::string& msg); void maybe_warn_language_extension_comment (char c);
--- a/libinterp/parse-tree/lex.ll Fri Nov 18 14:48:41 2022 -0800 +++ b/libinterp/parse-tree/lex.ll Sat Nov 19 00:03:30 2022 -0500 @@ -1638,8 +1638,8 @@ "+" { CMD_OR_UNARY_OP ("+", '+', true); } "-" { CMD_OR_UNARY_OP ("-", '-', true); } -"~" { CMD_OR_UNARY_OP ("~", EXPR_NOT, true); } -"!" { CMD_OR_UNARY_OP ("!", EXPR_NOT, false); } +"~" { CMD_OR_UNARY_OP ("~", '~', true); } +"!" { CMD_OR_UNARY_OP ("!", '!', false); } "," { curr_lexer->lexer_debug (","); @@ -2255,7 +2255,7 @@ { int tok = previous_token_value (); - return (tok == '+' || tok == '-' || tok == '@' + return (tok == '+' || tok == '-' || tok == '@' || tok == '~' || tok == '!' || tok == ',' || tok == ';' || tok == '*' || tok == '/' || tok == ':' || tok == '=' || tok == ADD_EQ || tok == AND_EQ || tok == DIV_EQ || tok == EDIV @@ -2264,7 +2264,7 @@ || tok == EPOW || tok == EPOW_EQ || tok == EXPR_AND || tok == EXPR_AND_AND || tok == EXPR_EQ || tok == EXPR_GE || tok == EXPR_GT || tok == EXPR_LE || tok == EXPR_LT - || tok == EXPR_NE || tok == EXPR_NOT || tok == EXPR_OR + || tok == EXPR_NE || tok == EXPR_OR || tok == EXPR_OR_OR || tok == LEFTDIV || tok == LEFTDIV_EQ || tok == MUL_EQ || tok == OR_EQ || tok == POW || tok == POW_EQ || tok == SUB_EQ); @@ -3555,21 +3555,6 @@ } void - base_lexer::warn_single_quote_string (void) - { - std::string nm = m_fcn_file_full_name; - - if (nm.empty ()) - warning_with_id ("Octave:single-quote-string", - "single quote delimited string near line %d", - m_filepos.line ()); - else - warning_with_id ("Octave:single-quote-string", - "single quote delimited string near line %d of file %s", - m_filepos.line (), nm.c_str ()); - } - - void base_lexer::warn_language_extension (const std::string& msg) { std::string nm = m_fcn_file_full_name; @@ -3650,6 +3635,8 @@ case '+': std::cerr << "'+'\n"; break; case '*': std::cerr << "'*'\n"; break; case '/': std::cerr << "'/'\n"; break; + case '~': std::cerr << "'~'\n"; break; + case '!': std::cerr << "'!'\n"; break; case ADD_EQ: std::cerr << "ADD_EQ\n"; break; case SUB_EQ: std::cerr << "SUB_EQ\n"; break; case MUL_EQ: std::cerr << "MUL_EQ\n"; break; @@ -3666,7 +3653,6 @@ case EXPR_OR_OR: std::cerr << "EXPR_OR_OR\n"; break; case EXPR_AND: std::cerr << "EXPR_AND\n"; break; case EXPR_OR: std::cerr << "EXPR_OR\n"; break; - case EXPR_NOT: std::cerr << "EXPR_NOT\n"; break; case EXPR_LT: std::cerr << "EXPR_LT\n"; break; case EXPR_LE: std::cerr << "EXPR_LE\n"; break; case EXPR_EQ: std::cerr << "EXPR_EQ\n"; break;
--- a/libinterp/parse-tree/oct-parse.yy Fri Nov 18 14:48:41 2022 -0800 +++ b/libinterp/parse-tree/oct-parse.yy Sat Nov 19 00:03:30 2022 -0500 @@ -202,13 +202,13 @@ } // Tokens with line and column information. -%token <tok_val> '=' ':' '-' '+' '*' '/' +%token <tok_val> '=' ':' '-' '+' '*' '/' '~' '!' %token <tok_val> '(' ')' '[' ']' '{' '}' '.' '@' %token <tok_val> ',' ';' '\n' %token <tok_val> ADD_EQ SUB_EQ MUL_EQ DIV_EQ LEFTDIV_EQ POW_EQ %token <tok_val> EMUL_EQ EDIV_EQ ELEFTDIV_EQ EPOW_EQ AND_EQ OR_EQ %token <tok_val> EXPR_AND_AND EXPR_OR_OR -%token <tok_val> EXPR_AND EXPR_OR EXPR_NOT +%token <tok_val> EXPR_AND EXPR_OR %token <tok_val> EXPR_LT EXPR_LE EXPR_EQ EXPR_NE EXPR_GE EXPR_GT %token <tok_val> LEFTDIV EMUL EDIV ELEFTDIV %token <tok_val> HERMITIAN TRANSPOSE @@ -325,7 +325,7 @@ %left ':' %left '-' '+' %left '*' '/' LEFTDIV EMUL EDIV ELEFTDIV -%right UNARY EXPR_NOT +%right UNARY '~' '!' %left POW EPOW HERMITIAN TRANSPOSE %right PLUS_PLUS MINUS_MINUS %left '(' '.' '{' @@ -689,7 +689,7 @@ { $$ = parser.make_constant ($1); } ; -magic_tilde : EXPR_NOT +magic_tilde : '~' { OCTAVE_YYUSE ($1); @@ -798,8 +798,10 @@ { $$ = parser.make_prefix_op (PLUS_PLUS, $2, $1); } | MINUS_MINUS oper_expr %prec UNARY { $$ = parser.make_prefix_op (MINUS_MINUS, $2, $1); } - | EXPR_NOT oper_expr %prec UNARY - { $$ = parser.make_prefix_op (EXPR_NOT, $2, $1); } + | '~' oper_expr %prec UNARY + { $$ = parser.make_prefix_op ('~', $2, $1); } + | '!' oper_expr %prec UNARY + { $$ = parser.make_prefix_op ('!', $2, $1); } | '+' oper_expr %prec UNARY { $$ = parser.make_prefix_op ('+', $2, $1); } | '-' oper_expr %prec UNARY @@ -888,8 +890,10 @@ { $$ = parser.make_prefix_op (PLUS_PLUS, $2, $1); } | MINUS_MINUS power_expr %prec POW { $$ = parser.make_prefix_op (MINUS_MINUS, $2, $1); } - | EXPR_NOT power_expr %prec POW - { $$ = parser.make_prefix_op (EXPR_NOT, $2, $1); } + | '~' power_expr %prec POW + { $$ = parser.make_prefix_op ('~', $2, $1); } + | '!' power_expr %prec POW + { $$ = parser.make_prefix_op ('!', $2, $1); } | '+' power_expr %prec POW { $$ = parser.make_prefix_op ('+', $2, $1); } | '-' power_expr %prec POW @@ -1887,7 +1891,13 @@ $$ = parser.make_classdef_attribute ($1, $3); } - | EXPR_NOT identifier + | '~' identifier + { + OCTAVE_YYUSE ($1); + + $$ = parser.make_not_classdef_attribute ($2); + } + | '!' identifier { OCTAVE_YYUSE ($1); @@ -3209,7 +3219,8 @@ switch (op) { - case EXPR_NOT: + case '~': + case '!': t = octave_value::op_not; break;
--- a/liboctave/util/cmd-edit.cc Fri Nov 18 14:48:41 2022 -0800 +++ b/liboctave/util/cmd-edit.cc Sat Nov 19 00:03:30 2022 -0500 @@ -582,9 +582,16 @@ } else { + static char *word_break_chars = nullptr; + ::octave_rl_set_completer_quote_characters (""); - return octave_rl_get_completer_word_break_characters (); + free (word_break_chars); + + word_break_chars + = octave_strdup_wrapper (octave_rl_get_completer_word_break_characters ()); + + return word_break_chars; } }
--- a/liboctave/util/oct-rl-edit.c Fri Nov 18 14:48:41 2022 -0800 +++ b/liboctave/util/oct-rl-edit.c Sat Nov 19 00:03:30 2022 -0500 @@ -307,7 +307,7 @@ rl_completer_word_break_characters = ss; } -char * +const char * octave_rl_get_completer_word_break_characters (void) { return rl_completer_word_break_characters;
--- a/liboctave/util/oct-rl-edit.h Fri Nov 18 14:48:41 2022 -0800 +++ b/liboctave/util/oct-rl-edit.h Sat Nov 19 00:03:30 2022 -0500 @@ -129,7 +129,7 @@ extern void octave_rl_set_completer_word_break_characters (const char *); -extern char * octave_rl_get_completer_word_break_characters (void); +extern const char * octave_rl_get_completer_word_break_characters (void); extern void octave_rl_set_completion_word_break_hook (rl_completion_hook_fcn_ptr);