Mercurial > octave-nkf
diff src/lex.l @ 4613:d1786f2d8a3c
[project @ 2003-11-14 22:46:19 by jwe]
author | jwe |
---|---|
date | Fri, 14 Nov 2003 22:46:19 +0000 |
parents | d44675070f1a |
children | d95dd6ae89fd |
line wrap: on
line diff
--- a/src/lex.l Fri Nov 14 19:50:38 2003 +0000 +++ b/src/lex.l Fri Nov 14 22:46:19 2003 +0000 @@ -754,7 +754,7 @@ promptflag--; eat_whitespace (); - lexer_flags.bracketflag++; + lexer_flags.braceflag++; BEGIN (MATRIX_START); return '{'; } @@ -1508,6 +1508,18 @@ un_op = (c1 == '\''); yyunput (c1, yytext); } + else if (c0 == '+') + { + int c1 = yyinput (); + un_op = (c1 == '+'); + yyunput (c1, yytext); + } + else if (c0 == '-') + { + int c1 = yyinput (); + un_op = (c1 == '-'); + yyunput (c1, yytext); + } yyunput (c0, yytext); @@ -2234,10 +2246,16 @@ if (! nesting_level.none ()) { nesting_level.remove (); - lexer_flags.bracketflag--; + + if (bracket_type == ']') + lexer_flags.bracketflag--; + else if (bracket_type == '}') + lexer_flags.braceflag--; + else + panic_impossible (); } - if (lexer_flags.bracketflag == 0) + if (lexer_flags.bracketflag == 0 && lexer_flags.braceflag == 0) BEGIN (INITIAL); if (bracket_type == ']' @@ -2246,28 +2264,24 @@ { retval = CLOSE_BRACE; } - else + else if ((lexer_flags.bracketflag || lexer_flags.braceflag) + && lexer_flags.convert_spaces_to_comma + && (nesting_level.is_bracket () + || (nesting_level.is_brace () + && ! lexer_flags.looking_at_object_index))) { - int c1 = yyinput (); - yyunput (c1, yytext); - - if (lexer_flags.bracketflag) + int bin_op = next_token_is_bin_op (spc_gobbled); + + int postfix_un_op = next_token_is_postfix_unary_op (spc_gobbled); + + int sep_op = next_token_is_sep_op (); + + if (! (postfix_un_op || bin_op || sep_op)) { - int bin_op = next_token_is_bin_op (spc_gobbled); - - int postfix_un_op = next_token_is_postfix_unary_op (spc_gobbled); - - int sep_op = next_token_is_sep_op (); - - if (! (postfix_un_op || bin_op || sep_op) - && nesting_level.is_bracket_or_brace () - && lexer_flags.convert_spaces_to_comma) - { - maybe_warn_separator_insert (','); - - yyunput (',', yytext); - return retval; - } + maybe_warn_separator_insert (','); + + yyunput (',', yytext); + return retval; } } @@ -2281,7 +2295,9 @@ static void maybe_unput_comma (int spc_gobbled) { - if (nesting_level.is_bracket_or_brace ()) + if (nesting_level.is_bracket () + || (nesting_level.is_brace () + && ! lexer_flags.looking_at_object_index)) { int bin_op = next_token_is_bin_op (spc_gobbled); @@ -2499,6 +2515,9 @@ // Not initially defining a matrix list. bracketflag = 0; + // Not initially defining a cell array list. + braceflag = 0; + // Not initially inside a loop or if statement. looping = 0;