diff libinterp/parse-tree/lex.ll @ 18565:4e0d72145c5a

maint: Merge gui-release to default.
author Rik <rik@octave.org>
date Thu, 20 Feb 2014 09:27:57 -0800
parents b2a2f097c5e0 3cac3d7f003f
children 932aca9a7c57
line wrap: on
line diff
--- a/libinterp/parse-tree/lex.ll
+++ b/libinterp/parse-tree/lex.ll
@@ -1218,6 +1218,8 @@
   }
 
 "@" {
+    curr_lexer->lexer_debug ("@");
+
     if (curr_lexer->previous_token_may_be_command ()
         &&  curr_lexer->space_follows_previous_token ())
       {
@@ -1226,15 +1228,26 @@
       }
     else
       {
-        curr_lexer->lexer_debug ("@");
-
-        curr_lexer->current_input_column++;
-
-        curr_lexer->looking_at_function_handle++;
-        curr_lexer->looking_for_object_index = false;
-        curr_lexer->at_beginning_of_statement = false;
-
-        return curr_lexer->count_token ('@');
+        int tok = curr_lexer->previous_token_value ();
+
+        if (curr_lexer->whitespace_is_significant ()
+            && curr_lexer->space_follows_previous_token ()
+            && ! (tok == '[' || tok == '{'
+                  || curr_lexer->previous_token_is_binop ()))
+          {
+            yyless (0);
+            unput (',');
+          }
+        else
+          {
+            curr_lexer->current_input_column++;
+
+            curr_lexer->looking_at_function_handle++;
+            curr_lexer->looking_for_object_index = false;
+            curr_lexer->at_beginning_of_statement = false;
+
+            return curr_lexer->count_token ('@');
+          }
       }
   }