* Bug 15552 fixed: line comment after comma in multiline litteral is ok 65/20165/3
St├ęphane Mottelet [Mon, 18 Jun 2018 15:40:46 +0000 (17:40 +0200)]
http://bugzilla.scilab.org/show_bug.cgi?id=15552

test_run ast bug_15552

Change-Id: I1399d6fa6490876c8498f90cb984a655fc95d64b

scilab/CHANGES.md
scilab/modules/ast/includes/parse/parsescilab.hxx
scilab/modules/ast/src/cpp/parse/bison/parsescilab.output
scilab/modules/ast/src/cpp/parse/bison/parsescilab.yy
scilab/modules/ast/src/cpp/parse/parsescilab.cpp
scilab/modules/ast/tests/nonreg_tests/bug_15552.tst [new file with mode: 0644]

index aa71fd0..8ee0f68 100644 (file)
@@ -492,6 +492,7 @@ Known issues
 * [#15636](http://bugzilla.scilab.org/show_bug.cgi?id=15636): Clicking on its icon did not always give focus to Help browser
 * [#15648](http://bugzilla.scilab.org/show_bug.cgi?id=15648): `sparse([1 1],1,[-1 -1])` crashed scilab
 * [#15647](http://bugzilla.scilab.org/show_bug.cgi?id=15647): `spzeros(-1,-1)` yielded a corrupted result
+* [#15652](http://bugzilla.scilab.org/show_bug.cgi?id=15652): An appended comment // after a comma in an multiline literal array now generates an error (regression).
 * [#15653](http://bugzilla.scilab.org/show_bug.cgi?id=15653): sparse - complex substraction was corrupted
 * [#15659](http://bugzilla.scilab.org/show_bug.cgi?id=15659): `plot(x,fun)` could be very slow and crash Scilab.
 * [#15660](http://bugzilla.scilab.org/show_bug.cgi?id=15660): `atomsInstall` and `atomsRemove` displayed concatenated notifications instead of stacked ones.
index e94154d..6071487 100644 (file)
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 3.0.2.  */
+/* A Bison parser, made by GNU Bison 3.0.4.  */
 
 /* Bison interface for Yacc-like parsers in C
 
-   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
+   Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -215,7 +215,7 @@ extern int yydebug;
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE YYSTYPE;
+
 union YYSTYPE
 {
 
@@ -275,6 +275,8 @@ union YYSTYPE
 
 
 };
+
+typedef union YYSTYPE YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define YYSTYPE_IS_DECLARED 1
 #endif
index 570368e..f678772 100644 (file)
@@ -273,196 +273,197 @@ Grammar
   230                    | matrixOrCellColumns variable
   231                    | matrixOrCellColumns functionCall
   232                    | matrixOrCellColumns "line comment"
-  233                    | variable
-  234                    | functionCall
-  235                    | "line comment"
-
-  236 matrixOrCellColumnsBreak: matrixOrCellColumnsBreak ","
-  237                         | ","
-
-  238 variableDeclaration: assignable "=" variable
-  239                    | assignable "=" functionCall
-  240                    | functionCall "=" variable
-  241                    | functionCall "=" functionCall
-  242                    | assignable "=" ":"
-  243                    | functionCall "=" ":"
-  244                    | assignable "=" returnControl
-  245                    | functionCall "=" returnControl
-
-  246 assignable: variable "." "identifier"
-  247           | variable "." keywords
-  248           | variable "." functionCall
-  249           | functionCall "." "identifier"
-  250           | functionCall "." keywords
-  251           | "identifier"
-  252           | multipleResults
-  253           | variable "(" functionArgs ")"
-  254           | functionCall "(" functionArgs ")"
-
-  255 multipleResults: "[" matrixOrCellColumns "]"
-
-  256 ifControl: "if" condition then thenBody "end"
-  257          | "if" condition then thenBody else elseBody "end"
-  258          | "if" condition then thenBody elseIfControl "end"
-
-  259 thenBody: expressions
-  260         | %empty
-
-  261 elseBody: expressions
-  262         | %empty
-
-  263 ifConditionBreak: ";"
-  264                 | ";" "end of line"
-  265                 | ","
-  266                 | "," "end of line"
-  267                 | "end of line"
-
-  268 then: "then"
-  269     | ifConditionBreak "then"
-  270     | ifConditionBreak "then" "end of line"
-  271     | "then" ifConditionBreak
-  272     | ifConditionBreak
-  273     | %empty
-
-  274 else: "else"
-  275     | "else" ","
-  276     | "else" ";"
-  277     | "else" "end of line"
-  278     | "else" "," "end of line"
-  279     | "else" ";" "end of line"
-
-  280 elseIfControl: "elseif" condition then thenBody
-  281              | "elseif" condition then thenBody else elseBody
-  282              | "elseif" condition then thenBody elseIfControl
-
-  283 selectControl: select selectable selectConditionBreak casesControl "end"
-  284              | select selectable selectConditionBreak casesControl defaultCase elseBody "end"
-  285              | select selectable "line comment" selectConditionBreak casesControl "end"
-  286              | select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
-
-  287 select: "select"
-  288       | "switch"
-
-  289 defaultCase: else
-  290            | "otherwise"
-  291            | "otherwise" ","
-  292            | "otherwise" ";"
-  293            | "otherwise" "end of line"
-  294            | "otherwise" "," "end of line"
-  295            | "otherwise" ";" "end of line"
-
-  296 selectable: variable
-  297           | functionCall
-
-  298 selectConditionBreak: "end of line"
-  299                     | "," "end of line"
-  300                     | ";" "end of line"
-  301                     | ","
-  302                     | ";"
-
-  303 casesControl: "case" variable caseControlBreak caseBody
-  304             | "case" functionCall caseControlBreak caseBody
-  305             | comments "case" variable caseControlBreak caseBody
-  306             | comments "case" functionCall caseControlBreak caseBody
-  307             | casesControl "case" variable caseControlBreak caseBody
-  308             | casesControl "case" functionCall caseControlBreak caseBody
-
-  309 caseBody: expressions
-  310         | %empty
-
-  311 caseControlBreak: "then"
-  312                 | ","
-  313                 | ";"
-  314                 | "end of line"
-  315                 | "then" "end of line"
-  316                 | "," "end of line"
-  317                 | ";" "end of line"
-  318                 | "then" ","
-  319                 | "then" "," "end of line"
-  320                 | "then" ";"
-  321                 | "then" ";" "end of line"
-  322                 | %empty
-
-  323 forControl: "for" "identifier" "=" forIterator forConditionBreak forBody "end"
-  324           | "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
-
-  325 forIterator: functionCall
-  326            | variable
-
-  327 forConditionBreak: "end of line"
-  328                  | ";"
-  329                  | ";" "end of line"
-  330                  | ","
-  331                  | "," "end of line"
-  332                  | "do"
-  333                  | "do" "end of line"
-  334                  | %empty
-
-  335 forBody: expressions
-  336        | %empty
-
-  337 whileControl: "while" condition whileConditionBreak whileBody "end"
-
-  338 whileBody: expressions
-  339          | %empty
-
-  340 whileConditionBreak: ","
-  341                    | ";"
-  342                    | "do"
-  343                    | "do" ","
-  344                    | "do" ";"
-  345                    | "then"
-  346                    | "then" ","
-  347                    | "then" ";"
-  348                    | "line comment" "end of line"
-  349                    | "end of line"
-  350                    | "," "end of line"
-  351                    | ";" "end of line"
-  352                    | "do" "end of line"
-  353                    | "do" "," "end of line"
-  354                    | "do" ";" "end of line"
-  355                    | "then" "end of line"
-  356                    | "then" "," "end of line"
-  357                    | "then" ";" "end of line"
-
-  358 tryControl: "try" catchBody "catch" catchBody "end"
-  359           | "try" catchBody "end"
-
-  360 catchBody: expressions
-  361          | "end of line" expressions
-  362          | ";" expressions
-  363          | "," expressions
-  364          | "end of line"
-  365          | %empty
-
-  366 returnControl: "return"
-  367              | "return" variable
-  368              | "return" functionCall
-
-  369 comments: "line comment" "end of line"
-  370         | comments "line comment" "end of line"
-
-  371 lineEnd: "end of line"
-  372        | "line comment" "end of line"
-
-  373 keywords: "if"
-  374         | "then"
-  375         | "else"
-  376         | "elseif"
-  377         | "end"
-  378         | "select"
-  379         | "switch"
-  380         | "otherwise"
-  381         | "case"
-  382         | "function"
-  383         | "endfunction"
-  384         | "for"
-  385         | "while"
-  386         | "do"
-  387         | "break"
-  388         | "try"
-  389         | "catch"
-  390         | "return"
+  233                    | matrixOrCellColumns matrixOrCellColumnsBreak "line comment"
+  234                    | variable
+  235                    | functionCall
+  236                    | "line comment"
+
+  237 matrixOrCellColumnsBreak: matrixOrCellColumnsBreak ","
+  238                         | ","
+
+  239 variableDeclaration: assignable "=" variable
+  240                    | assignable "=" functionCall
+  241                    | functionCall "=" variable
+  242                    | functionCall "=" functionCall
+  243                    | assignable "=" ":"
+  244                    | functionCall "=" ":"
+  245                    | assignable "=" returnControl
+  246                    | functionCall "=" returnControl
+
+  247 assignable: variable "." "identifier"
+  248           | variable "." keywords
+  249           | variable "." functionCall
+  250           | functionCall "." "identifier"
+  251           | functionCall "." keywords
+  252           | "identifier"
+  253           | multipleResults
+  254           | variable "(" functionArgs ")"
+  255           | functionCall "(" functionArgs ")"
+
+  256 multipleResults: "[" matrixOrCellColumns "]"
+
+  257 ifControl: "if" condition then thenBody "end"
+  258          | "if" condition then thenBody else elseBody "end"
+  259          | "if" condition then thenBody elseIfControl "end"
+
+  260 thenBody: expressions
+  261         | %empty
+
+  262 elseBody: expressions
+  263         | %empty
+
+  264 ifConditionBreak: ";"
+  265                 | ";" "end of line"
+  266                 | ","
+  267                 | "," "end of line"
+  268                 | "end of line"
+
+  269 then: "then"
+  270     | ifConditionBreak "then"
+  271     | ifConditionBreak "then" "end of line"
+  272     | "then" ifConditionBreak
+  273     | ifConditionBreak
+  274     | %empty
+
+  275 else: "else"
+  276     | "else" ","
+  277     | "else" ";"
+  278     | "else" "end of line"
+  279     | "else" "," "end of line"
+  280     | "else" ";" "end of line"
+
+  281 elseIfControl: "elseif" condition then thenBody
+  282              | "elseif" condition then thenBody else elseBody
+  283              | "elseif" condition then thenBody elseIfControl
+
+  284 selectControl: select selectable selectConditionBreak casesControl "end"
+  285              | select selectable selectConditionBreak casesControl defaultCase elseBody "end"
+  286              | select selectable "line comment" selectConditionBreak casesControl "end"
+  287              | select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
+
+  288 select: "select"
+  289       | "switch"
+
+  290 defaultCase: else
+  291            | "otherwise"
+  292            | "otherwise" ","
+  293            | "otherwise" ";"
+  294            | "otherwise" "end of line"
+  295            | "otherwise" "," "end of line"
+  296            | "otherwise" ";" "end of line"
+
+  297 selectable: variable
+  298           | functionCall
+
+  299 selectConditionBreak: "end of line"
+  300                     | "," "end of line"
+  301                     | ";" "end of line"
+  302                     | ","
+  303                     | ";"
+
+  304 casesControl: "case" variable caseControlBreak caseBody
+  305             | "case" functionCall caseControlBreak caseBody
+  306             | comments "case" variable caseControlBreak caseBody
+  307             | comments "case" functionCall caseControlBreak caseBody
+  308             | casesControl "case" variable caseControlBreak caseBody
+  309             | casesControl "case" functionCall caseControlBreak caseBody
+
+  310 caseBody: expressions
+  311         | %empty
+
+  312 caseControlBreak: "then"
+  313                 | ","
+  314                 | ";"
+  315                 | "end of line"
+  316                 | "then" "end of line"
+  317                 | "," "end of line"
+  318                 | ";" "end of line"
+  319                 | "then" ","
+  320                 | "then" "," "end of line"
+  321                 | "then" ";"
+  322                 | "then" ";" "end of line"
+  323                 | %empty
+
+  324 forControl: "for" "identifier" "=" forIterator forConditionBreak forBody "end"
+  325           | "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
+
+  326 forIterator: functionCall
+  327            | variable
+
+  328 forConditionBreak: "end of line"
+  329                  | ";"
+  330                  | ";" "end of line"
+  331                  | ","
+  332                  | "," "end of line"
+  333                  | "do"
+  334                  | "do" "end of line"
+  335                  | %empty
+
+  336 forBody: expressions
+  337        | %empty
+
+  338 whileControl: "while" condition whileConditionBreak whileBody "end"
+
+  339 whileBody: expressions
+  340          | %empty
+
+  341 whileConditionBreak: ","
+  342                    | ";"
+  343                    | "do"
+  344                    | "do" ","
+  345                    | "do" ";"
+  346                    | "then"
+  347                    | "then" ","
+  348                    | "then" ";"
+  349                    | "line comment" "end of line"
+  350                    | "end of line"
+  351                    | "," "end of line"
+  352                    | ";" "end of line"
+  353                    | "do" "end of line"
+  354                    | "do" "," "end of line"
+  355                    | "do" ";" "end of line"
+  356                    | "then" "end of line"
+  357                    | "then" "," "end of line"
+  358                    | "then" ";" "end of line"
+
+  359 tryControl: "try" catchBody "catch" catchBody "end"
+  360           | "try" catchBody "end"
+
+  361 catchBody: expressions
+  362          | "end of line" expressions
+  363          | ";" expressions
+  364          | "," expressions
+  365          | "end of line"
+  366          | %empty
+
+  367 returnControl: "return"
+  368              | "return" variable
+  369              | "return" functionCall
+
+  370 comments: "line comment" "end of line"
+  371         | comments "line comment" "end of line"
+
+  372 lineEnd: "end of line"
+  373        | "line comment" "end of line"
+
+  374 keywords: "if"
+  375         | "then"
+  376         | "else"
+  377         | "elseif"
+  378         | "end"
+  379         | "select"
+  380         | "switch"
+  381         | "otherwise"
+  382         | "case"
+  383         | "function"
+  384         | "endfunction"
+  385         | "for"
+  386         | "while"
+  387         | "do"
+  388         | "break"
+  389         | "try"
+  390         | "catch"
+  391         | "return"
 
 
 Terminals, with rules where they appear
@@ -471,9 +472,9 @@ Terminals, with rules where they appear
 error (256) 34
 "line break" (258)
 "end of line" (259) 2 16 19 83 85 205 207 209 210 213 215 217 218 223
-    224 264 266 267 270 277 278 279 293 294 295 298 299 300 314 315
-    316 317 319 321 327 329 331 333 348 349 350 351 352 353 354 355
-    356 357 361 364 369 370 371 372
+    224 265 267 268 271 278 279 280 294 295 296 299 300 301 315 316
+    317 318 320 322 328 330 332 334 349 350 351 352 353 354 355 356
+    357 358 362 365 370 371 372 373
 "spaces" (260)
 "%t or %T" (261) 43 191
 "%f or %F" (262) 44 192
@@ -481,19 +482,19 @@ error (256) 34
 "~ or @" (264) 173 174
 "$" (265) 42 190
 "," (266) 15 18 57 58 59 60 61 62 63 64 65 66 79 84 85 198 199 200
-    201 202 203 236 237 265 266 275 278 291 294 299 301 312 316 318
-    319 330 331 340 343 346 350 353 356 363
+    201 202 203 237 238 266 267 276 279 292 295 300 302 313 317 319
+    320 331 332 341 344 347 351 354 357 364
 ":" (267) 55 60 65 94 97 100 103 106 109 112 115 118 121 168 169 170
-    171 242 243
-";" (268) 14 17 82 83 222 225 263 264 276 279 292 295 300 302 313 317
-    320 321 328 329 341 344 347 351 354 357 362
-"(" (269) 48 49 51 76 77 193 194 196 197 253 254 324
-")" (270) 48 49 51 76 77 193 194 196 197 253 254 324
-"[" (271) 68 69 72 73 212 213 214 215 216 217 218 219 255
-"]" (272) 68 69 72 73 212 213 214 215 216 217 218 219 255
+    171 243 244
+";" (268) 14 17 82 83 222 225 264 265 277 280 293 296 301 303 314 318
+    321 322 329 330 342 345 348 352 355 358 363
+"(" (269) 48 49 51 76 77 193 194 196 197 254 255 325
+")" (270) 48 49 51 76 77 193 194 196 197 254 255 325
+"[" (271) 68 69 72 73 212 213 214 215 216 217 218 219 256
+"]" (272) 68 69 72 73 212 213 214 215 216 217 218 219 256
 "{" (273) 50 52 204 205 206 207 208 209 210 211
 "}" (274) 50 52 204 205 206 207 208 209 210 211
-"." (275) 45 175 176 177 178 179 246 247 248 249 250
+"." (275) 45 175 176 177 178 179 247 248 249 250 251
 ".'" (276) 137 139
 "+" (277) 126 127 140 141
 "-" (278) 124 125 142 143
@@ -521,37 +522,37 @@ error (256) 34
 "&&" (300) 95 96 97
 "|" (301) 98 99 100
 "||" (302) 101 102 103
-"=" (303) 67 68 69 71 72 73 238 239 240 241 242 243 244 245 323 324
-"if" (304) 256 257 258 373
-"then" (305) 268 269 270 271 311 315 318 319 320 321 345 346 347 355
-    356 357 374
-"else" (306) 274 275 276 277 278 279 375
-"elseif" (307) 280 281 282 376
-"end" (308) 71 72 73 74 256 257 258 283 284 285 286 323 324 337 358
-    359 377
-"select" (309) 287 378
-"switch" (310) 288 379
-"case" (311) 303 304 305 306 307 308 381
-"otherwise" (312) 290 291 292 293 294 295 380
-"function" (313) 67 68 69 70 71 72 73 74 382
-"endfunction" (314) 67 68 69 70 383
-"for" (315) 323 324 384
-"while" (316) 337 385
-"do" (317) 332 333 342 343 344 352 353 354 386
-"break" (318) 30 387
+"=" (303) 67 68 69 71 72 73 239 240 241 242 243 244 245 246 324 325
+"if" (304) 257 258 259 374
+"then" (305) 269 270 271 272 312 316 319 320 321 322 346 347 348 356
+    357 358 375
+"else" (306) 275 276 277 278 279 280 376
+"elseif" (307) 281 282 283 377
+"end" (308) 71 72 73 74 257 258 259 284 285 286 287 324 325 338 359
+    360 378
+"select" (309) 288 379
+"switch" (310) 289 380
+"case" (311) 304 305 306 307 308 309 382
+"otherwise" (312) 291 292 293 294 295 296 381
+"function" (313) 67 68 69 70 71 72 73 74 383
+"endfunction" (314) 67 68 69 70 384
+"for" (315) 324 325 385
+"while" (316) 338 386
+"do" (317) 333 334 343 344 345 353 354 355 387
+"break" (318) 30 388
 "continue" (319) 31
-"try" (320) 358 359 388
-"catch" (321) 358 389
-"return" (322) 366 367 368 390
+"try" (320) 359 360 389
+"catch" (321) 359 390
+"return" (322) 367 368 369 391
 FLEX_ERROR (323)
 "string" (324) 41 189
 "identifier" (325) 36 37 45 49 50 51 52 67 68 69 70 71 72 73 74 79
-    80 175 178 185 246 249 251 323 324
+    80 175 178 185 247 250 252 324 325
 "integer" (326) 38 186
 "float" (327) 40 188
 "number" (328) 39 187
 "path" (329) 46
-"line comment" (330) 7 9 11 12 33 232 235 285 286 348 369 370 372
+"line comment" (330) 7 9 11 12 33 232 233 236 286 287 349 370 371 373
 "block comment" (331)
 TOPLEVEL (332)
 HIGHLEVEL (333)
@@ -569,8 +570,8 @@ $accept (84)
 program (85)
     on left: 1 2 3 4, on right: 0
 expressions (86)
-    on left: 5 6 7 8 9, on right: 1 2 86 259 261 309 335 338 360 361
-    362 363
+    on left: 5 6 7 8 9, on right: 1 2 86 260 262 310 336 339 361 362
+    363 364
 recursiveExpression (87)
     on left: 10 11 12 13, on right: 5 6 7 10 11
 expressionLineBreak (88)
@@ -586,13 +587,13 @@ functionCall (92)
     on left: 47 48, on right: 21 48 54 59 64 88 91 93 96 99 102 105
     108 111 114 117 120 123 125 127 129 130 131 133 134 135 138 139
     141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171
-    174 177 178 179 181 197 199 201 202 203 229 231 234 239 240 241
-    243 245 248 249 250 254 297 304 306 308 325 368
+    174 177 178 179 181 197 199 201 202 203 229 231 235 240 241 242
+    244 246 249 250 251 255 298 305 307 309 326 369
 simpleFunctionCall (93)
     on left: 49 50 51 52, on right: 47
 functionArgs (94)
     on left: 53 54 55 56 57 58 59 60 61 62 63 64 65 66, on right: 49
-    50 62 63 64 65 66 196 197 253 254
+    50 62 63 64 65 66 196 197 254 255
 functionDeclaration (95)
     on left: 67 68 69 70 71 72 73 74, on right: 20
 functionDeclarationReturns (96)
@@ -606,7 +607,7 @@ functionDeclarationBreak (99)
 functionBody (100)
     on left: 86 87, on right: 67 68 69 70 71 72 73 74
 condition (101)
-    on left: 88 89, on right: 256 257 258 280 281 282 337
+    on left: 88 89, on right: 257 258 259 281 282 283 338
 comparison (102)
     on left: 90 91, on right: 195
 rightComparable (103)
@@ -630,7 +631,7 @@ variable (108)
     63 89 90 92 95 98 101 104 107 110 113 116 119 122 124 126 128 129
     130 132 133 134 136 137 140 142 144 146 148 150 152 154 156 158
     160 162 164 166 168 170 173 175 176 177 180 193 196 198 200 202
-    203 228 230 233 238 240 246 247 248 253 296 303 305 307 326 367
+    203 228 230 234 239 241 247 248 249 254 297 304 306 308 327 368
 variableFields (109)
     on left: 198 199 200 201 202 203, on right: 194 198 199
 cell (110)
@@ -644,78 +645,78 @@ matrixOrCellLineBreak (113)
 matrixOrCellLine (114)
     on left: 226 227, on right: 220 221
 matrixOrCellColumns (115)
-    on left: 228 229 230 231 232 233 234 235, on right: 206 207 208
-    209 214 215 216 217 226 227 228 229 230 231 232 255
+    on left: 228 229 230 231 232 233 234 235 236, on right: 206 207
+    208 209 214 215 216 217 226 227 228 229 230 231 232 233 256
 matrixOrCellColumnsBreak (116)
-    on left: 236 237, on right: 227 228 229 236
+    on left: 237 238, on right: 227 228 229 233 237
 variableDeclaration (117)
-    on left: 238 239 240 241 242 243 244 245, on right: 22 56 61 66
+    on left: 239 240 241 242 243 244 245 246, on right: 22 56 61 66
 assignable (118)
-    on left: 246 247 248 249 250 251 252 253 254, on right: 238 239
-    242 244
+    on left: 247 248 249 250 251 252 253 254 255, on right: 239 240
+    243 245
 multipleResults (119)
-    on left: 255, on right: 252
+    on left: 256, on right: 253
 ifControl (120)
-    on left: 256 257 258, on right: 23
+    on left: 257 258 259, on right: 23
 thenBody (121)
-    on left: 259 260, on right: 256 257 258 280 281 282
+    on left: 260 261, on right: 257 258 259 281 282 283
 elseBody (122)
-    on left: 261 262, on right: 257 281 284 286
+    on left: 262 263, on right: 258 282 285 287
 ifConditionBreak (123)
-    on left: 263 264 265 266 267, on right: 269 270 271 272
+    on left: 264 265 266 267 268, on right: 270 271 272 273
 then (124)
-    on left: 268 269 270 271 272 273, on right: 256 257 258 280 281
-    282
+    on left: 269 270 271 272 273 274, on right: 257 258 259 281 282
+    283
 else (125)
-    on left: 274 275 276 277 278 279, on right: 257 281 289
+    on left: 275 276 277 278 279 280, on right: 258 282 290
 elseIfControl (126)
-    on left: 280 281 282, on right: 258 282
+    on left: 281 282 283, on right: 259 283
 selectControl (127)
-    on left: 283 284 285 286, on right: 24
+    on left: 284 285 286 287, on right: 24
 select (128)
-    on left: 287 288, on right: 283 284 285 286
+    on left: 288 289, on right: 284 285 286 287
 defaultCase (129)
-    on left: 289 290 291 292 293 294 295, on right: 284 286
+    on left: 290 291 292 293 294 295 296, on right: 285 287
 selectable (130)
-    on left: 296 297, on right: 283 284 285 286
+    on left: 297 298, on right: 284 285 286 287
 selectConditionBreak (131)
-    on left: 298 299 300 301 302, on right: 283 284 285 286
+    on left: 299 300 301 302 303, on right: 284 285 286 287
 casesControl (132)
-    on left: 303 304 305 306 307 308, on right: 283 284 285 286 307
-    308
+    on left: 304 305 306 307 308 309, on right: 284 285 286 287 308
+    309
 caseBody (133)
-    on left: 309 310, on right: 303 304 305 306 307 308
+    on left: 310 311, on right: 304 305 306 307 308 309
 caseControlBreak (134)
-    on left: 311 312 313 314 315 316 317 318 319 320 321 322, on right:
-    303 304 305 306 307 308
+    on left: 312 313 314 315 316 317 318 319 320 321 322 323, on right:
+    304 305 306 307 308 309
 forControl (135)
-    on left: 323 324, on right: 25
+    on left: 324 325, on right: 25
 forIterator (136)
-    on left: 325 326, on right: 323 324
+    on left: 326 327, on right: 324 325
 forConditionBreak (137)
-    on left: 327 328 329 330 331 332 333 334, on right: 323 324
+    on left: 328 329 330 331 332 333 334 335, on right: 324 325
 forBody (138)
-    on left: 335 336, on right: 323 324
+    on left: 336 337, on right: 324 325
 whileControl (139)
-    on left: 337, on right: 26
+    on left: 338, on right: 26
 whileBody (140)
-    on left: 338 339, on right: 337
+    on left: 339 340, on right: 338
 whileConditionBreak (141)
-    on left: 340 341 342 343 344 345 346 347 348 349 350 351 352 353
-    354 355 356 357, on right: 337
+    on left: 341 342 343 344 345 346 347 348 349 350 351 352 353 354
+    355 356 357 358, on right: 338
 tryControl (142)
-    on left: 358 359, on right: 27
+    on left: 359 360, on right: 27
 catchBody (143)
-    on left: 360 361 362 363 364 365, on right: 358 359
+    on left: 361 362 363 364 365 366, on right: 359 360
 returnControl (144)
-    on left: 366 367 368, on right: 32 244 245
+    on left: 367 368 369, on right: 32 245 246
 comments (145)
-    on left: 369 370, on right: 305 306 370
+    on left: 370 371, on right: 306 307 371
 lineEnd (146)
-    on left: 371 372, on right: 81
+    on left: 372 373, on right: 81
 keywords (147)
-    on left: 373 374 375 376 377 378 379 380 381 382 383 384 385 386
-    387 388 389 390, on right: 176 179 247 250
+    on left: 374 375 376 377 378 379 380 381 382 383 384 385 386 387
+    388 389 390 391, on right: 176 179 248 251
 
 
 State 0
@@ -832,41 +833,41 @@ State 0
   217       | . "[" "end of line" matrixOrCellColumns "]"
   218       | . "[" "end of line" "]"
   219       | . "[" "]"
-  238 variableDeclaration: . assignable "=" variable
-  239                    | . assignable "=" functionCall
-  240                    | . functionCall "=" variable
-  241                    | . functionCall "=" functionCall
-  242                    | . assignable "=" ":"
-  243                    | . functionCall "=" ":"
-  244                    | . assignable "=" returnControl
-  245                    | . functionCall "=" returnControl
-  246 assignable: . variable "." "identifier"
-  247           | . variable "." keywords
-  248           | . variable "." functionCall
-  249           | . functionCall "." "identifier"
-  250           | . functionCall "." keywords
-  251           | . "identifier"
-  252           | . multipleResults
-  253           | . variable "(" functionArgs ")"
-  254           | . functionCall "(" functionArgs ")"
-  255 multipleResults: . "[" matrixOrCellColumns "]"
-  256 ifControl: . "if" condition then thenBody "end"
-  257          | . "if" condition then thenBody else elseBody "end"
-  258          | . "if" condition then thenBody elseIfControl "end"
-  283 selectControl: . select selectable selectConditionBreak casesControl "end"
-  284              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
-  285              | . select selectable "line comment" selectConditionBreak casesControl "end"
-  286              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
-  287 select: . "select"
-  288       | . "switch"
-  323 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
-  324           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
-  337 whileControl: . "while" condition whileConditionBreak whileBody "end"
-  358 tryControl: . "try" catchBody "catch" catchBody "end"
-  359           | . "try" catchBody "end"
-  366 returnControl: . "return"
-  367              | . "return" variable
-  368              | . "return" functionCall
+  239 variableDeclaration: . assignable "=" variable
+  240                    | . assignable "=" functionCall
+  241                    | . functionCall "=" variable
+  242                    | . functionCall "=" functionCall
+  243                    | . assignable "=" ":"
+  244                    | . functionCall "=" ":"
+  245                    | . assignable "=" returnControl
+  246                    | . functionCall "=" returnControl
+  247 assignable: . variable "." "identifier"
+  248           | . variable "." keywords
+  249           | . variable "." functionCall
+  250           | . functionCall "." "identifier"
+  251           | . functionCall "." keywords
+  252           | . "identifier"
+  253           | . multipleResults
+  254           | . variable "(" functionArgs ")"
+  255           | . functionCall "(" functionArgs ")"
+  256 multipleResults: . "[" matrixOrCellColumns "]"
+  257 ifControl: . "if" condition then thenBody "end"
+  258          | . "if" condition then thenBody else elseBody "end"
+  259          | . "if" condition then thenBody elseIfControl "end"
+  284 selectControl: . select selectable selectConditionBreak casesControl "end"
+  285              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
+  286              | . select selectable "line comment" selectConditionBreak casesControl "end"
+  287              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
+  288 select: . "select"
+  289       | . "switch"
+  324 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
+  325           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
+  338 whileControl: . "while" condition whileConditionBreak whileBody "end"
+  359 tryControl: . "try" catchBody "catch" catchBody "end"
+  360           | . "try" catchBody "end"
+  367 returnControl: . "return"
+  368              | . "return" variable
+  369              | . "return" functionCall
 
     error           shift, and go to state 1
     "end of line"   shift, and go to state 2
@@ -1038,41 +1039,41 @@ State 2
   217       | . "[" "end of line" matrixOrCellColumns "]"
   218       | . "[" "end of line" "]"
   219       | . "[" "]"
-  238 variableDeclaration: . assignable "=" variable
-  239                    | . assignable "=" functionCall
-  240                    | . functionCall "=" variable
-  241                    | . functionCall "=" functionCall
-  242                    | . assignable "=" ":"
-  243                    | . functionCall "=" ":"
-  244                    | . assignable "=" returnControl
-  245                    | . functionCall "=" returnControl
-  246 assignable: . variable "." "identifier"
-  247           | . variable "." keywords
-  248           | . variable "." functionCall
-  249           | . functionCall "." "identifier"
-  250           | . functionCall "." keywords
-  251           | . "identifier"
-  252           | . multipleResults
-  253           | . variable "(" functionArgs ")"
-  254           | . functionCall "(" functionArgs ")"
-  255 multipleResults: . "[" matrixOrCellColumns "]"
-  256 ifControl: . "if" condition then thenBody "end"
-  257          | . "if" condition then thenBody else elseBody "end"
-  258          | . "if" condition then thenBody elseIfControl "end"
-  283 selectControl: . select selectable selectConditionBreak casesControl "end"
-  284              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
-  285              | . select selectable "line comment" selectConditionBreak casesControl "end"
-  286              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
-  287 select: . "select"
-  288       | . "switch"
-  323 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
-  324           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
-  337 whileControl: . "while" condition whileConditionBreak whileBody "end"
-  358 tryControl: . "try" catchBody "catch" catchBody "end"
-  359           | . "try" catchBody "end"
-  366 returnControl: . "return"
-  367              | . "return" variable
-  368              | . "return" functionCall
+  239 variableDeclaration: . assignable "=" variable
+  240                    | . assignable "=" functionCall
+  241                    | . functionCall "=" variable
+  242                    | . functionCall "=" functionCall
+  243                    | . assignable "=" ":"
+  244                    | . functionCall "=" ":"
+  245                    | . assignable "=" returnControl
+  246                    | . functionCall "=" returnControl
+  247 assignable: . variable "." "identifier"
+  248           | . variable "." keywords
+  249           | . variable "." functionCall
+  250           | . functionCall "." "identifier"
+  251           | . functionCall "." keywords
+  252           | . "identifier"
+  253           | . multipleResults
+  254           | . variable "(" functionArgs ")"
+  255           | . functionCall "(" functionArgs ")"
+  256 multipleResults: . "[" matrixOrCellColumns "]"
+  257 ifControl: . "if" condition then thenBody "end"
+  258          | . "if" condition then thenBody else elseBody "end"
+  259          | . "if" condition then thenBody elseIfControl "end"
+  284 selectControl: . select selectable selectConditionBreak casesControl "end"
+  285              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
+  286              | . select selectable "line comment" selectConditionBreak casesControl "end"
+  287              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
+  288 select: . "select"
+  289       | . "switch"
+  324 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
+  325           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
+  338 whileControl: . "while" condition whileConditionBreak whileBody "end"
+  359 tryControl: . "try" catchBody "catch" catchBody "end"
+  360           | . "try" catchBody "end"
+  367 returnControl: . "return"
+  368              | . "return" variable
+  369              | . "return" functionCall
 
     error           shift, and go to state 1
     "%t or %T"      shift, and go to state 3
@@ -1451,10 +1452,11 @@ State 10
   230                    | . matrixOrCellColumns variable
   231                    | . matrixOrCellColumns functionCall
   232                    | . matrixOrCellColumns "line comment"
-  233                    | . variable
-  234                    | . functionCall
-  235                    | . "line comment"
-  255 multipleResults: "[" . matrixOrCellColumns "]"
+  233                    | . matrixOrCellColumns matrixOrCellColumnsBreak "line comment"
+  234                    | . variable
+  235                    | . functionCall
+  236                    | . "line comment"
+  256 multipleResults: "[" . matrixOrCellColumns "]"
 
     "end of line"   shift, and go to state 62
     "%t or %T"      shift, and go to state 3
@@ -1572,9 +1574,10 @@ State 11
   230                    | . matrixOrCellColumns variable
   231                    | . matrixOrCellColumns functionCall
   232                    | . matrixOrCellColumns "line comment"
-  233                    | . variable
-  234                    | . functionCall
-  235                    | . "line comment"
+  233                    | . matrixOrCellColumns matrixOrCellColumnsBreak "line comment"
+  234                    | . variable
+  235                    | . functionCall
+  236                    | . "line comment"
 
     "end of line"   shift, and go to state 70
     "%t or %T"      shift, and go to state 3
@@ -1869,9 +1872,9 @@ State 14
   217       | . "[" "end of line" matrixOrCellColumns "]"
   218       | . "[" "end of line" "]"
   219       | . "[" "]"
-  256 ifControl: "if" . condition then thenBody "end"
-  257          | "if" . condition then thenBody else elseBody "end"
-  258          | "if" . condition then thenBody elseIfControl "end"
+  257 ifControl: "if" . condition then thenBody "end"
+  258          | "if" . condition then thenBody else elseBody "end"
+  259          | "if" . condition then thenBody elseIfControl "end"
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -1900,16 +1903,16 @@ State 14
 
 State 15
 
-  287 select: "select" .
+  288 select: "select" .
 
-    $default  reduce using rule 287 (select)
+    $default  reduce using rule 288 (select)
 
 
 State 16
 
-  288 select: "switch" .
+  289 select: "switch" .
 
-    $default  reduce using rule 288 (select)
+    $default  reduce using rule 289 (select)
 
 
 State 17
@@ -1929,8 +1932,8 @@ State 17
 
 State 18
 
-  323 forControl: "for" . "identifier" "=" forIterator forConditionBreak forBody "end"
-  324           | "for" . "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
+  324 forControl: "for" . "identifier" "=" forIterator forConditionBreak forBody "end"
+  325           | "for" . "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
 
     "("           shift, and go to state 83
     "identifier"  shift, and go to state 84
@@ -2007,7 +2010,7 @@ State 19
   217       | . "[" "end of line" matrixOrCellColumns "]"
   218       | . "[" "end of line" "]"
   219       | . "[" "]"
-  337 whileControl: "while" . condition whileConditionBreak whileBody "end"
+  338 whileControl: "while" . condition whileConditionBreak whileBody "end"
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -2151,49 +2154,49 @@ State 22
   217       | . "[" "end of line" matrixOrCellColumns "]"
   218       | . "[" "end of line" "]"
   219       | . "[" "]"
-  238 variableDeclaration: . assignable "=" variable
-  239                    | . assignable "=" functionCall
-  240                    | . functionCall "=" variable
-  241                    | . functionCall "=" functionCall
-  242                    | . assignable "=" ":"
-  243                    | . functionCall "=" ":"
-  244                    | . assignable "=" returnControl
-  245                    | . functionCall "=" returnControl
-  246 assignable: . variable "." "identifier"
-  247           | . variable "." keywords
-  248           | . variable "." functionCall
-  249           | . functionCall "." "identifier"
-  250           | . functionCall "." keywords
-  251           | . "identifier"
-  252           | . multipleResults
-  253           | . variable "(" functionArgs ")"
-  254           | . functionCall "(" functionArgs ")"
-  255 multipleResults: . "[" matrixOrCellColumns "]"
-  256 ifControl: . "if" condition then thenBody "end"
-  257          | . "if" condition then thenBody else elseBody "end"
-  258          | . "if" condition then thenBody elseIfControl "end"
-  283 selectControl: . select selectable selectConditionBreak casesControl "end"
-  284              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
-  285              | . select selectable "line comment" selectConditionBreak casesControl "end"
-  286              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
-  287 select: . "select"
-  288       | . "switch"
-  323 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
-  324           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
-  337 whileControl: . "while" condition whileConditionBreak whileBody "end"
-  358 tryControl: . "try" catchBody "catch" catchBody "end"
-  358           | "try" . catchBody "catch" catchBody "end"
-  359           | . "try" catchBody "end"
-  359           | "try" . catchBody "end"
-  360 catchBody: . expressions
-  361          | . "end of line" expressions
-  362          | . ";" expressions
-  363          | . "," expressions
-  364          | . "end of line"
-  365          | . %empty  ["end", "catch"]
-  366 returnControl: . "return"
-  367              | . "return" variable
-  368              | . "return" functionCall
+  239 variableDeclaration: . assignable "=" variable
+  240                    | . assignable "=" functionCall
+  241                    | . functionCall "=" variable
+  242                    | . functionCall "=" functionCall
+  243                    | . assignable "=" ":"
+  244                    | . functionCall "=" ":"
+  245                    | . assignable "=" returnControl
+  246                    | . functionCall "=" returnControl
+  247 assignable: . variable "." "identifier"
+  248           | . variable "." keywords
+  249           | . variable "." functionCall
+  250           | . functionCall "." "identifier"
+  251           | . functionCall "." keywords
+  252           | . "identifier"
+  253           | . multipleResults
+  254           | . variable "(" functionArgs ")"
+  255           | . functionCall "(" functionArgs ")"
+  256 multipleResults: . "[" matrixOrCellColumns "]"
+  257 ifControl: . "if" condition then thenBody "end"
+  258          | . "if" condition then thenBody else elseBody "end"
+  259          | . "if" condition then thenBody elseIfControl "end"
+  284 selectControl: . select selectable selectConditionBreak casesControl "end"
+  285              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
+  286              | . select selectable "line comment" selectConditionBreak casesControl "end"
+  287              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
+  288 select: . "select"
+  289       | . "switch"
+  324 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
+  325           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
+  338 whileControl: . "while" condition whileConditionBreak whileBody "end"
+  359 tryControl: . "try" catchBody "catch" catchBody "end"
+  359           | "try" . catchBody "catch" catchBody "end"
+  360           | . "try" catchBody "end"
+  360           | "try" . catchBody "end"
+  361 catchBody: . expressions
+  362          | . "end of line" expressions
+  363          | . ";" expressions
+  364          | . "," expressions
+  365          | . "end of line"
+  366          | . %empty  ["end", "catch"]
+  367 returnControl: . "return"
+  368              | . "return" variable
+  369              | . "return" functionCall
 
     error           shift, and go to state 1
     "end of line"   shift, and go to state 86
@@ -2225,8 +2228,8 @@ State 22
     "number"        shift, and go to state 28
     "line comment"  shift, and go to state 29
 
-    "end"    reduce using rule 365 (catchBody)
-    "catch"  reduce using rule 365 (catchBody)
+    "end"    reduce using rule 366 (catchBody)
+    "catch"  reduce using rule 366 (catchBody)
 
     expressions           go to state 89
     recursiveExpression   go to state 32
@@ -2322,9 +2325,9 @@ State 23
   217       | . "[" "end of line" matrixOrCellColumns "]"
   218       | . "[" "end of line" "]"
   219       | . "[" "]"
-  366 returnControl: "return" .  ["end of file", "end of line", ",", ";", ")", "}", "else", "elseif", "end", "case", "otherwise", "endfunction", "catch", "line comment"]
-  367              | "return" . variable
-  368              | "return" . functionCall
+  367 returnControl: "return" .  ["end of file", "end of line", ",", ";", ")", "}", "else", "elseif", "end", "case", "otherwise", "endfunction", "catch", "line comment"]
+  368              | "return" . variable
+  369              | "return" . functionCall
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -2341,7 +2344,7 @@ State 23
     "float"       shift, and go to state 27
     "number"      shift, and go to state 28
 
-    $default  reduce using rule 366 (returnControl)
+    $default  reduce using rule 367 (returnControl)
 
     functionCall        go to state 91
     simpleFunctionCall  go to state 37
@@ -2377,7 +2380,7 @@ State 25
    51                   | "identifier" . "(" ")"
    52                   | "identifier" . "{" "}"
   185 variable: "identifier" .  ["end of file", "end of line", "'", ",", ":", ";", ".", ".'", "+", "-", "*", ".*", ".*.", "*.", "/", "./", "/.", "./.", "\\", ".\\", "\\.", ".\\.", "** or ^", ".^", "==", "<> or ~=", "<", "<=", ">", ">=", "&", "&&", "|", "||", "else", "elseif", "end", "case", "otherwise", "endfunction", "catch", "line comment"]
-  251 assignable: "identifier" .  ["="]
+  252 assignable: "identifier" .  ["="]
 
     "%t or %T"    shift, and go to state 93
     "%f or %F"    shift, and go to state 94
@@ -2391,7 +2394,7 @@ State 25
     "number"      shift, and go to state 102
     "path"        shift, and go to state 103
 
-    "="       reduce using rule 251 (assignable)
+    "="       reduce using rule 252 (assignable)
     $default  reduce using rule 185 (variable)
 
     implicitCallable  go to state 104
@@ -2540,41 +2543,41 @@ State 32
   217       | . "[" "end of line" matrixOrCellColumns "]"
   218       | . "[" "end of line" "]"
   219       | . "[" "]"
-  238 variableDeclaration: . assignable "=" variable
-  239                    | . assignable "=" functionCall
-  240                    | . functionCall "=" variable
-  241                    | . functionCall "=" functionCall
-  242                    | . assignable "=" ":"
-  243                    | . functionCall "=" ":"
-  244                    | . assignable "=" returnControl
-  245                    | . functionCall "=" returnControl
-  246 assignable: . variable "." "identifier"
-  247           | . variable "." keywords
-  248           | . variable "." functionCall
-  249           | . functionCall "." "identifier"
-  250           | . functionCall "." keywords
-  251           | . "identifier"
-  252           | . multipleResults
-  253           | . variable "(" functionArgs ")"
-  254           | . functionCall "(" functionArgs ")"
-  255 multipleResults: . "[" matrixOrCellColumns "]"
-  256 ifControl: . "if" condition then thenBody "end"
-  257          | . "if" condition then thenBody else elseBody "end"
-  258          | . "if" condition then thenBody elseIfControl "end"
-  283 selectControl: . select selectable selectConditionBreak casesControl "end"
-  284              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
-  285              | . select selectable "line comment" selectConditionBreak casesControl "end"
-  286              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
-  287 select: . "select"
-  288       | . "switch"
-  323 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
-  324           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
-  337 whileControl: . "while" condition whileConditionBreak whileBody "end"
-  358 tryControl: . "try" catchBody "catch" catchBody "end"
-  359           | . "try" catchBody "end"
-  366 returnControl: . "return"
-  367              | . "return" variable
-  368              | . "return" functionCall
+  239 variableDeclaration: . assignable "=" variable
+  240                    | . assignable "=" functionCall
+  241                    | . functionCall "=" variable
+  242                    | . functionCall "=" functionCall
+  243                    | . assignable "=" ":"
+  244                    | . functionCall "=" ":"
+  245                    | . assignable "=" returnControl
+  246                    | . functionCall "=" returnControl
+  247 assignable: . variable "." "identifier"
+  248           | . variable "." keywords
+  249           | . variable "." functionCall
+  250           | . functionCall "." "identifier"
+  251           | . functionCall "." keywords
+  252           | . "identifier"
+  253           | . multipleResults
+  254           | . variable "(" functionArgs ")"
+  255           | . functionCall "(" functionArgs ")"
+  256 multipleResults: . "[" matrixOrCellColumns "]"
+  257 ifControl: . "if" condition then thenBody "end"
+  258          | . "if" condition then thenBody else elseBody "end"
+  259          | . "if" condition then thenBody elseIfControl "end"
+  284 selectControl: . select selectable selectConditionBreak casesControl "end"
+  285              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
+  286              | . select selectable "line comment" selectConditionBreak casesControl "end"
+  287              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
+  288 select: . "select"
+  289       | . "switch"
+  324 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
+  325           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
+  338 whileControl: . "while" condition whileConditionBreak whileBody "end"
+  359 tryControl: . "try" catchBody "catch" catchBody "end"
+  360           | . "try" catchBody "end"
+  367 returnControl: . "return"
+  368              | . "return" variable
+  369              | . "return" functionCall
 
     error           shift, and go to state 1
     "%t or %T"      shift, and go to state 3
@@ -2779,13 +2782,13 @@ State 36
   179         | functionCall . "." keywords
   181         | functionCall . listableEnd
   197         | functionCall . "(" functionArgs ")"
-  240 variableDeclaration: functionCall . "=" variable
-  241                    | functionCall . "=" functionCall
-  243                    | functionCall . "=" ":"
-  245                    | functionCall . "=" returnControl
-  249 assignable: functionCall . "." "identifier"
-  250           | functionCall . "." keywords
-  254           | functionCall . "(" functionArgs ")"
+  241 variableDeclaration: functionCall . "=" variable
+  242                    | functionCall . "=" functionCall
+  244                    | functionCall . "=" ":"
+  246                    | functionCall . "=" returnControl
+  250 assignable: functionCall . "." "identifier"
+  251           | functionCall . "." keywords
+  255           | functionCall . "(" functionArgs ")"
 
     "'"         shift, and go to state 114
     ":"         shift, and go to state 115
@@ -2935,10 +2938,10 @@ State 41
   177         | variable . "." functionCall
   180         | variable . listableEnd
   196         | variable . "(" functionArgs ")"
-  246 assignable: variable . "." "identifier"
-  247           | variable . "." keywords
-  248           | variable . "." functionCall
-  253           | variable . "(" functionArgs ")"
+  247 assignable: variable . "." "identifier"
+  248           | variable . "." keywords
+  249           | variable . "." functionCall
+  254           | variable . "(" functionArgs ")"
 
     "'"         shift, and go to state 150
     ":"         shift, and go to state 115
@@ -3003,19 +3006,19 @@ State 44
 
 State 45
 
-  238 variableDeclaration: assignable . "=" variable
-  239                    | assignable . "=" functionCall
-  242                    | assignable . "=" ":"
-  244                    | assignable . "=" returnControl
+  239 variableDeclaration: assignable . "=" variable
+  240                    | assignable . "=" functionCall
+  243                    | assignable . "=" ":"
+  245                    | assignable . "=" returnControl
 
     "="  shift, and go to state 159
 
 
 State 46
 
-  252 assignable: multipleResults .
+  253 assignable: multipleResults .
 
-    $default  reduce using rule 252 (assignable)
+    $default  reduce using rule 253 (assignable)
 
 
 State 47
@@ -3101,12 +3104,12 @@ State 49
   217       | . "[" "end of line" matrixOrCellColumns "]"
   218       | . "[" "end of line" "]"
   219       | . "[" "]"
-  283 selectControl: select . selectable selectConditionBreak casesControl "end"
-  284              | select . selectable selectConditionBreak casesControl defaultCase elseBody "end"
-  285              | select . selectable "line comment" selectConditionBreak casesControl "end"
-  286              | select . selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
-  296 selectable: . variable
-  297           | . functionCall
+  284 selectControl: select . selectable selectConditionBreak casesControl "end"
+  285              | select . selectable selectConditionBreak casesControl defaultCase elseBody "end"
+  286              | select . selectable "line comment" selectConditionBreak casesControl "end"
+  287              | select . selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
+  297 selectable: . variable
+  298           | . functionCall
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -3254,9 +3257,10 @@ State 55
   230                    | . matrixOrCellColumns variable
   231                    | . matrixOrCellColumns functionCall
   232                    | . matrixOrCellColumns "line comment"
-  233                    | . variable
-  234                    | . functionCall
-  235                    | . "line comment"
+  233                    | . matrixOrCellColumns matrixOrCellColumnsBreak "line comment"
+  234                    | . variable
+  235                    | . functionCall
+  236                    | . "line comment"
 
     "end of line"   shift, and go to state 62
     "%t or %T"      shift, and go to state 3
@@ -3885,9 +3889,10 @@ State 62
   230                    | . matrixOrCellColumns variable
   231                    | . matrixOrCellColumns functionCall
   232                    | . matrixOrCellColumns "line comment"
-  233                    | . variable
-  234                    | . functionCall
-  235                    | . "line comment"
+  233                    | . matrixOrCellColumns matrixOrCellColumnsBreak "line comment"
+  234                    | . variable
+  235                    | . functionCall
+  236                    | . "line comment"
 
     "%t or %T"      shift, and go to state 3
     "%f or %F"      shift, and go to state 4
@@ -3927,9 +3932,9 @@ State 63
 
 State 64
 
-  235 matrixOrCellColumns: "line comment" .
+  236 matrixOrCellColumns: "line comment" .
 
-    $default  reduce using rule 235 (matrixOrCellColumns)
+    $default  reduce using rule 236 (matrixOrCellColumns)
 
 
 State 65
@@ -4009,7 +4014,7 @@ State 65
   179         | functionCall . "." keywords
   181         | functionCall . listableEnd
   197         | functionCall . "(" functionArgs ")"
-  234 matrixOrCellColumns: functionCall .  ["end of line", "%t or %T", "%f or %F", "~ or @", "$", ",", ";", "[", "]", "{", "}", "string", "identifier", "integer", "float", "number", "line comment"]
+  235 matrixOrCellColumns: functionCall .  ["end of line", "%t or %T", "%f or %F", "~ or @", "$", ",", ";", "[", "]", "{", "}", "string", "identifier", "integer", "float", "number", "line comment"]
 
     "'"         shift, and go to state 114
     ":"         shift, and go to state 115
@@ -4043,16 +4048,16 @@ State 65
     "|"         shift, and go to state 143
     "||"        shift, and go to state 144
 
-    $default  reduce using rule 234 (matrixOrCellColumns)
+    $default  reduce using rule 235 (matrixOrCellColumns)
 
     rightComparable  go to state 146
     rightOperand     go to state 147
     listableBegin    go to state 148
     listableEnd      go to state 149
 
-    Conflict between rule 234 and token "(" resolved as shift (HIGHLEVEL < "(").
-    Conflict between rule 234 and token "+" resolved as shift (HIGHLEVEL < "+").
-    Conflict between rule 234 and token "-" resolved as shift (HIGHLEVEL < "-").
+    Conflict between rule 235 and token "(" resolved as shift (HIGHLEVEL < "(").
+    Conflict between rule 235 and token "+" resolved as shift (HIGHLEVEL < "+").
+    Conflict between rule 235 and token "-" resolved as shift (HIGHLEVEL < "-").
 
 
 State 66
@@ -4133,7 +4138,7 @@ State 66
   177         | variable . "." functionCall
   180         | variable . listableEnd
   196         | variable . "(" functionArgs ")"
-  233 matrixOrCellColumns: variable .  ["end of line", "%t or %T", "%f or %F", "~ or @", "$", ",", ";", "[", "]", "{", "}", "string", "identifier", "integer", "float", "number", "line comment"]
+  234 matrixOrCellColumns: variable .  ["end of line", "%t or %T", "%f or %F", "~ or @", "$", ",", ";", "[", "]", "{", "}", "string", "identifier", "integer", "float", "number", "line comment"]
 
     "'"         shift, and go to state 150
     ":"         shift, and go to state 115
@@ -4167,16 +4172,16 @@ State 66
     "|"         shift, and go to state 143
     "||"        shift, and go to state 144
 
-    $default  reduce using rule 233 (matrixOrCellColumns)
+    $default  reduce using rule 234 (matrixOrCellColumns)
 
     rightComparable  go to state 156
     rightOperand     go to state 157
     listableBegin    go to state 148
     listableEnd      go to state 158
 
-    Conflict between rule 233 and token "(" resolved as shift (HIGHLEVEL < "(").
-    Conflict between rule 233 and token "+" resolved as shift (HIGHLEVEL < "+").
-    Conflict between rule 233 and token "-" resolved as shift (HIGHLEVEL < "-").
+    Conflict between rule 234 and token "(" resolved as shift (HIGHLEVEL < "(").
+    Conflict between rule 234 and token "+" resolved as shift (HIGHLEVEL < "+").
+    Conflict between rule 234 and token "-" resolved as shift (HIGHLEVEL < "-").
 
 
 State 67
@@ -4258,9 +4263,10 @@ State 67
   230                    | . matrixOrCellColumns variable
   231                    | . matrixOrCellColumns functionCall
   232                    | . matrixOrCellColumns "line comment"
-  233                    | . variable
-  234                    | . functionCall
-  235                    | . "line comment"
+  233                    | . matrixOrCellColumns matrixOrCellColumnsBreak "line comment"
+  234                    | . variable
+  235                    | . functionCall
+  236                    | . "line comment"
 
     "%t or %T"      shift, and go to state 3
     "%f or %F"      shift, and go to state 4
@@ -4378,9 +4384,10 @@ State 69
   230                    | matrixOrCellColumns . variable
   231                    | matrixOrCellColumns . functionCall
   232                    | matrixOrCellColumns . "line comment"
-  236 matrixOrCellColumnsBreak: . matrixOrCellColumnsBreak ","
-  237                         | . ","
-  255 multipleResults: "[" matrixOrCellColumns . "]"
+  233                    | matrixOrCellColumns . matrixOrCellColumnsBreak "line comment"
+  237 matrixOrCellColumnsBreak: . matrixOrCellColumnsBreak ","
+  238                         | . ","
+  256 multipleResults: "[" matrixOrCellColumns . "]"
 
     "end of line"   shift, and go to state 180
     "%t or %T"      shift, and go to state 3
@@ -4495,9 +4502,10 @@ State 70
   230                    | . matrixOrCellColumns variable
   231                    | . matrixOrCellColumns functionCall
   232                    | . matrixOrCellColumns "line comment"
-  233                    | . variable
-  234                    | . functionCall
-  235                    | . "line comment"
+  233                    | . matrixOrCellColumns matrixOrCellColumnsBreak "line comment"
+  234                    | . variable
+  235                    | . functionCall
+  236                    | . "line comment"
 
     "%t or %T"      shift, and go to state 3
     "%f or %F"      shift, and go to state 4
@@ -4614,9 +4622,10 @@ State 72
   230                    | . matrixOrCellColumns variable
   231                    | . matrixOrCellColumns functionCall
   232                    | . matrixOrCellColumns "line comment"
-  233                    | . variable
-  234                    | . functionCall
-  235                    | . "line comment"
+  233                    | . matrixOrCellColumns matrixOrCellColumnsBreak "line comment"
+  234                    | . variable
+  235                    | . functionCall
+  236                    | . "line comment"
 
     "%t or %T"      shift, and go to state 3
     "%f or %F"      shift, and go to state 4
@@ -4727,8 +4736,9 @@ State 73
   230                    | matrixOrCellColumns . variable
   231                    | matrixOrCellColumns . functionCall
   232                    | matrixOrCellColumns . "line comment"
-  236 matrixOrCellColumnsBreak: . matrixOrCellColumnsBreak ","
-  237                         | . ","
+  233                    | matrixOrCellColumns . matrixOrCellColumnsBreak "line comment"
+  237 matrixOrCellColumnsBreak: . matrixOrCellColumnsBreak ","
+  238                         | . ","
 
     "end of line"   shift, and go to state 180
     "%t or %T"      shift, and go to state 3
@@ -5416,27 +5426,27 @@ State 78
 
 State 79
 
-  256 ifControl: "if" condition . then thenBody "end"
-  257          | "if" condition . then thenBody else elseBody "end"
-  258          | "if" condition . then thenBody elseIfControl "end"
-  263 ifConditionBreak: . ";"
-  264                 | . ";" "end of line"
-  265                 | . ","
-  266                 | . "," "end of line"
-  267                 | . "end of line"
-  268 then: . "then"
-  269     | . ifConditionBreak "then"
-  270     | . ifConditionBreak "then" "end of line"
-  271     | . "then" ifConditionBreak
-  272     | . ifConditionBreak
-  273     | . %empty  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "else", "elseif", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
+  257 ifControl: "if" condition . then thenBody "end"
+  258          | "if" condition . then thenBody else elseBody "end"
+  259          | "if" condition . then thenBody elseIfControl "end"
+  264 ifConditionBreak: . ";"
+  265                 | . ";" "end of line"
+  266                 | . ","
+  267                 | . "," "end of line"
+  268                 | . "end of line"
+  269 then: . "then"
+  270     | . ifConditionBreak "then"
+  271     | . ifConditionBreak "then" "end of line"
+  272     | . "then" ifConditionBreak
+  273     | . ifConditionBreak
+  274     | . %empty  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "else", "elseif", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
 
     "end of line"  shift, and go to state 195
     ","            shift, and go to state 196
     ";"            shift, and go to state 197
     "then"         shift, and go to state 198
 
-    $default  reduce using rule 273 (then)
+    $default  reduce using rule 274 (then)
 
     ifConditionBreak  go to state 199
     then              go to state 200
@@ -5603,39 +5613,39 @@ State 82
 
 State 83
 
-  324 forControl: "for" "(" . "identifier" "=" forIterator ")" forConditionBreak forBody "end"
+  325 forControl: "for" "(" . "identifier" "=" forIterator ")" forConditionBreak forBody "end"
 
     "identifier"  shift, and go to state 208
 
 
 State 84
 
-  323 forControl: "for" "identifier" . "=" forIterator forConditionBreak forBody "end"
+  324 forControl: "for" "identifier" . "=" forIterator forConditionBreak forBody "end"
 
     "="  shift, and go to state 209
 
 
 State 85
 
-  337 whileControl: "while" condition . whileConditionBreak whileBody "end"
-  340 whileConditionBreak: . ","
-  341                    | . ";"
-  342                    | . "do"
-  343                    | . "do" ","
-  344                    | . "do" ";"
-  345                    | . "then"
-  346                    | . "then" ","
-  347                    | . "then" ";"
-  348                    | . "line comment" "end of line"
-  349                    | . "end of line"
-  350                    | . "," "end of line"
-  351                    | . ";" "end of line"
-  352                    | . "do" "end of line"
-  353                    | . "do" "," "end of line"
-  354                    | . "do" ";" "end of line"
-  355                    | . "then" "end of line"
-  356                    | . "then" "," "end of line"
-  357                    | . "then" ";" "end of line"
+  338 whileControl: "while" condition . whileConditionBreak whileBody "end"
+  341 whileConditionBreak: . ","
+  342                    | . ";"
+  343                    | . "do"
+  344                    | . "do" ","
+  345                    | . "do" ";"
+  346                    | . "then"
+  347                    | . "then" ","
+  348                    | . "then" ";"
+  349                    | . "line comment" "end of line"
+  350                    | . "end of line"
+  351                    | . "," "end of line"
+  352                    | . ";" "end of line"
+  353                    | . "do" "end of line"
+  354                    | . "do" "," "end of line"
+  355                    | . "do" ";" "end of line"
+  356                    | . "then" "end of line"
+  357                    | . "then" "," "end of line"
+  358                    | . "then" ";" "end of line"
 
     "end of line"   shift, and go to state 210
     ","             shift, and go to state 211
@@ -5750,43 +5760,43 @@ State 86
   217       | . "[" "end of line" matrixOrCellColumns "]"
   218       | . "[" "end of line" "]"
   219       | . "[" "]"
-  238 variableDeclaration: . assignable "=" variable
-  239                    | . assignable "=" functionCall
-  240                    | . functionCall "=" variable
-  241                    | . functionCall "=" functionCall
-  242                    | . assignable "=" ":"
-  243                    | . functionCall "=" ":"
-  244                    | . assignable "=" returnControl
-  245                    | . functionCall "=" returnControl
-  246 assignable: . variable "." "identifier"
-  247           | . variable "." keywords
-  248           | . variable "." functionCall
-  249           | . functionCall "." "identifier"
-  250           | . functionCall "." keywords
-  251           | . "identifier"
-  252           | . multipleResults
-  253           | . variable "(" functionArgs ")"
-  254           | . functionCall "(" functionArgs ")"
-  255 multipleResults: . "[" matrixOrCellColumns "]"
-  256 ifControl: . "if" condition then thenBody "end"
-  257          | . "if" condition then thenBody else elseBody "end"
-  258          | . "if" condition then thenBody elseIfControl "end"
-  283 selectControl: . select selectable selectConditionBreak casesControl "end"
-  284              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
-  285              | . select selectable "line comment" selectConditionBreak casesControl "end"
-  286              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
-  287 select: . "select"
-  288       | . "switch"
-  323 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
-  324           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
-  337 whileControl: . "while" condition whileConditionBreak whileBody "end"
-  358 tryControl: . "try" catchBody "catch" catchBody "end"
-  359           | . "try" catchBody "end"
-  361 catchBody: "end of line" . expressions
-  364          | "end of line" .  ["end", "catch"]
-  366 returnControl: . "return"
-  367              | . "return" variable
-  368              | . "return" functionCall
+  239 variableDeclaration: . assignable "=" variable
+  240                    | . assignable "=" functionCall
+  241                    | . functionCall "=" variable
+  242                    | . functionCall "=" functionCall
+  243                    | . assignable "=" ":"
+  244                    | . functionCall "=" ":"
+  245                    | . assignable "=" returnControl
+  246                    | . functionCall "=" returnControl
+  247 assignable: . variable "." "identifier"
+  248           | . variable "." keywords
+  249           | . variable "." functionCall
+  250           | . functionCall "." "identifier"
+  251           | . functionCall "." keywords
+  252           | . "identifier"
+  253           | . multipleResults
+  254           | . variable "(" functionArgs ")"
+  255           | . functionCall "(" functionArgs ")"
+  256 multipleResults: . "[" matrixOrCellColumns "]"
+  257 ifControl: . "if" condition then thenBody "end"
+  258          | . "if" condition then thenBody else elseBody "end"
+  259          | . "if" condition then thenBody elseIfControl "end"
+  284 selectControl: . select selectable selectConditionBreak casesControl "end"
+  285              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
+  286              | . select selectable "line comment" selectConditionBreak casesControl "end"
+  287              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
+  288 select: . "select"
+  289       | . "switch"
+  324 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
+  325           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
+  338 whileControl: . "while" condition whileConditionBreak whileBody "end"
+  359 tryControl: . "try" catchBody "catch" catchBody "end"
+  360           | . "try" catchBody "end"
+  362 catchBody: "end of line" . expressions
+  365          | "end of line" .  ["end", "catch"]
+  367 returnControl: . "return"
+  368              | . "return" variable
+  369              | . "return" functionCall
 
     error           shift, and go to state 1
     "%t or %T"      shift, and go to state 3
@@ -5815,8 +5825,8 @@ State 86
     "number"        shift, and go to state 28
     "line comment"  shift, and go to state 29
 
-    "end"    reduce using rule 364 (catchBody)
-    "catch"  reduce using rule 364 (catchBody)
+    "end"    reduce using rule 365 (catchBody)
+    "catch"  reduce using rule 365 (catchBody)
 
     expressions           go to state 217
     recursiveExpression   go to state 32
@@ -5945,42 +5955,42 @@ State 87
   217       | . "[" "end of line" matrixOrCellColumns "]"
   218       | . "[" "end of line" "]"
   219       | . "[" "]"
-  238 variableDeclaration: . assignable "=" variable
-  239                    | . assignable "=" functionCall
-  240                    | . functionCall "=" variable
-  241                    | . functionCall "=" functionCall
-  242                    | . assignable "=" ":"
-  243                    | . functionCall "=" ":"
-  244                    | . assignable "=" returnControl
-  245                    | . functionCall "=" returnControl
-  246 assignable: . variable "." "identifier"
-  247           | . variable "." keywords
-  248           | . variable "." functionCall
-  249           | . functionCall "." "identifier"
-  250           | . functionCall "." keywords
-  251           | . "identifier"
-  252           | . multipleResults
-  253           | . variable "(" functionArgs ")"
-  254           | . functionCall "(" functionArgs ")"
-  255 multipleResults: . "[" matrixOrCellColumns "]"
-  256 ifControl: . "if" condition then thenBody "end"
-  257          | . "if" condition then thenBody else elseBody "end"
-  258          | . "if" condition then thenBody elseIfControl "end"
-  283 selectControl: . select selectable selectConditionBreak casesControl "end"
-  284              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
-  285              | . select selectable "line comment" selectConditionBreak casesControl "end"
-  286              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
-  287 select: . "select"
-  288       | . "switch"
-  323 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
-  324           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
-  337 whileControl: . "while" condition whileConditionBreak whileBody "end"
-  358 tryControl: . "try" catchBody "catch" catchBody "end"
-  359           | . "try" catchBody "end"
-  363 catchBody: "," . expressions
-  366 returnControl: . "return"
-  367              | . "return" variable
-  368              | . "return" functionCall
+  239 variableDeclaration: . assignable "=" variable
+  240                    | . assignable "=" functionCall
+  241                    | . functionCall "=" variable
+  242                    | . functionCall "=" functionCall
+  243                    | . assignable "=" ":"
+  244                    | . functionCall "=" ":"
+  245                    | . assignable "=" returnControl
+  246                    | . functionCall "=" returnControl
+  247 assignable: . variable "." "identifier"
+  248           | . variable "." keywords
+  249           | . variable "." functionCall
+  250           | . functionCall "." "identifier"
+  251           | . functionCall "." keywords
+  252           | . "identifier"
+  253           | . multipleResults
+  254           | . variable "(" functionArgs ")"
+  255           | . functionCall "(" functionArgs ")"
+  256 multipleResults: . "[" matrixOrCellColumns "]"
+  257 ifControl: . "if" condition then thenBody "end"
+  258          | . "if" condition then thenBody else elseBody "end"
+  259          | . "if" condition then thenBody elseIfControl "end"
+  284 selectControl: . select selectable selectConditionBreak casesControl "end"
+  285              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
+  286              | . select selectable "line comment" selectConditionBreak casesControl "end"
+  287              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
+  288 select: . "select"
+  289       | . "switch"
+  324 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
+  325           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
+  338 whileControl: . "while" condition whileConditionBreak whileBody "end"
+  359 tryControl: . "try" catchBody "catch" catchBody "end"
+  360           | . "try" catchBody "end"
+  364 catchBody: "," . expressions
+  367 returnControl: . "return"
+  368              | . "return" variable
+  369              | . "return" functionCall
 
     error           shift, and go to state 1
     "%t or %T"      shift, and go to state 3
@@ -6136,42 +6146,42 @@ State 88
   217       | . "[" "end of line" matrixOrCellColumns "]"
   218       | . "[" "end of line" "]"
   219       | . "[" "]"
-  238 variableDeclaration: . assignable "=" variable
-  239                    | . assignable "=" functionCall
-  240                    | . functionCall "=" variable
-  241                    | . functionCall "=" functionCall
-  242                    | . assignable "=" ":"
-  243                    | . functionCall "=" ":"
-  244                    | . assignable "=" returnControl
-  245                    | . functionCall "=" returnControl
-  246 assignable: . variable "." "identifier"
-  247           | . variable "." keywords
-  248           | . variable "." functionCall
-  249           | . functionCall "." "identifier"
-  250           | . functionCall "." keywords
-  251           | . "identifier"
-  252           | . multipleResults
-  253           | . variable "(" functionArgs ")"
-  254           | . functionCall "(" functionArgs ")"
-  255 multipleResults: . "[" matrixOrCellColumns "]"
-  256 ifControl: . "if" condition then thenBody "end"
-  257          | . "if" condition then thenBody else elseBody "end"
-  258          | . "if" condition then thenBody elseIfControl "end"
-  283 selectControl: . select selectable selectConditionBreak casesControl "end"
-  284              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
-  285              | . select selectable "line comment" selectConditionBreak casesControl "end"
-  286              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
-  287 select: . "select"
-  288       | . "switch"
-  323 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
-  324           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
-  337 whileControl: . "while" condition whileConditionBreak whileBody "end"
-  358 tryControl: . "try" catchBody "catch" catchBody "end"
-  359           | . "try" catchBody "end"
-  362 catchBody: ";" . expressions
-  366 returnControl: . "return"
-  367              | . "return" variable
-  368              | . "return" functionCall
+  239 variableDeclaration: . assignable "=" variable
+  240                    | . assignable "=" functionCall
+  241                    | . functionCall "=" variable
+  242                    | . functionCall "=" functionCall
+  243                    | . assignable "=" ":"
+  244                    | . functionCall "=" ":"
+  245                    | . assignable "=" returnControl
+  246                    | . functionCall "=" returnControl
+  247 assignable: . variable "." "identifier"
+  248           | . variable "." keywords
+  249           | . variable "." functionCall
+  250           | . functionCall "." "identifier"
+  251           | . functionCall "." keywords
+  252           | . "identifier"
+  253           | . multipleResults
+  254           | . variable "(" functionArgs ")"
+  255           | . functionCall "(" functionArgs ")"
+  256 multipleResults: . "[" matrixOrCellColumns "]"
+  257 ifControl: . "if" condition then thenBody "end"
+  258          | . "if" condition then thenBody else elseBody "end"
+  259          | . "if" condition then thenBody elseIfControl "end"
+  284 selectControl: . select selectable selectConditionBreak casesControl "end"
+  285              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
+  286              | . select selectable "line comment" selectConditionBreak casesControl "end"
+  287              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
+  288 select: . "select"
+  289       | . "switch"
+  324 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
+  325           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
+  338 whileControl: . "while" condition whileConditionBreak whileBody "end"
+  359 tryControl: . "try" catchBody "catch" catchBody "end"
+  360           | . "try" catchBody "end"
+  363 catchBody: ";" . expressions
+  367 returnControl: . "return"
+  368              | . "return" variable
+  369              | . "return" functionCall
 
     error           shift, and go to state 1
     "%t or %T"      shift, and go to state 3
@@ -6226,15 +6236,15 @@ State 88
 
 State 89
 
-  360 catchBody: expressions .
+  361 catchBody: expressions .
 
-    $default  reduce using rule 360 (catchBody)
+    $default  reduce using rule 361 (catchBody)
 
 
 State 90
 
-  358 tryControl: "try" catchBody . "catch" catchBody "end"
-  359           | "try" catchBody . "end"
+  359 tryControl: "try" catchBody . "catch" catchBody "end"
+  360           | "try" catchBody . "end"
 
     "end"    shift, and go to state 220
     "catch"  shift, and go to state 221
@@ -6317,7 +6327,7 @@ State 91
   179         | functionCall . "." keywords
   181         | functionCall . listableEnd
   197         | functionCall . "(" functionArgs ")"
-  368 returnControl: "return" functionCall .  ["end of file", "end of line", ",", ";", ")", "}", "else", "elseif", "end", "case", "otherwise", "endfunction", "catch", "line comment"]
+  369 returnControl: "return" functionCall .  ["end of file", "end of line", ",", ";", ")", "}", "else", "elseif", "end", "case", "otherwise", "endfunction", "catch", "line comment"]
 
     "'"         shift, and go to state 114
     ":"         shift, and go to state 115
@@ -6351,7 +6361,7 @@ State 91
     "|"         shift, and go to state 143
     "||"        shift, and go to state 144
 
-    $default  reduce using rule 368 (returnControl)
+    $default  reduce using rule 369 (returnControl)
 
     rightComparable  go to state 146
     rightOperand     go to state 147
@@ -6437,7 +6447,7 @@ State 92
   177         | variable . "." functionCall
   180         | variable . listableEnd
   196         | variable . "(" functionArgs ")"
-  367 returnControl: "return" variable .  ["end of file", "end of line", ",", ";", ")", "}", "else", "elseif", "end", "case", "otherwise", "endfunction", "catch", "line comment"]
+  368 returnControl: "return" variable .  ["end of file", "end of line", ",", ";", ")", "}", "else", "elseif", "end", "case", "otherwise", "endfunction", "catch", "line comment"]
 
     "'"         shift, and go to state 150
     ":"         shift, and go to state 115
@@ -6471,7 +6481,7 @@ State 92
     "|"         shift, and go to state 143
     "||"        shift, and go to state 144
 
-    $default  reduce using rule 367 (returnControl)
+    $default  reduce using rule 368 (returnControl)
 
     rightComparable  go to state 156
     rightOperand     go to state 157
@@ -6585,24 +6595,24 @@ State 96
   217       | . "[" "end of line" matrixOrCellColumns "]"
   218       | . "[" "end of line" "]"
   219       | . "[" "]"
-  238 variableDeclaration: . assignable "=" variable
-  239                    | . assignable "=" functionCall
-  240                    | . functionCall "=" variable
-  241                    | . functionCall "=" functionCall
-  242                    | . assignable "=" ":"
-  243                    | . functionCall "=" ":"
-  244                    | . assignable "=" returnControl
-  245                    | . functionCall "=" returnControl
-  246 assignable: . variable "." "identifier"
-  247           | . variable "." keywords
-  248           | . variable "." functionCall
-  249           | . functionCall "." "identifier"
-  250           | . functionCall "." keywords
-  251           | . "identifier"
-  252           | . multipleResults
-  253           | . variable "(" functionArgs ")"
-  254           | . functionCall "(" functionArgs ")"
-  255 multipleResults: . "[" matrixOrCellColumns "]"
+  239 variableDeclaration: . assignable "=" variable
+  240                    | . assignable "=" functionCall
+  241                    | . functionCall "=" variable
+  242                    | . functionCall "=" functionCall
+  243                    | . assignable "=" ":"
+  244                    | . functionCall "=" ":"
+  245                    | . assignable "=" returnControl
+  246                    | . functionCall "=" returnControl
+  247 assignable: . variable "." "identifier"
+  248           | . variable "." keywords
+  249           | . variable "." functionCall
+  250           | . functionCall "." "identifier"
+  251           | . functionCall "." keywords
+  252           | . "identifier"
+  253           | . multipleResults
+  254           | . variable "(" functionArgs ")"
+  255           | . functionCall "(" functionArgs ")"
+  256 multipleResults: . "[" matrixOrCellColumns "]"
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -6720,24 +6730,24 @@ State 97
   217       | . "[" "end of line" matrixOrCellColumns "]"
   218       | . "[" "end of line" "]"
   219       | . "[" "]"
-  238 variableDeclaration: . assignable "=" variable
-  239                    | . assignable "=" functionCall
-  240                    | . functionCall "=" variable
-  241                    | . functionCall "=" functionCall
-  242                    | . assignable "=" ":"
-  243                    | . functionCall "=" ":"
-  244                    | . assignable "=" returnControl
-  245                    | . functionCall "=" returnControl
-  246 assignable: . variable "." "identifier"
-  247           | . variable "." keywords
-  248           | . variable "." functionCall
-  249           | . functionCall "." "identifier"
-  250           | . functionCall "." keywords
-  251           | . "identifier"
-  252           | . multipleResults
-  253           | . variable "(" functionArgs ")"
-  254           | . functionCall "(" functionArgs ")"
-  255 multipleResults: . "[" matrixOrCellColumns "]"
+  239 variableDeclaration: . assignable "=" variable
+  240                    | . assignable "=" functionCall
+  241                    | . functionCall "=" variable
+  242                    | . functionCall "=" functionCall
+  243                    | . assignable "=" ":"
+  244                    | . functionCall "=" ":"
+  245                    | . assignable "=" returnControl
+  246                    | . functionCall "=" returnControl
+  247 assignable: . variable "." "identifier"
+  248           | . variable "." keywords
+  249           | . variable "." functionCall
+  250           | . functionCall "." "identifier"
+  251           | . functionCall "." keywords
+  252           | . "identifier"
+  253           | . multipleResults
+  254           | . variable "(" functionArgs ")"
+  255           | . functionCall "(" functionArgs ")"
+  256 multipleResults: . "[" matrixOrCellColumns "]"
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -7111,25 +7121,25 @@ State 116
   217       | . "[" "end of line" matrixOrCellColumns "]"
   218       | . "[" "end of line" "]"
   219       | . "[" "]"
-  238 variableDeclaration: . assignable "=" variable
-  239                    | . assignable "=" functionCall
-  240                    | . functionCall "=" variable
-  241                    | . functionCall "=" functionCall
-  242                    | . assignable "=" ":"
-  243                    | . functionCall "=" ":"
-  244                    | . assignable "=" returnControl
-  245                    | . functionCall "=" returnControl
-  246 assignable: . variable "." "identifier"
-  247           | . variable "." keywords
-  248           | . variable "." functionCall
-  249           | . functionCall "." "identifier"
-  250           | . functionCall "." keywords
-  251           | . "identifier"
-  252           | . multipleResults
-  253           | . variable "(" functionArgs ")"
-  254           | . functionCall "(" functionArgs ")"
-  254           | functionCall "(" . functionArgs ")"
-  255 multipleResults: . "[" matrixOrCellColumns "]"
+  239 variableDeclaration: . assignable "=" variable
+  240                    | . assignable "=" functionCall
+  241                    | . functionCall "=" variable
+  242                    | . functionCall "=" functionCall
+  243                    | . assignable "=" ":"
+  244                    | . functionCall "=" ":"
+  245                    | . assignable "=" returnControl
+  246                    | . functionCall "=" returnControl
+  247 assignable: . variable "." "identifier"
+  248           | . variable "." keywords
+  249           | . variable "." functionCall
+  250           | . functionCall "." "identifier"
+  251           | . functionCall "." keywords
+  252           | . "identifier"
+  253           | . multipleResults
+  254           | . variable "(" functionArgs ")"
+  255           | . functionCall "(" functionArgs ")"
+  255           | functionCall "(" . functionArgs ")"
+  256 multipleResults: . "[" matrixOrCellColumns "]"
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -7165,26 +7175,26 @@ State 117
 
   178 variable: functionCall "." . "identifier"
   179         | functionCall "." . keywords
-  249 assignable: functionCall "." . "identifier"
-  250           | functionCall "." . keywords
-  373 keywords: . "if"
-  374         | . "then"
-  375         | . "else"
-  376         | . "elseif"
-  377         | . "end"
-  378         | . "select"
-  379         | . "switch"
-  380         | . "otherwise"
-  381         | . "case"
-  382         | . "function"
-  383         | . "endfunction"
-  384         | . "for"
-  385         | . "while"
-  386         | . "do"
-  387         | . "break"
-  388         | . "try"
-  389         | . "catch"
-  390         | . "return"
+  250 assignable: functionCall "." . "identifier"
+  251           | functionCall "." . keywords
+  374 keywords: . "if"
+  375         | . "then"
+  376         | . "else"
+  377         | . "elseif"
+  378         | . "end"
+  379         | . "select"
+  380         | . "switch"
+  381         | . "otherwise"
+  382         | . "case"
+  383         | . "function"
+  384         | . "endfunction"
+  385         | . "for"
+  386         | . "while"
+  387         | . "do"
+  388         | . "break"
+  389         | . "try"
+  390         | . "catch"
+  391         | . "return"
 
     "if"           shift, and go to state 239
     "then"         shift, and go to state 240
@@ -9801,13 +9811,13 @@ State 145
   217       | . "[" "end of line" matrixOrCellColumns "]"
   218       | . "[" "end of line" "]"
   219       | . "[" "]"
-  240 variableDeclaration: functionCall "=" . variable
-  241                    | functionCall "=" . functionCall
-  243                    | functionCall "=" . ":"
-  245                    | functionCall "=" . returnControl
-  366 returnControl: . "return"
-  367              | . "return" variable
-  368              | . "return" functionCall
+  241 variableDeclaration: functionCall "=" . variable
+  242                    | functionCall "=" . functionCall
+  244                    | functionCall "=" . ":"
+  246                    | functionCall "=" . returnControl
+  367 returnControl: . "return"
+  368              | . "return" variable
+  369              | . "return" functionCall
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -9961,25 +9971,25 @@ State 151
   217       | . "[" "end of line" matrixOrCellColumns "]"
   218       | . "[" "end of line" "]"
   219       | . "[" "]"
-  238 variableDeclaration: . assignable "=" variable
-  239                    | . assignable "=" functionCall
-  240                    | . functionCall "=" variable
-  241                    | . functionCall "=" functionCall
-  242                    | . assignable "=" ":"
-  243                    | . functionCall "=" ":"
-  244                    | . assignable "=" returnControl
-  245                    | . functionCall "=" returnControl
-  246 assignable: . variable "." "identifier"
-  247           | . variable "." keywords
-  248           | . variable "." functionCall
-  249           | . functionCall "." "identifier"
-  250           | . functionCall "." keywords
-  251           | . "identifier"
-  252           | . multipleResults
-  253           | . variable "(" functionArgs ")"
-  253           | variable "(" . functionArgs ")"
-  254           | . functionCall "(" functionArgs ")"
-  255 multipleResults: . "[" matrixOrCellColumns "]"
+  239 variableDeclaration: . assignable "=" variable
+  240                    | . assignable "=" functionCall
+  241                    | . functionCall "=" variable
+  242                    | . functionCall "=" functionCall
+  243                    | . assignable "=" ":"
+  244                    | . functionCall "=" ":"
+  245                    | . assignable "=" returnControl
+  246                    | . functionCall "=" returnControl
+  247 assignable: . variable "." "identifier"
+  248           | . variable "." keywords
+  249           | . variable "." functionCall
+  250           | . functionCall "." "identifier"
+  251           | . functionCall "." keywords
+  252           | . "identifier"
+  253           | . multipleResults
+  254           | . variable "(" functionArgs ")"
+  254           | variable "(" . functionArgs ")"
+  255           | . functionCall "(" functionArgs ")"
+  256 multipleResults: . "[" matrixOrCellColumns "]"
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -10022,27 +10032,27 @@ State 152
   175 variable: variable "." . "identifier"
   176         | variable "." . keywords
   177         | variable "." . functionCall
-  246 assignable: variable "." . "identifier"
-  247           | variable "." . keywords
-  248           | variable "." . functionCall
-  373 keywords: . "if"
-  374         | . "then"
-  375         | . "else"
-  376         | . "elseif"
-  377         | . "end"
-  378         | . "select"
-  379         | . "switch"
-  380         | . "otherwise"
-  381         | . "case"
-  382         | . "function"
-  383         | . "endfunction"
-  384         | . "for"
-  385         | . "while"
-  386         | . "do"
-  387         | . "break"
-  388         | . "try"
-  389         | . "catch"
-  390         | . "return"
+  247 assignable: variable "." . "identifier"
+  248           | variable "." . keywords
+  249           | variable "." . functionCall
+  374 keywords: . "if"
+  375         | . "then"
+  376         | . "else"
+  377         | . "elseif"
+  378         | . "end"
+  379         | . "select"
+  380         | . "switch"
+  381         | . "otherwise"
+  382         | . "case"
+  383         | . "function"
+  384         | . "endfunction"
+  385         | . "for"
+  386         | . "while"
+  387         | . "do"
+  388         | . "break"
+  389         | . "try"
+  390         | . "catch"
+  391         | . "return"
 
     "("            shift, and go to state 327
     "if"           shift, and go to state 239
@@ -10359,13 +10369,13 @@ State 159
   217       | . "[" "end of line" matrixOrCellColumns "]"
   218       | . "[" "end of line" "]"
   219       | . "[" "]"
-  238 variableDeclaration: assignable "=" . variable
-  239                    | assignable "=" . functionCall
-  242                    | assignable "=" . ":"
-  244                    | assignable "=" . returnControl
-  366 returnControl: . "return"
-  367              | . "return" variable
-  368              | . "return" functionCall
+  239 variableDeclaration: assignable "=" . variable
+  240                    | assignable "=" . functionCall
+  243                    | assignable "=" . ":"
+  245                    | assignable "=" . returnControl
+  367 returnControl: . "return"
+  368              | . "return" variable
+  369              | . "return" functionCall
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -10471,7 +10481,7 @@ State 160
   179         | functionCall . "." keywords
   181         | functionCall . listableEnd
   197         | functionCall . "(" functionArgs ")"
-  297 selectable: functionCall .  ["end of line", ",", ";", "line comment"]
+  298 selectable: functionCall .  ["end of line", ",", ";", "line comment"]
 
     "'"         shift, and go to state 114
     ":"         shift, and go to state 115
@@ -10505,7 +10515,7 @@ State 160
     "|"         shift, and go to state 143
     "||"        shift, and go to state 144
 
-    $default  reduce using rule 297 (selectable)
+    $default  reduce using rule 298 (selectable)
 
     rightComparable  go to state 146
     rightOperand     go to state 147
@@ -10591,7 +10601,7 @@ State 161
   177         | variable . "." functionCall
   180         | variable . listableEnd
   196         | variable . "(" functionArgs ")"
-  296 selectable: variable .  ["end of line", ",", ";", "line comment"]
+  297 selectable: variable .  ["end of line", ",", ";", "line comment"]
 
     "'"         shift, and go to state 150
     ":"         shift, and go to state 115
@@ -10625,7 +10635,7 @@ State 161
     "|"         shift, and go to state 143
     "||"        shift, and go to state 144
 
-    $default  reduce using rule 296 (selectable)
+    $default  reduce using rule 297 (selectable)
 
     rightComparable  go to state 156
     rightOperand     go to state 157
@@ -10635,15 +10645,15 @@ State 161
 
 State 162
 
-  283 selectControl: select selectable . selectConditionBreak casesControl "end"
-  284              | select selectable . selectConditionBreak casesControl defaultCase elseBody "end"
-  285              | select selectable . "line comment" selectConditionBreak casesControl "end"
-  286              | select selectable . "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
-  298 selectConditionBreak: . "end of line"
-  299                     | . "," "end of line"
-  300                     | . ";" "end of line"
-  301                     | . ","
-  302                     | . ";"
+  284 selectControl: select selectable . selectConditionBreak casesControl "end"
+  285              | select selectable . selectConditionBreak casesControl defaultCase elseBody "end"
+  286              | select selectable . "line comment" selectConditionBreak casesControl "end"
+  287              | select selectable . "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
+  299 selectConditionBreak: . "end of line"
+  300                     | . "," "end of line"
+  301                     | . ";" "end of line"
+  302                     | . ","
+  303                     | . ";"
 
     "end of line"   shift, and go to state 339
     ","             shift, and go to state 340
@@ -10734,8 +10744,9 @@ State 163
   230                    | matrixOrCellColumns . variable
   231                    | matrixOrCellColumns . functionCall
   232                    | matrixOrCellColumns . "line comment"
-  236 matrixOrCellColumnsBreak: . matrixOrCellColumnsBreak ","
-  237                         | . ","
+  233                    | matrixOrCellColumns . matrixOrCellColumnsBreak "line comment"
+  237 matrixOrCellColumnsBreak: . matrixOrCellColumnsBreak ","
+  238                         | . ","
 
     "end of line"   shift, and go to state 180
     "%t or %T"      shift, and go to state 3
@@ -10852,24 +10863,24 @@ State 164
   217       | . "[" "end of line" matrixOrCellColumns "]"
   218       | . "[" "end of line" "]"
   219       | . "[" "]"
-  238 variableDeclaration: . assignable "=" variable
-  239                    | . assignable "=" functionCall
-  240                    | . functionCall "=" variable
-  241                    | . functionCall "=" functionCall
-  242                    | . assignable "=" ":"
-  243                    | . functionCall "=" ":"
-  244                    | . assignable "=" returnControl
-  245                    | . functionCall "=" returnControl
-  246 assignable: . variable "." "identifier"
-  247           | . variable "." keywords
-  248           | . variable "." functionCall
-  249           | . functionCall "." "identifier"
-  250           | . functionCall "." keywords
-  251           | . "identifier"
-  252           | . multipleResults
-  253           | . variable "(" functionArgs ")"
-  254           | . functionCall "(" functionArgs ")"
-  255 multipleResults: . "[" matrixOrCellColumns "]"
+  239 variableDeclaration: . assignable "=" variable
+  240                    | . assignable "=" functionCall
+  241                    | . functionCall "=" variable
+  242                    | . functionCall "=" functionCall
+  243                    | . assignable "=" ":"
+  244                    | . functionCall "=" ":"
+  245                    | . assignable "=" returnControl
+  246                    | . functionCall "=" returnControl
+  247 assignable: . variable "." "identifier"
+  248           | . variable "." keywords
+  249           | . variable "." functionCall
+  250           | . functionCall "." "identifier"
+  251           | . functionCall "." keywords
+  252           | . "identifier"
+  253           | . multipleResults
+  254           | . variable "(" functionArgs ")"
+  255           | . functionCall "(" functionArgs ")"
+  256 multipleResults: . "[" matrixOrCellColumns "]"
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -10905,24 +10916,24 @@ State 165
 
   178 variable: functionCall "." . "identifier"
   179         | functionCall "." . keywords
-  373 keywords: . "if"
-  374         | . "then"
-  375         | . "else"
-  376         | . "elseif"
-  377         | . "end"
-  378         | . "select"
-  379         | . "switch"
-  380         | . "otherwise"
-  381         | . "case"
-  382         | . "function"
-  383         | . "endfunction"
-  384         | . "for"
-  385         | . "while"
-  386         | . "do"
-  387         | . "break"
-  388         | . "try"
-  389         | . "catch"
-  390         | . "return"
+  374 keywords: . "if"
+  375         | . "then"
+  376         | . "else"
+  377         | . "elseif"
+  378         | . "end"
+  379         | . "select"
+  380         | . "switch"
+  381         | . "otherwise"
+  382         | . "case"
+  383         | . "function"
+  384         | . "endfunction"
+  385         | . "for"
+  386         | . "while"
+  387         | . "do"
+  388         | . "break"
+  389         | . "try"
+  390         | . "catch"
+  391         | . "return"
 
     "if"           shift, and go to state 239
     "then"         shift, and go to state 240
@@ -11031,24 +11042,24 @@ State 166
   217       | . "[" "end of line" matrixOrCellColumns "]"
   218       | . "[" "end of line" "]"
   219       | . "[" "]"
-  238 variableDeclaration: . assignable "=" variable
-  239                    | . assignable "=" functionCall
-  240                    | . functionCall "=" variable
-  241                    | . functionCall "=" functionCall
-  242                    | . assignable "=" ":"
-  243                    | . functionCall "=" ":"
-  244                    | . assignable "=" returnControl
-  245                    | . functionCall "=" returnControl
-  246 assignable: . variable "." "identifier"
-  247           | . variable "." keywords
-  248           | . variable "." functionCall
-  249           | . functionCall "." "identifier"
-  250           | . functionCall "." keywords
-  251           | . "identifier"
-  252           | . multipleResults
-  253           | . variable "(" functionArgs ")"
-  254           | . functionCall "(" functionArgs ")"
-  255 multipleResults: . "[" matrixOrCellColumns "]"
+  239 variableDeclaration: . assignable "=" variable
+  240                    | . assignable "=" functionCall
+  241                    | . functionCall "=" variable
+  242                    | . functionCall "=" functionCall
+  243                    | . assignable "=" ":"
+  244                    | . functionCall "=" ":"
+  245                    | . assignable "=" returnControl
+  246                    | . functionCall "=" returnControl
+  247 assignable: . variable "." "identifier"
+  248           | . variable "." keywords
+  249           | . variable "." functionCall
+  250           | . functionCall "." "identifier"
+  251           | . functionCall "." keywords
+  252           | . "identifier"
+  253           | . multipleResults
+  254           | . variable "(" functionArgs ")"
+  255           | . functionCall "(" functionArgs ")"
+  256 multipleResults: . "[" matrixOrCellColumns "]"
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -11091,24 +11102,24 @@ State 167
   175 variable: variable "." . "identifier"
   176         | variable "." . keywords
   177         | variable "." . functionCall
-  373 keywords: . "if"
-  374         | . "then"
-  375         | . "else"
-  376         | . "elseif"
-  377         | . "end"
-  378         | . "select"
-  379         | . "switch"
-  380         | . "otherwise"
-  381         | . "case"
-  382         | . "function"
-  383         | . "endfunction"
-  384         | . "for"
-  385         | . "while"
-  386         | . "do"
-  387         | . "break"
-  388         | . "try"
-  389         | . "catch"
-  390         | . "return"
+  374 keywords: . "if"
+  375         | . "then"
+  376         | . "else"
+  377         | . "elseif"
+  378         | . "end"
+  379         | . "select"
+  380         | . "switch"
+  381         | . "otherwise"
+  382         | . "case"
+  383         | . "function"
+  384         | . "endfunction"
+  385         | . "for"
+  386         | . "while"
+  387         | . "do"
+  388         | . "break"
+  389         | . "try"
+  390         | . "catch"
+  391         | . "return"
 
     "("            shift, and go to state 327
     "if"           shift, and go to state 239
@@ -11531,9 +11542,10 @@ State 175
   230                    | . matrixOrCellColumns variable
   231                    | . matrixOrCellColumns functionCall
   232                    | . matrixOrCellColumns "line comment"
-  233                    | . variable
-  234                    | . functionCall
-  235                    | . "line comment"
+  233                    | . matrixOrCellColumns matrixOrCellColumnsBreak "line comment"
+  234                    | . variable
+  235                    | . functionCall
+  236                    | . "line comment"
 
     "%t or %T"      shift, and go to state 3
     "%f or %F"      shift, and go to state 4
@@ -11644,8 +11656,9 @@ State 176
   230                    | matrixOrCellColumns . variable
   231                    | matrixOrCellColumns . functionCall
   232                    | matrixOrCellColumns . "line comment"
-  236 matrixOrCellColumnsBreak: . matrixOrCellColumnsBreak ","
-  237                         | . ","
+  233                    | matrixOrCellColumns . matrixOrCellColumnsBreak "line comment"
+  237 matrixOrCellColumnsBreak: . matrixOrCellColumnsBreak ","
+  238                         | . ","
 
     "end of line"   shift, and go to state 180
     "%t or %T"      shift, and go to state 3
@@ -11773,8 +11786,9 @@ State 179
   230                    | matrixOrCellColumns . variable
   231                    | matrixOrCellColumns . functionCall
   232                    | matrixOrCellColumns . "line comment"
-  236 matrixOrCellColumnsBreak: . matrixOrCellColumnsBreak ","
-  237                         | . ","
+  233                    | matrixOrCellColumns . matrixOrCellColumnsBreak "line comment"
+  237 matrixOrCellColumnsBreak: . matrixOrCellColumnsBreak ","
+  238                         | . ","
 
     "end of line"   shift, and go to state 180
     "%t or %T"      shift, and go to state 3
@@ -11816,9 +11830,9 @@ State 180
 
 State 181
 
-  237 matrixOrCellColumnsBreak: "," .
+  238 matrixOrCellColumnsBreak: "," .
 
-    $default  reduce using rule 237 (matrixOrCellColumnsBreak)
+    $default  reduce using rule 238 (matrixOrCellColumnsBreak)
 
 
 State 182
@@ -11831,9 +11845,9 @@ State 182
 State 183
 
   216 matrix: "[" matrixOrCellColumns "]" .  ["end of file", "end of line", "'", ",", ":", ";", "(", ")", "}", ".", ".'", "+", "-", "*", ".*", ".*.", "*.", "/", "./", "/.", "./.", "\\", ".\\", "\\.", ".\\.", "** or ^", ".^", "==", "<> or ~=", "<", "<=", ">", ">=", "&", "&&", "|", "||", "else", "elseif", "end", "case", "otherwise", "endfunction", "catch", "line comment"]
-  255 multipleResults: "[" matrixOrCellColumns "]" .  ["="]
+  256 multipleResults: "[" matrixOrCellColumns "]" .  ["="]
 
-    "="       reduce using rule 255 (multipleResults)
+    "="       reduce using rule 256 (multipleResults)
     $default  reduce using rule 216 (matrix)
 
 
@@ -12179,34 +12193,36 @@ State 188
   227 matrixOrCellLine: matrixOrCellColumns matrixOrCellColumnsBreak . matrixOrCellLineBreak
   228 matrixOrCellColumns: matrixOrCellColumns matrixOrCellColumnsBreak . variable
   229                    | matrixOrCellColumns matrixOrCellColumnsBreak . functionCall
-  236 matrixOrCellColumnsBreak: matrixOrCellColumnsBreak . ","
-
-    "end of line"  shift, and go to state 180
-    "%t or %T"     shift, and go to state 3
-    "%f or %F"     shift, and go to state 4
-    "~ or @"       shift, and go to state 5
-    "$"            shift, and go to state 6
-    ","            shift, and go to state 364
-    ";"            shift, and go to state 182
-    "("            shift, and go to state 9
-    "["            shift, and go to state 55
-    "{"            shift, and go to state 11
-    "+"            shift, and go to state 12
-    "-"            shift, and go to state 13
-    "string"       shift, and go to state 24
-    "identifier"   shift, and go to state 56
-    "integer"      shift, and go to state 26
-    "float"        shift, and go to state 27
-    "number"       shift, and go to state 28
-
-    functionCall           go to state 365
+  233                    | matrixOrCellColumns matrixOrCellColumnsBreak . "line comment"
+  237 matrixOrCellColumnsBreak: matrixOrCellColumnsBreak . ","
+
+    "end of line"   shift, and go to state 180
+    "%t or %T"      shift, and go to state 3
+    "%f or %F"      shift, and go to state 4
+    "~ or @"        shift, and go to state 5
+    "$"             shift, and go to state 6
+    ","             shift, and go to state 364
+    ";"             shift, and go to state 182
+    "("             shift, and go to state 9
+    "["             shift, and go to state 55
+    "{"             shift, and go to state 11
+    "+"             shift, and go to state 12
+    "-"             shift, and go to state 13
+    "string"        shift, and go to state 24
+    "identifier"    shift, and go to state 56
+    "integer"       shift, and go to state 26
+    "float"         shift, and go to state 27
+    "number"        shift, and go to state 28
+    "line comment"  shift, and go to state 365
+
+    functionCall           go to state 366
     simpleFunctionCall     go to state 37
     comparison             go to state 39
     operation              go to state 40
-    variable               go to state 366
+    variable               go to state 367
     cell                   go to state 42
     matrix                 go to state 43
-    matrixOrCellLineBreak  go to state 367
+    matrixOrCellLineBreak  go to state 368
 
 
 State 189
@@ -12295,9 +12311,10 @@ State 190
   230                    | . matrixOrCellColumns variable
   231                    | . matrixOrCellColumns functionCall
   232                    | . matrixOrCellColumns "line comment"
-  233                    | . variable
-  234                    | . functionCall
-  235                    | . "line comment"
+  233                    | . matrixOrCellColumns matrixOrCellColumnsBreak "line comment"
+  234                    | . variable
+  235                    | . functionCall
+  236                    | . "line comment"
 
     "%t or %T"      shift, and go to state 3
     "%f or %F"      shift, and go to state 4
@@ -12306,7 +12323,7 @@ State 190
     "("             shift, and go to state 9
     "["             shift, and go to state 55
     "{"             shift, and go to state 11
-    "}"             shift, and go to state 368
+    "}"             shift, and go to state 369
     "+"             shift, and go to state 12
     "-"             shift, and go to state 13
     "string"        shift, and go to state 24
@@ -12324,7 +12341,7 @@ State 190
     cell                 go to state 42
     matrix               go to state 43
     matrixOrCellLine     go to state 178
-    matrixOrCellColumns  go to state 369
+    matrixOrCellColumns  go to state 370
 
 
 State 191
@@ -12408,8 +12425,9 @@ State 191
   230                    | matrixOrCellColumns . variable
   231                    | matrixOrCellColumns . functionCall
   232                    | matrixOrCellColumns . "line comment"
-  236 matrixOrCellColumnsBreak: . matrixOrCellColumnsBreak ","
-  237                         | . ","
+  233                    | matrixOrCellColumns . matrixOrCellColumnsBreak "line comment"
+  237 matrixOrCellColumnsBreak: . matrixOrCellColumnsBreak ","
+  238                         | . ","
 
     "end of line"   shift, and go to state 180
     "%t or %T"      shift, and go to state 3
@@ -12421,7 +12439,7 @@ State 191
     "("             shift, and go to state 9
     "["             shift, and go to state 55
     "{"             shift, and go to state 11
-    "}"             shift, and go to state 370
+    "}"             shift, and go to state 371
     "+"             shift, and go to state 12
     "-"             shift, and go to state 13
     "string"        shift, and go to state 24
@@ -12530,8 +12548,9 @@ State 193
   230                    | matrixOrCellColumns . variable
   231                    | matrixOrCellColumns . functionCall
   232                    | matrixOrCellColumns . "line comment"
-  236 matrixOrCellColumnsBreak: . matrixOrCellColumnsBreak ","
-  237                         | . ","
+  233                    | matrixOrCellColumns . matrixOrCellColumnsBreak "line comment"
+  237 matrixOrCellColumnsBreak: . matrixOrCellColumnsBreak ","
+  238                         | . ","
 
     "end of line"   shift, and go to state 180
     "%t or %T"      shift, and go to state 3
@@ -12543,7 +12562,7 @@ State 193
     "("             shift, and go to state 9
     "["             shift, and go to state 55
     "{"             shift, and go to state 11
-    "}"             shift, and go to state 371
+    "}"             shift, and go to state 372
     "+"             shift, and go to state 12
     "-"             shift, and go to state 13
     "string"        shift, and go to state 24
@@ -12573,59 +12592,59 @@ State 194
 
 State 195
 
-  267 ifConditionBreak: "end of line" .
+  268 ifConditionBreak: "end of line" .
 
-    $default  reduce using rule 267 (ifConditionBreak)
+    $default  reduce using rule 268 (ifConditionBreak)
 
 
 State 196
 
-  265 ifConditionBreak: "," .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "then", "else", "elseif", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
-  266                 | "," . "end of line"
+  266 ifConditionBreak: "," .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "then", "else", "elseif", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
+  267                 | "," . "end of line"
 
-    "end of line"  shift, and go to state 372
+    "end of line"  shift, and go to state 373
 
-    $default  reduce using rule 265 (ifConditionBreak)
+    $default  reduce using rule 266 (ifConditionBreak)
 
 
 State 197
 
-  263 ifConditionBreak: ";" .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "then", "else", "elseif", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
-  264                 | ";" . "end of line"
+  264 ifConditionBreak: ";" .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "then", "else", "elseif", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
+  265                 | ";" . "end of line"
 
-    "end of line"  shift, and go to state 373
+    "end of line"  shift, and go to state 374
 
-    $default  reduce using rule 263 (ifConditionBreak)
+    $default  reduce using rule 264 (ifConditionBreak)
 
 
 State 198
 
-  263 ifConditionBreak: . ";"
-  264                 | . ";" "end of line"
-  265                 | . ","
-  266                 | . "," "end of line"
-  267                 | . "end of line"
-  268 then: "then" .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "else", "elseif", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
-  271     | "then" . ifConditionBreak
+  264 ifConditionBreak: . ";"
+  265                 | . ";" "end of line"
+  266                 | . ","
+  267                 | . "," "end of line"
+  268                 | . "end of line"
+  269 then: "then" .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "else", "elseif", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
+  272     | "then" . ifConditionBreak
 
     "end of line"  shift, and go to state 195
     ","            shift, and go to state 196
     ";"            shift, and go to state 197
 
-    $default  reduce using rule 268 (then)
+    $default  reduce using rule 269 (then)
 
-    ifConditionBreak  go to state 374
+    ifConditionBreak  go to state 375
 
 
 State 199
 
-  269 then: ifConditionBreak . "then"
-  270     | ifConditionBreak . "then" "end of line"
-  272     | ifConditionBreak .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "else", "elseif", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
+  270 then: ifConditionBreak . "then"
+  271     | ifConditionBreak . "then" "end of line"
+  273     | ifConditionBreak .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "else", "elseif", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
 
-    "then"  shift, and go to state 375
+    "then"  shift, and go to state 376
 
-    $default  reduce using rule 272 (then)
+    $default  reduce using rule 273 (then)
 
 
 State 200
@@ -12731,46 +12750,46 @@ State 200
   217       | . "[" "end of line" matrixOrCellColumns "]"
   218       | . "[" "end of line" "]"
   219       | . "[" "]"
-  238 variableDeclaration: . assignable "=" variable
-  239                    | . assignable "=" functionCall
-  240                    | . functionCall "=" variable
-  241                    | . functionCall "=" functionCall
-  242                    | . assignable "=" ":"
-  243                    | . functionCall "=" ":"
-  244                    | . assignable "=" returnControl
-  245                    | . functionCall "=" returnControl
-  246 assignable: . variable "." "identifier"
-  247           | . variable "." keywords
-  248           | . variable "." functionCall
-  249           | . functionCall "." "identifier"
-  250           | . functionCall "." keywords
-  251           | . "identifier"
-  252           | . multipleResults
-  253           | . variable "(" functionArgs ")"
-  254           | . functionCall "(" functionArgs ")"
-  255 multipleResults: . "[" matrixOrCellColumns "]"
-  256 ifControl: . "if" condition then thenBody "end"
-  256          | "if" condition then . thenBody "end"
-  257          | . "if" condition then thenBody else elseBody "end"
-  257          | "if" condition then . thenBody else elseBody "end"
-  258          | . "if" condition then thenBody elseIfControl "end"
-  258          | "if" condition then . thenBody elseIfControl "end"
-  259 thenBody: . expressions
-  260         | . %empty  ["else", "elseif", "end"]
-  283 selectControl: . select selectable selectConditionBreak casesControl "end"
-  284              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
-  285              | . select selectable "line comment" selectConditionBreak casesControl "end"
-  286              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
-  287 select: . "select"
-  288       | . "switch"
-  323 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
-  324           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
-  337 whileControl: . "while" condition whileConditionBreak whileBody "end"
-  358 tryControl: . "try" catchBody "catch" catchBody "end"
-  359           | . "try" catchBody "end"
-  366 returnControl: . "return"
-  367              | . "return" variable
-  368              | . "return" functionCall
+  239 variableDeclaration: . assignable "=" variable
+  240                    | . assignable "=" functionCall
+  241                    | . functionCall "=" variable
+  242                    | . functionCall "=" functionCall
+  243                    | . assignable "=" ":"
+  244                    | . functionCall "=" ":"
+  245                    | . assignable "=" returnControl
+  246                    | . functionCall "=" returnControl
+  247 assignable: . variable "." "identifier"
+  248           | . variable "." keywords
+  249           | . variable "." functionCall
+  250           | . functionCall "." "identifier"
+  251           | . functionCall "." keywords
+  252           | . "identifier"
+  253           | . multipleResults
+  254           | . variable "(" functionArgs ")"
+  255           | . functionCall "(" functionArgs ")"
+  256 multipleResults: . "[" matrixOrCellColumns "]"
+  257 ifControl: . "if" condition then thenBody "end"
+  257          | "if" condition then . thenBody "end"
+  258          | . "if" condition then thenBody else elseBody "end"
+  258          | "if" condition then . thenBody else elseBody "end"
+  259          | . "if" condition then thenBody elseIfControl "end"
+  259          | "if" condition then . thenBody elseIfControl "end"
+  260 thenBody: . expressions
+  261         | . %empty  ["else", "elseif", "end"]
+  284 selectControl: . select selectable selectConditionBreak casesControl "end"
+  285              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
+  286              | . select selectable "line comment" selectConditionBreak casesControl "end"
+  287              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
+  288 select: . "select"
+  289       | . "switch"
+  324 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
+  325           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
+  338 whileControl: . "while" condition whileConditionBreak whileBody "end"
+  359 tryControl: . "try" catchBody "catch" catchBody "end"
+  360           | . "try" catchBody "end"
+  367 returnControl: . "return"
+  368              | . "return" variable
+  369              | . "return" functionCall
 
     error           shift, and go to state 1
     "%t or %T"      shift, and go to state 3
@@ -12799,11 +12818,11 @@ State 200
     "number"        shift, and go to state 28
     "line comment"  shift, and go to state 29
 
-    "else"    reduce using rule 260 (thenBody)
-    "elseif"  reduce using rule 260 (thenBody)
-    "end"     reduce using rule 260 (thenBody)
+    "else"    reduce using rule 261 (thenBody)
+    "elseif"  reduce using rule 261 (thenBody)
+    "end"     reduce using rule 261 (thenBody)
 
-    expressions           go to state 376
+    expressions           go to state 377
     recursiveExpression   go to state 32
     expression            go to state 34
     implicitFunctionCall  go to state 35
@@ -12819,7 +12838,7 @@ State 200
     assignable            go to state 45
     multipleResults       go to state 46
     ifControl             go to state 47
-    thenBody              go to state 377
+    thenBody              go to state 378
     selectControl         go to state 48
     select                go to state 49
     forControl            go to state 50
@@ -12833,7 +12852,7 @@ State 201
    69 functionDeclaration: "function" "[" "]" . "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
    73                    | "function" "[" "]" . "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
 
-    "="  shift, and go to state 378
+    "="  shift, and go to state 379
 
 
 State 202
@@ -12848,7 +12867,7 @@ State 203
    68 functionDeclaration: "function" "[" functionDeclarationReturns . "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
    72                    | "function" "[" functionDeclarationReturns . "]" "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
 
-    "]"  shift, and go to state 379
+    "]"  shift, and go to state 380
 
 
 State 204
@@ -12856,7 +12875,7 @@ State 204
    75 functionDeclarationReturns: idList .  ["]"]
    79 idList: idList . "," "identifier"
 
-    ","  shift, and go to state 380
+    ","  shift, and go to state 381
 
     $default  reduce using rule 75 (functionDeclarationReturns)
 
@@ -12868,10 +12887,10 @@ State 205
    79 idList: . idList "," "identifier"
    80       | . "identifier"
 
-    ")"           shift, and go to state 381
+    ")"           shift, and go to state 382
     "identifier"  shift, and go to state 202
 
-    idList  go to state 382
+    idList  go to state 383
 
 
 State 206
@@ -12879,7 +12898,7 @@ State 206
    67 functionDeclaration: "function" "identifier" "=" . "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
    71                    | "function" "identifier" "=" . "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
 
-    "identifier"  shift, and go to state 383
+    "identifier"  shift, and go to state 384
 
 
 State 207
@@ -12891,23 +12910,23 @@ State 207
    83                         | . ";" "end of line"
    84                         | . ","
    85                         | . "," "end of line"
-  371 lineEnd: . "end of line"
-  372        | . "line comment" "end of line"
+  372 lineEnd: . "end of line"
+  373        | . "line comment" "end of line"
 
-    "end of line"   shift, and go to state 384
-    ","             shift, and go to state 385
-    ";"             shift, and go to state 386
-    "line comment"  shift, and go to state 387
+    "end of line"   shift, and go to state 385
+    ","             shift, and go to state 386
+    ";"             shift, and go to state 387
+    "line comment"  shift, and go to state 388
 
-    functionDeclarationBreak  go to state 388
-    lineEnd                   go to state 389
+    functionDeclarationBreak  go to state 389
+    lineEnd                   go to state 390
 
 
 State 208
 
-  324 forControl: "for" "(" "identifier" . "=" forIterator ")" forConditionBreak forBody "end"
+  325 forControl: "for" "(" "identifier" . "=" forIterator ")" forConditionBreak forBody "end"
 
-    "="  shift, and go to state 390
+    "="  shift, and go to state 391
 
 
 State 209
@@ -12979,9 +12998,9 @@ State 209
   217       | . "[" "end of line" matrixOrCellColumns "]"
   218       | . "[" "end of line" "]"
   219       | . "[" "]"
-  323 forControl: "for" "identifier" "=" . forIterator forConditionBreak forBody "end"
-  325 forIterator: . functionCall
-  326            | . variable
+  324 forControl: "for" "identifier" "=" . forIterator forConditionBreak forBody "end"
+  326 forIterator: . functionCall
+  327            | . variable
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -12998,80 +13017,80 @@ State 209
     "float"       shift, and go to state 27
     "number"      shift, and go to state 28
 
-    functionCall        go to state 391
+    functionCall        go to state 392
     simpleFunctionCall  go to state 37
     comparison          go to state 39
     operation           go to state 40
-    variable            go to state 392
+    variable            go to state 393
     cell                go to state 42
     matrix              go to state 43
-    forIterator         go to state 393
+    forIterator         go to state 394
 
 
 State 210
 
-  349 whileConditionBreak: "end of line" .
+  350 whileConditionBreak: "end of line" .
 
-    $default  reduce using rule 349 (whileConditionBreak)
+    $default  reduce using rule 350 (whileConditionBreak)
 
 
 State 211
 
-  340 whileConditionBreak: "," .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
-  350                    | "," . "end of line"
+  341 whileConditionBreak: "," .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
+  351                    | "," . "end of line"
 
-    "end of line"  shift, and go to state 394
+    "end of line"  shift, and go to state 395
 
-    $default  reduce using rule 340 (whileConditionBreak)
+    $default  reduce using rule 341 (whileConditionBreak)
 
 
 State 212
 
-  341 whileConditionBreak: ";" .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
-  351                    | ";" . "end of line"
+  342 whileConditionBreak: ";" .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
+  352                    | ";" . "end of line"
 
-    "end of line"  shift, and go to state 395
+    "end of line"  shift, and go to state 396
 
-    $default  reduce using rule 341 (whileConditionBreak)
+    $default  reduce using rule 342 (whileConditionBreak)
 
 
 State 213
 
-  345 whileConditionBreak: "then" .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
-  346                    | "then" . ","
-  347                    | "then" . ";"
-  355                    | "then" . "end of line"
-  356                    | "then" . "," "end of line"
-  357                    | "then" . ";" "end of line"
+  346 whileConditionBreak: "then" .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
+  347                    | "then" . ","
+  348                    | "then" . ";"
+  356                    | "then" . "end of line"
+  357                    | "then" . "," "end of line"
+  358                    | "then" . ";" "end of line"
 
-    "end of line"  shift, and go to state 396
-    ","            shift, and go to state 397
-    ";"            shift, and go to state 398
+    "end of line"  shift, and go to state 397
+    ","            shift, and go to state 398
+    ";"            shift, and go to state 399
 
-    $default  reduce using rule 345 (whileConditionBreak)
+    $default  reduce using rule 346 (whileConditionBreak)
 
 
 State 214
 
-  342 whileConditionBreak: "do" .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
-  343                    | "do" . ","
-  344                    | "do" . ";"
-  352                    | "do" . "end of line"
-  353                    | "do" . "," "end of line"
-  354                    | "do" . ";" "end of line"
+  343 whileConditionBreak: "do" .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
+  344                    | "do" . ","
+  345                    | "do" . ";"
+  353                    | "do" . "end of line"
+  354                    | "do" . "," "end of line"
+  355                    | "do" . ";" "end of line"
 
-    "end of line"  shift, and go to state 399
-    ","            shift, and go to state 400
-    ";"            shift, and go to state 401
+    "end of line"  shift, and go to state 400
+    ","            shift, and go to state 401
+    ";"            shift, and go to state 402
 
-    $default  reduce using rule 342 (whileConditionBreak)
+    $default  reduce using rule 343 (whileConditionBreak)
 
 
 State 215
 
-  348 whileConditionBreak: "line comment" . "end of line"
+  349 whileConditionBreak: "line comment" . "end of line"
 
-    "end of line"  shift, and go to state 402
+    "end of line"  shift, and go to state 403
 
 
 State 216
@@ -13177,44 +13196,44 @@ State 216
   217       | . "[" "end of line" matrixOrCellColumns "]"
   218       | . "[" "end of line" "]"
   219       | . "[" "]"
-  238 variableDeclaration: . assignable "=" variable
-  239                    | . assignable "=" functionCall
-  240                    | . functionCall "=" variable
-  241                    | . functionCall "=" functionCall
-  242                    | . assignable "=" ":"
-  243                    | . functionCall "=" ":"
-  244                    | . assignable "=" returnControl
-  245                    | . functionCall "=" returnControl
-  246 assignable: . variable "." "identifier"
-  247           | . variable "." keywords
-  248           | . variable "." functionCall
-  249           | . functionCall "." "identifier"
-  250           | . functionCall "." keywords
-  251           | . "identifier"
-  252           | . multipleResults
-  253           | . variable "(" functionArgs ")"
-  254           | . functionCall "(" functionArgs ")"
-  255 multipleResults: . "[" matrixOrCellColumns "]"
-  256 ifControl: . "if" condition then thenBody "end"
-  257          | . "if" condition then thenBody else elseBody "end"
-  258          | . "if" condition then thenBody elseIfControl "end"
-  283 selectControl: . select selectable selectConditionBreak casesControl "end"
-  284              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
-  285              | . select selectable "line comment" selectConditionBreak casesControl "end"
-  286              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
-  287 select: . "select"
-  288       | . "switch"
-  323 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
-  324           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
-  337 whileControl: . "while" condition whileConditionBreak whileBody "end"
-  337             | "while" condition whileConditionBreak . whileBody "end"
-  338 whileBody: . expressions
-  339          | . %empty  ["end"]
-  358 tryControl: . "try" catchBody "catch" catchBody "end"
-  359           | . "try" catchBody "end"
-  366 returnControl: . "return"
-  367              | . "return" variable
-  368              | . "return" functionCall
+  239 variableDeclaration: . assignable "=" variable
+  240                    | . assignable "=" functionCall
+  241                    | . functionCall "=" variable
+  242                    | . functionCall "=" functionCall
+  243                    | . assignable "=" ":"
+  244                    | . functionCall "=" ":"
+  245                    | . assignable "=" returnControl
+  246                    | . functionCall "=" returnControl
+  247 assignable: . variable "." "identifier"
+  248           | . variable "." keywords
+  249           | . variable "." functionCall
+  250           | . functionCall "." "identifier"
+  251           | . functionCall "." keywords
+  252           | . "identifier"
+  253           | . multipleResults
+  254           | . variable "(" functionArgs ")"
+  255           | . functionCall "(" functionArgs ")"
+  256 multipleResults: . "[" matrixOrCellColumns "]"
+  257 ifControl: . "if" condition then thenBody "end"
+  258          | . "if" condition then thenBody else elseBody "end"
+  259          | . "if" condition then thenBody elseIfControl "end"
+  284 selectControl: . select selectable selectConditionBreak casesControl "end"
+  285              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
+  286              | . select selectable "line comment" selectConditionBreak casesControl "end"
+  287              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
+  288 select: . "select"
+  289       | . "switch"
+  324 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
+  325           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
+  338 whileControl: . "while" condition whileConditionBreak whileBody "end"
+  338             | "while" condition whileConditionBreak . whileBody "end"
+  339 whileBody: . expressions
+  340          | . %empty  ["end"]
+  359 tryControl: . "try" catchBody "catch" catchBody "end"
+  360           | . "try" catchBody "end"
+  367 returnControl: . "return"
+  368              | . "return" variable
+  369              | . "return" functionCall
 
     error           shift, and go to state 1
     "%t or %T"      shift, and go to state 3
@@ -13243,9 +13262,9 @@ State 216
     "number"        shift, and go to state 28
     "line comment"  shift, and go to state 29
 
-    "end"  reduce using rule 339 (whileBody)
+    "end"  reduce using rule 340 (whileBody)
 
-    expressions           go to state 403
+    expressions           go to state 404
     recursiveExpression   go to state 32
     expression            go to state 34
     implicitFunctionCall  go to state 35
@@ -13265,37 +13284,37 @@ State 216
     select                go to state 49
     forControl            go to state 50
     whileControl          go to state 51
-    whileBody             go to state 404
+    whileBody             go to state 405
     tryControl            go to state 52
     returnControl         go to state 53
 
 
 State 217
 
-  361 catchBody: "end of line" expressions .
+  362 catchBody: "end of line" expressions .
 
-    $default  reduce using rule 361 (catchBody)
+    $default  reduce using rule 362 (catchBody)
 
 
 State 218
 
-  363 catchBody: "," expressions .
+  364 catchBody: "," expressions .
 
-    $default  reduce using rule 363 (catchBody)
+    $default  reduce using rule 364 (catchBody)
 
 
 State 219
 
-  362 catchBody: ";" expressions .
+  363 catchBody: ";" expressions .
 
-    $default  reduce using rule 362 (catchBody)
+    $default  reduce using rule 363 (catchBody)
 
 
 State 220
 
-  359 tryControl: "try" catchBody "end" .
+  360 tryControl: "try" catchBody "end" .
 
-    $default  reduce using rule 359 (tryControl)
+    $default  reduce using rule 360 (tryControl)
 
 
 State 221
@@ -13401,48 +13420,48 @@ State 221
   217       | . "[" "end of line" matrixOrCellColumns "]"
   218       | . "[" "end of line" "]"
   219       | . "[" "]"
-  238 variableDeclaration: . assignable "=" variable
-  239                    | . assignable "=" functionCall
-  240                    | . functionCall "=" variable
-  241                    | . functionCall "=" functionCall
-  242                    | . assignable "=" ":"
-  243                    | . functionCall "=" ":"
-  244                    | . assignable "=" returnControl
-  245                    | . functionCall "=" returnControl
-  246 assignable: . variable "." "identifier"
-  247           | . variable "." keywords
-  248           | . variable "." functionCall
-  249           | . functionCall "." "identifier"
-  250           | . functionCall "." keywords
-  251           | . "identifier"
-  252           | . multipleResults
-  253           | . variable "(" functionArgs ")"
-  254           | . functionCall "(" functionArgs ")"
-  255 multipleResults: . "[" matrixOrCellColumns "]"
-  256 ifControl: . "if" condition then thenBody "end"
-  257          | . "if" condition then thenBody else elseBody "end"
-  258          | . "if" condition then thenBody elseIfControl "end"
-  283 selectControl: . select selectable selectConditionBreak casesControl "end"
-  284              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
-  285              | . select selectable "line comment" selectConditionBreak casesControl "end"
-  286              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
-  287 select: . "select"
-  288       | . "switch"
-  323 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
-  324           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
-  337 whileControl: . "while" condition whileConditionBreak whileBody "end"
-  358 tryControl: . "try" catchBody "catch" catchBody "end"
-  358           | "try" catchBody "catch" . catchBody "end"
-  359           | . "try" catchBody "end"
-  360 catchBody: . expressions
-  361          | . "end of line" expressions
-  362          | . ";" expressions
-  363          | . "," expressions
-  364          | . "end of line"
-  365          | . %empty  ["end"]
-  366 returnControl: . "return"
-  367              | . "return" variable
-  368              | . "return" functionCall
+  239 variableDeclaration: . assignable "=" variable
+  240                    | . assignable "=" functionCall
+  241                    | . functionCall "=" variable
+  242                    | . functionCall "=" functionCall
+  243                    | . assignable "=" ":"
+  244                    | . functionCall "=" ":"
+  245                    | . assignable "=" returnControl
+  246                    | . functionCall "=" returnControl
+  247 assignable: . variable "." "identifier"
+  248           | . variable "." keywords
+  249           | . variable "." functionCall
+  250           | . functionCall "." "identifier"
+  251           | . functionCall "." keywords
+  252           | . "identifier"
+  253           | . multipleResults
+  254           | . variable "(" functionArgs ")"
+  255           | . functionCall "(" functionArgs ")"
+  256 multipleResults: . "[" matrixOrCellColumns "]"
+  257 ifControl: . "if" condition then thenBody "end"
+  258          | . "if" condition then thenBody else elseBody "end"
+  259          | . "if" condition then thenBody elseIfControl "end"
+  284 selectControl: . select selectable selectConditionBreak casesControl "end"
+  285              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
+  286              | . select selectable "line comment" selectConditionBreak casesControl "end"
+  287              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
+  288 select: . "select"
+  289       | . "switch"
+  324 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
+  325           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
+  338 whileControl: . "while" condition whileConditionBreak whileBody "end"
+  359 tryControl: . "try" catchBody "catch" catchBody "end"
+  359           | "try" catchBody "catch" . catchBody "end"
+  360           | . "try" catchBody "end"
+  361 catchBody: . expressions
+  362          | . "end of line" expressions
+  363          | . ";" expressions
+  364          | . "," expressions
+  365          | . "end of line"
+  366          | . %empty  ["end"]
+  367 returnControl: . "return"
+  368              | . "return" variable
+  369              | . "return" functionCall
 
     error           shift, and go to state 1
     "end of line"   shift, and go to state 86
@@ -13474,7 +13493,7 @@ State 221
     "number"        shift, and go to state 28
     "line comment"  shift, and go to state 29
 
-    "end"  reduce using rule 365 (catchBody)
+    "end"  reduce using rule 366 (catchBody)
 
     expressions           go to state 89
     recursiveExpression   go to state 32
@@ -13497,7 +13516,7 @@ State 221
     forControl            go to state 50
     whileControl          go to state 51
     tryControl            go to state 52
-    catchBody             go to state 405
+    catchBody             go to state 406
     returnControl         go to state 53
 
 
@@ -13575,30 +13594,30 @@ State 222
   217       | . "[" "end of line" matrixOrCellColumns "]"
   218       | . "[" "end of line" "]"
   219       | . "[" "]"
-  238 variableDeclaration: . assignable "=" variable
-  239                    | . assignable "=" functionCall
-  240                    | . functionCall "=" variable
-  241                    | . functionCall "=" functionCall
-  242                    | . assignable "=" ":"
-  243                    | . functionCall "=" ":"
-  244                    | . assignable "=" returnControl
-  245                    | . functionCall "=" returnControl
-  246 assignable: . variable "." "identifier"
-  247           | . variable "." keywords
-  248           | . variable "." functionCall
-  249           | . functionCall "." "identifier"
-  250           | . functionCall "." keywords
-  251           | . "identifier"
-  252           | . multipleResults
-  253           | . variable "(" functionArgs ")"
-  254           | . functionCall "(" functionArgs ")"
-  255 multipleResults: . "[" matrixOrCellColumns "]"
+  239 variableDeclaration: . assignable "=" variable
+  240                    | . assignable "=" functionCall
+  241                    | . functionCall "=" variable
+  242                    | . functionCall "=" functionCall
+  243                    | . assignable "=" ":"
+  244                    | . functionCall "=" ":"
+  245                    | . assignable "=" returnControl
+  246                    | . functionCall "=" returnControl
+  247 assignable: . variable "." "identifier"
+  248           | . variable "." keywords
+  249           | . variable "." functionCall
+  250           | . functionCall "." "identifier"
+  251           | . functionCall "." keywords
+  252           | . "identifier"
+  253           | . multipleResults
+  254           | . variable "(" functionArgs ")"
+  255           | . functionCall "(" functionArgs ")"
+  256 multipleResults: . "[" matrixOrCellColumns "]"
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
     "~ or @"      shift, and go to state 5
     "$"           shift, and go to state 6
-    ":"           shift, and go to state 406
+    ":"           shift, and go to state 407
     "("           shift, and go to state 9
     "["           shift, and go to state 10
     "{"           shift, and go to state 11
@@ -13612,14 +13631,14 @@ State 222
 
     $default  reduce using rule 57 (functionArgs)
 
-    functionCall         go to state 407
+    functionCall         go to state 408
     simpleFunctionCall   go to state 37
     comparison           go to state 39
     operation            go to state 40
-    variable             go to state 408
+    variable             go to state 409
     cell                 go to state 42
     matrix               go to state 43
-    variableDeclaration  go to state 409
+    variableDeclaration  go to state 410
     assignable           go to state 45
     multipleResults      go to state 46
 
@@ -13645,12 +13664,12 @@ State 225
    51                   | "identifier" . "(" ")"
    52                   | "identifier" . "{" "}"
   185 variable: "identifier" .  ["'", ",", ":", ")", "}", ".", ".'", "+", "-", "*", ".*", ".*.", "*.", "/", "./", "/.", "./.", "\\", ".\\", "\\.", ".\\.", "** or ^", ".^", "==", "<> or ~=", "<", "<=", ">", ">=", "&", "&&", "|", "||"]
-  251 assignable: "identifier" .  ["="]
+  252 assignable: "identifier" .  ["="]
 
     "("  shift, and go to state 96
     "{"  shift, and go to state 97
 
-    "="       reduce using rule 251 (assignable)
+    "="       reduce using rule 252 (assignable)
     $default  reduce using rule 185 (variable)
 
     Conflict between rule 185 and token "(" resolved as shift (LISTABLE < "(").
@@ -13734,13 +13753,13 @@ State 226
   179         | functionCall . "." keywords
   181         | functionCall . listableEnd
   197         | functionCall . "(" functionArgs ")"
-  240 variableDeclaration: functionCall . "=" variable
-  241                    | functionCall . "=" functionCall
-  243                    | functionCall . "=" ":"
-  245                    | functionCall . "=" returnControl
-  249 assignable: functionCall . "." "identifier"
-  250           | functionCall . "." keywords
-  254           | functionCall . "(" functionArgs ")"
+  241 variableDeclaration: functionCall . "=" variable
+  242                    | functionCall . "=" functionCall
+  244                    | functionCall . "=" ":"
+  246                    | functionCall . "=" returnControl
+  250 assignable: functionCall . "." "identifier"
+  251           | functionCall . "." keywords
+  255           | functionCall . "(" functionArgs ")"
 
     "'"         shift, and go to state 114
     ":"         shift, and go to state 115
@@ -13792,8 +13811,8 @@ State 227
    65             | functionArgs . "," ":"
    66             | functionArgs . "," variableDeclaration
 
-    ","  shift, and go to state 410
-    ")"  shift, and go to state 411
+    ","  shift, and go to state 411
+    ")"  shift, and go to state 412
 
 
 State 228
@@ -13875,10 +13894,10 @@ State 228
   177         | variable . "." functionCall
   180         | variable . listableEnd
   196         | variable . "(" functionArgs ")"
-  246 assignable: variable . "." "identifier"
-  247           | variable . "." keywords
-  248           | variable . "." functionCall
-  253           | variable . "(" functionArgs ")"
+  247 assignable: variable . "." "identifier"
+  248           | variable . "." keywords
+  249           | variable . "." functionCall
+  254           | variable . "(" functionArgs ")"
 
     "'"         shift, and go to state 150
     ":"         shift, and go to state 115
@@ -13943,15 +13962,15 @@ State 231
    65             | functionArgs . "," ":"
    66             | functionArgs . "," variableDeclaration
 
-    ","  shift, and go to state 410
-    "}"  shift, and go to state 412
+    ","  shift, and go to state 411
+    "}"  shift, and go to state 413
 
 
 State 232
 
    45 implicitCallable: implicitCallable "." . "identifier"
 
-    "identifier"  shift, and go to state 413
+    "identifier"  shift, and go to state 414
 
 
 State 233
@@ -13971,7 +13990,7 @@ State 233
 
     $default  reduce using rule 7 (expressions)
 
-    expressionLineBreak  go to state 414
+    expressionLineBreak  go to state 415
 
 
 State 234
@@ -14303,153 +14322,153 @@ State 238
    65             | functionArgs . "," ":"
    66             | functionArgs . "," variableDeclaration
   197 variable: functionCall "(" functionArgs . ")"
-  254 assignable: functionCall "(" functionArgs . ")"
+  255 assignable: functionCall "(" functionArgs . ")"
 
-    ","  shift, and go to state 410
-    ")"  shift, and go to state 415
+    ","  shift, and go to state 411
+    ")"  shift, and go to state 416
 
 
 State 239
 
-  373 keywords: "if" .
+  374 keywords: "if" .
 
-    $default  reduce using rule 373 (keywords)
+    $default  reduce using rule 374 (keywords)
 
 
 State 240
 
-  374 keywords: "then" .
+  375 keywords: "then" .
 
-    $default  reduce using rule 374 (keywords)
+    $default  reduce using rule 375 (keywords)
 
 
 State 241
 
-  375 keywords: "else" .
+  376 keywords: "else" .
 
-    $default  reduce using rule 375 (keywords)
+    $default  reduce using rule 376 (keywords)
 
 
 State 242
 
-  376 keywords: "elseif" .
+  377 keywords: "elseif" .
 
-    $default  reduce using rule 376 (keywords)
+    $default  reduce using rule 377 (keywords)
 
 
 State 243
 
-  377 keywords: "end" .
+  378 keywords: "end" .
 
-    $default  reduce using rule 377 (keywords)
+    $default  reduce using rule 378 (keywords)
 
 
 State 244
 
-  378 keywords: "select" .
+  379 keywords: "select" .
 
-    $default  reduce using rule 378 (keywords)
+    $default  reduce using rule 379 (keywords)
 
 
 State 245
 
-  379 keywords: "switch" .
+  380 keywords: "switch" .
 
-    $default  reduce using rule 379 (keywords)
+    $default  reduce using rule 380 (keywords)
 
 
 State 246
 
-  381 keywords: "case" .
+  382 keywords: "case" .
 
-    $default  reduce using rule 381 (keywords)
+    $default  reduce using rule 382 (keywords)
 
 
 State 247
 
-  380 keywords: "otherwise" .
+  381 keywords: "otherwise" .
 
-    $default  reduce using rule 380 (keywords)
+    $default  reduce using rule 381 (keywords)
 
 
 State 248
 
-  382 keywords: "function" .
+  383 keywords: "function" .
 
-    $default  reduce using rule 382 (keywords)
+    $default  reduce using rule 383 (keywords)
 
 
 State 249
 
-  383 keywords: "endfunction" .
+  384 keywords: "endfunction" .
 
-    $default  reduce using rule 383 (keywords)
+    $default  reduce using rule 384 (keywords)
 
 
 State 250
 
-  384 keywords: "for" .
+  385 keywords: "for" .
 
-    $default  reduce using rule 384 (keywords)
+    $default  reduce using rule 385 (keywords)
 
 
 State 251
 
-  385 keywords: "while" .
+  386 keywords: "while" .
 
-    $default  reduce using rule 385 (keywords)
+    $default  reduce using rule 386 (keywords)
 
 
 State 252
 
-  386 keywords: "do" .
+  387 keywords: "do" .
 
-    $default  reduce using rule 386 (keywords)
+    $default  reduce using rule 387 (keywords)
 
 
 State 253
 
-  387 keywords: "break" .
+  388 keywords: "break" .
 
-    $default  reduce using rule 387 (keywords)
+    $default  reduce using rule 388 (keywords)
 
 
 State 254
 
-  388 keywords: "try" .
+  389 keywords: "try" .
 
-    $default  reduce using rule 388 (keywords)
+    $default  reduce using rule 389 (keywords)
 
 
 State 255
 
-  389 keywords: "catch" .
+  390 keywords: "catch" .
 
-    $default  reduce using rule 389 (keywords)
+    $default  reduce using rule 390 (keywords)
 
 
 State 256
 
-  390 keywords: "return" .
+  391 keywords: "return" .
 
-    $default  reduce using rule 390 (keywords)
+    $default  reduce using rule 391 (keywords)
 
 
 State 257
 
   178 variable: functionCall "." "identifier" .  ["end of file", "end of line", "'", ",", ":", ";", "(", ")", "}", ".", ".'", "+", "-", "*", ".*", ".*.", "*.", "/", "./", "/.", "./.", "\\", ".\\", "\\.", ".\\.", "** or ^", ".^", "==", "<> or ~=", "<", "<=", ">", ">=", "&", "&&", "|", "||", "else", "elseif", "end", "case", "otherwise", "endfunction", "catch", "line comment"]
-  249 assignable: functionCall "." "identifier" .  ["="]
+  250 assignable: functionCall "." "identifier" .  ["="]
 
-    "="       reduce using rule 249 (assignable)
+    "="       reduce using rule 250 (assignable)
     $default  reduce using rule 178 (variable)
 
 
 State 258
 
   179 variable: functionCall "." keywords .  ["end of file", "end of line", "'", ",", ":", ";", "(", ")", "}", ".", ".'", "+", "-", "*", ".*", ".*.", "*.", "/", "./", "/.", "./.", "\\", ".\\", "\\.", ".\\.", "** or ^", ".^", "==", "<> or ~=", "<", "<=", ">", ">=", "&", "&&", "|", "||", "else", "elseif", "end", "case", "otherwise", "endfunction", "catch", "line comment"]
-  250 assignable: functionCall "." keywords .  ["="]
+  251 assignable: functionCall "." keywords .  ["="]
 
-    "="       reduce using rule 250 (assignable)
+    "="       reduce using rule 251 (assignable)
     $default  reduce using rule 179 (variable)
 
 
@@ -21495,9 +21514,9 @@ State 320
 
 State 321
 
-  243 variableDeclaration: functionCall "=" ":" .
+  244 variableDeclaration: functionCall "=" ":" .
 
-    $default  reduce using rule 243 (variableDeclaration)
+    $default  reduce using rule 244 (variableDeclaration)
 
 
 State 322
@@ -21577,7 +21596,7 @@ State 322
   179         | functionCall . "." keywords
   181         | functionCall . listableEnd
   197         | functionCall . "(" functionArgs ")"
-  241 variableDeclaration: functionCall "=" functionCall .  ["end of file", "end of line", ",", ";", ")", "}", "else", "elseif", "end", "case", "otherwise", "endfunction", "catch", "line comment"]
+  242 variableDeclaration: functionCall "=" functionCall .  ["end of file", "end of line", ",", ";", ")", "}", "else", "elseif", "end", "case", "otherwise", "endfunction", "catch", "line comment"]
 
     "'"         shift, and go to state 114
     ":"         shift, and go to state 115
@@ -21611,7 +21630,7 @@ State 322
     "|"         shift, and go to state 143
     "||"        shift, and go to state 144
 
-    $default  reduce using rule 241 (variableDeclaration)
+    $default  reduce using rule 242 (variableDeclaration)
 
     rightComparable  go to state 146
     rightOperand     go to state 147
@@ -21697,7 +21716,7 @@ State 323
   177         | variable . "." functionCall
   180         | variable . listableEnd
   196         | variable . "(" functionArgs ")"
-  240 variableDeclaration: functionCall "=" variable .  ["end of file", "end of line", ",", ";", ")", "}", "else", "elseif", "end", "case", "otherwise", "endfunction", "catch", "line comment"]
+  241 variableDeclaration: functionCall "=" variable .  ["end of file", "end of line", ",", ";", ")", "}", "else", "elseif", "end", "case", "otherwise", "endfunction", "catch", "line comment"]
 
     "'"         shift, and go to state 150
     ":"         shift, and go to state 115
@@ -21731,7 +21750,7 @@ State 323
     "|"         shift, and go to state 143
     "||"        shift, and go to state 144
 
-    $default  reduce using rule 240 (variableDeclaration)
+    $default  reduce using rule 241 (variableDeclaration)
 
     rightComparable  go to state 156
     rightOperand     go to state 157
@@ -21741,9 +21760,9 @@ State 323
 
 State 324
 
-  245 variableDeclaration: functionCall "=" returnControl .
+  246 variableDeclaration: functionCall "=" returnControl .
 
-    $default  reduce using rule 245 (variableDeclaration)
+    $default  reduce using rule 246 (variableDeclaration)
 
 
 State 325
@@ -21833,11 +21852,11 @@ State 325
     "float"       shift, and go to state 27
     "number"      shift, and go to state 28
 
-    functionCall        go to state 416
+    functionCall        go to state 417
     simpleFunctionCall  go to state 37
     comparison          go to state 39
     operation           go to state 40
-    variable            go to state 417
+    variable            go to state 418
     cell                go to state 42
     matrix              go to state 43
 
@@ -21850,10 +21869,10 @@ State 326
    65             | functionArgs . "," ":"
    66             | functionArgs . "," variableDeclaration
   196 variable: variable "(" functionArgs . ")"
-  253 assignable: variable "(" functionArgs . ")"
+  254 assignable: variable "(" functionArgs . ")"
 
-    ","  shift, and go to state 410
-    ")"  shift, and go to state 418
+    ","  shift, and go to state 411
+    ")"  shift, and go to state 419
 
 
 State 327
@@ -21867,9 +21886,9 @@ State 327
    52                   | . "identifier" "{" "}"
 
     "("           shift, and go to state 327
-    "identifier"  shift, and go to state 419
+    "identifier"  shift, and go to state 420
 
-    functionCall        go to state 420
+    functionCall        go to state 421
     simpleFunctionCall  go to state 37
 
 
@@ -21880,12 +21899,12 @@ State 328
    51                   | "identifier" . "(" ")"
    52                   | "identifier" . "{" "}"
   175 variable: variable "." "identifier" .  ["end of file", "end of line", "'", ",", ":", ";", ")", "}", ".", ".'", "+", "-", "*", ".*", ".*.", "*.", "/", "./", "/.", "./.", "\\", ".\\", "\\.", ".\\.", "** or ^", ".^", "==", "<> or ~=", "<", "<=", ">", ">=", "&", "&&", "|", "||", "else", "elseif", "end", "case", "otherwise", "endfunction", "catch", "line comment"]
-  246 assignable: variable "." "identifier" .  ["="]
+  247 assignable: variable "." "identifier" .  ["="]
 
     "("  shift, and go to state 96
     "{"  shift, and go to state 97
 
-    "="       reduce using rule 246 (assignable)
+    "="       reduce using rule 247 (assignable)
     $default  reduce using rule 175 (variable)
 
     Conflict between rule 175 and token "(" resolved as shift (UPLEVEL < "(").
@@ -21894,18 +21913,18 @@ State 328
 State 329
 
   177 variable: variable "." functionCall .  ["end of file", "end of line", "'", ",", ":", ";", "(", ")", "}", ".", ".'", "+", "-", "*", ".*", ".*.", "*.", "/", "./", "/.", "./.", "\\", ".\\", "\\.", ".\\.", "** or ^", ".^", "==", "<> or ~=", "<", "<=", ">", ">=", "&", "&&", "|", "||", "else", "elseif", "end", "case", "otherwise", "endfunction", "catch", "line comment"]
-  248 assignable: variable "." functionCall .  ["="]
+  249 assignable: variable "." functionCall .  ["="]
 
-    "="       reduce using rule 248 (assignable)
+    "="       reduce using rule 249 (assignable)
     $default  reduce using rule 177 (variable)
 
 
 State 330
 
   176 variable: variable "." keywords .  ["end of file", "end of line", "'", ",", ":", ";", "(", ")", "}", ".", ".'", "+", "-", "*", ".*", ".*.", "*.", "/", "./", "/.", "./.", "\\", ".\\", "\\.", ".\\.", "** or ^", ".^", "==", "<> or ~=", "<", "<=", ">", ">=", "&", "&&", "|", "||", "else", "elseif", "end", "case", "otherwise", "endfunction", "catch", "line comment"]
-  247 assignable: variable "." keywords .  ["="]
+  248 assignable: variable "." keywords .  ["="]
 
-    "="       reduce using rule 247 (assignable)
+    "="       reduce using rule 248 (assignable)
     $default  reduce using rule 176 (variable)
 
 
@@ -22417,9 +22436,9 @@ State 334
 
 State 335
 
-  242 variableDeclaration: assignable "=" ":" .
+  243 variableDeclaration: assignable "=" ":" .
 
-    $default  reduce using rule 242 (variableDeclaration)
+    $default  reduce using rule 243 (variableDeclaration)
 
 
 State 336
@@ -22499,7 +22518,7 @@ State 336
   179         | functionCall . "." keywords
   181         | functionCall . listableEnd
   197         | functionCall . "(" functionArgs ")"
-  239 variableDeclaration: assignable "=" functionCall .  ["end of file", "end of line", ",", ";", ")", "}", "else", "elseif", "end", "case", "otherwise", "endfunction", "catch", "line comment"]
+  240 variableDeclaration: assignable "=" functionCall .  ["end of file", "end of line", ",", ";", ")", "}", "else", "elseif", "end", "case", "otherwise", "endfunction", "catch", "line comment"]
 
     "'"         shift, and go to state 114
     ":"         shift, and go to state 115
@@ -22533,7 +22552,7 @@ State 336
     "|"         shift, and go to state 143
     "||"        shift, and go to state 144
 
-    $default  reduce using rule 239 (variableDeclaration)
+    $default  reduce using rule 240 (variableDeclaration)
 
     rightComparable  go to state 146
     rightOperand     go to state 147
@@ -22619,7 +22638,7 @@ State 337
   177         | variable . "." functionCall
   180         | variable . listableEnd
   196         | variable . "(" functionArgs ")"
-  238 variableDeclaration: assignable "=" variable .  ["end of file", "end of line", ",", ";", ")", "}", "else", "elseif", "end", "case", "otherwise", "endfunction", "catch", "line comment"]
+  239 variableDeclaration: assignable "=" variable .  ["end of file", "end of line", ",", ";", ")", "}", "else", "elseif", "end", "case", "otherwise", "endfunction", "catch", "line comment"]
 
     "'"         shift, and go to state 150
     ":"         shift, and go to state 115
@@ -22653,7 +22672,7 @@ State 337
     "|"         shift, and go to state 143
     "||"        shift, and go to state 144
 
-    $default  reduce using rule 238 (variableDeclaration)
+    $default  reduce using rule 239 (variableDeclaration)
 
     rightComparable  go to state 156
     rightOperand     go to state 157
@@ -22663,73 +22682,73 @@ State 337
 
 State 338
 
-  244 variableDeclaration: assignable "=" returnControl .
+  245 variableDeclaration: assignable "=" returnControl .
 
-    $default  reduce using rule 244 (variableDeclaration)
+    $default  reduce using rule 245 (variableDeclaration)
 
 
 State 339
 
-  298 selectConditionBreak: "end of line" .
+  299 selectConditionBreak: "end of line" .
 
-    $default  reduce using rule 298 (selectConditionBreak)
+    $default  reduce using rule 299 (selectConditionBreak)
 
 
 State 340
 
-  299 selectConditionBreak: "," . "end of line"
-  301                     | "," .  ["case", "line comment"]
+  300 selectConditionBreak: "," . "end of line"
+  302                     | "," .  ["case", "line comment"]
 
-    "end of line"  shift, and go to state 421
+    "end of line"  shift, and go to state 422
 
-    $default  reduce using rule 301 (selectConditionBreak)
+    $default  reduce using rule 302 (selectConditionBreak)
 
 
 State 341
 
-  300 selectConditionBreak: ";" . "end of line"
-  302                     | ";" .  ["case", "line comment"]
+  301 selectConditionBreak: ";" . "end of line"
+  303                     | ";" .  ["case", "line comment"]
 
-    "end of line"  shift, and go to state 422
+    "end of line"  shift, and go to state 423
 
-    $default  reduce using rule 302 (selectConditionBreak)
+    $default  reduce using rule 303 (selectConditionBreak)
 
 
 State 342
 
-  285 selectControl: select selectable "line comment" . selectConditionBreak casesControl "end"
-  286              | select selectable "line comment" . selectConditionBreak casesControl defaultCase elseBody "end"
-  298 selectConditionBreak: . "end of line"
-  299                     | . "," "end of line"
-  300                     | . ";" "end of line"
-  301                     | . ","
-  302                     | . ";"
+  286 selectControl: select selectable "line comment" . selectConditionBreak casesControl "end"
+  287              | select selectable "line comment" . selectConditionBreak casesControl defaultCase elseBody "end"
+  299 selectConditionBreak: . "end of line"
+  300                     | . "," "end of line"
+  301                     | . ";" "end of line"
+  302                     | . ","
+  303                     | . ";"
 
     "end of line"  shift, and go to state 339
     ","            shift, and go to state 340
     ";"            shift, and go to state 341
 
-    selectConditionBreak  go to state 423
+    selectConditionBreak  go to state 424
 
 
 State 343
 
-  283 selectControl: select selectable selectConditionBreak . casesControl "end"
-  284              | select selectable selectConditionBreak . casesControl defaultCase elseBody "end"
-  303 casesControl: . "case" variable caseControlBreak caseBody
-  304             | . "case" functionCall caseControlBreak caseBody
-  305             | . comments "case" variable caseControlBreak caseBody
-  306             | . comments "case" functionCall caseControlBreak caseBody
-  307             | . casesControl "case" variable caseControlBreak caseBody
-  308             | . casesControl "case" functionCall caseControlBreak caseBody
-  369 comments: . "line comment" "end of line"
-  370         | . comments "line comment" "end of line"
+  284 selectControl: select selectable selectConditionBreak . casesControl "end"
+  285              | select selectable selectConditionBreak . casesControl defaultCase elseBody "end"
+  304 casesControl: . "case" variable caseControlBreak caseBody
+  305             | . "case" functionCall caseControlBreak caseBody
+  306             | . comments "case" variable caseControlBreak caseBody
+  307             | . comments "case" functionCall caseControlBreak caseBody
+  308             | . casesControl "case" variable caseControlBreak caseBody
+  309             | . casesControl "case" functionCall caseControlBreak caseBody
+  370 comments: . "line comment" "end of line"
+  371         | . comments "line comment" "end of line"
 
-    "case"          shift, and go to state 424
-    "line comment"  shift, and go to state 425
+    "case"          shift, and go to state 425
+    "line comment"  shift, and go to state 426
 
-    casesControl  go to state 426
-    comments      go to state 427
+    casesControl  go to state 427
+    comments      go to state 428
 
 
 State 344
@@ -22748,8 +22767,8 @@ State 345
    66             | functionArgs . "," variableDeclaration
   197 variable: functionCall "(" functionArgs . ")"
 
-    ","  shift, and go to state 410
-    ")"  shift, and go to state 428
+    ","  shift, and go to state 411
+    ")"  shift, and go to state 429
 
 
 State 346
@@ -22775,8 +22794,8 @@ State 348
    66             | functionArgs . "," variableDeclaration
   196 variable: variable "(" functionArgs . ")"
 
-    ","  shift, and go to state 410
-    ")"  shift, and go to state 429
+    ","  shift, and go to state 411
+    ")"  shift, and go to state 430
 
 
 State 349
@@ -23615,8 +23634,9 @@ State 359
   230                    | matrixOrCellColumns . variable
   231                    | matrixOrCellColumns . functionCall
   232                    | matrixOrCellColumns . "line comment"
-  236 matrixOrCellColumnsBreak: . matrixOrCellColumnsBreak ","
-  237                         | . ","
+  233                    | matrixOrCellColumns . matrixOrCellColumnsBreak "line comment"
+  237 matrixOrCellColumnsBreak: . matrixOrCellColumnsBreak ","
+  238                         | . ","
 
     "end of line"   shift, and go to state 180
     "%t or %T"      shift, and go to state 3
@@ -23627,7 +23647,7 @@ State 359
     ";"             shift, and go to state 182
     "("             shift, and go to state 9
     "["             shift, and go to state 55
-    "]"             shift, and go to state 430
+    "]"             shift, and go to state 431
     "{"             shift, and go to state 11
     "+"             shift, and go to state 12
     "-"             shift, and go to state 13
@@ -23679,13 +23699,20 @@ State 363
 
 State 364
 
-  236 matrixOrCellColumnsBreak: matrixOrCellColumnsBreak "," .
+  237 matrixOrCellColumnsBreak: matrixOrCellColumnsBreak "," .
 
-    $default  reduce using rule 236 (matrixOrCellColumnsBreak)
+    $default  reduce using rule 237 (matrixOrCellColumnsBreak)
 
 
 State 365
 
+  233 matrixOrCellColumns: matrixOrCellColumns matrixOrCellColumnsBreak "line comment" .
+
+    $default  reduce using rule 233 (matrixOrCellColumns)
+
+
+State 366
+
    91 comparison: functionCall . rightComparable
    92 rightComparable: . "&" variable
    93                | . "&" functionCall
@@ -23807,7 +23834,7 @@ State 365
     Conflict between rule 229 and token "-" resolved as shift (HIGHLEVEL < "-").
 
 
-State 366
+State 367
 
    90 comparison: variable . rightComparable
    92 rightComparable: . "&" variable
@@ -23931,7 +23958,7 @@ State 366
     Conflict between rule 228 and token "-" resolved as shift (HIGHLEVEL < "-").
 
 
-State 367
+State 368
 
   224 matrixOrCellLineBreak: matrixOrCellLineBreak . "end of line"
   225                      | matrixOrCellLineBreak . ";"
@@ -23943,14 +23970,14 @@ State 367
     $default  reduce using rule 227 (matrixOrCellLine)
 
 
-State 368
+State 369
 
   205 cell: "{" "end of line" matrixOrCellLines "}" .
 
     $default  reduce using rule 205 (cell)
 
 
-State 369
+State 370
 
    47 functionCall: . simpleFunctionCall
    48             | . "(" functionCall ")"
@@ -24031,8 +24058,9 @@ State 369
   230                    | matrixOrCellColumns . variable
   231                    | matrixOrCellColumns . functionCall
   232                    | matrixOrCellColumns . "line comment"
-  236 matrixOrCellColumnsBreak: . matrixOrCellColumnsBreak ","
-  237                         | . ","
+  233                    | matrixOrCellColumns . matrixOrCellColumnsBreak "line comment"
+  237 matrixOrCellColumnsBreak: . matrixOrCellColumnsBreak ","
+  238                         | . ","
 
     "end of line"   shift, and go to state 180
     "%t or %T"      shift, and go to state 3
@@ -24044,7 +24072,7 @@ State 369
     "("             shift, and go to state 9
     "["             shift, and go to state 55
     "{"             shift, and go to state 11
-    "}"             shift, and go to state 431
+    "}"             shift, and go to state 432
     "+"             shift, and go to state 12
     "-"             shift, and go to state 13
     "string"        shift, and go to state 24
@@ -24065,121 +24093,121 @@ State 369
     matrixOrCellColumnsBreak  go to state 188
 
 
-State 370
+State 371
 
   209 cell: "{" "end of line" matrixOrCellColumns "}" .
 
     $default  reduce using rule 209 (cell)
 
 
-State 371
+State 372
 
   206 cell: "{" matrixOrCellLines matrixOrCellColumns "}" .
 
     $default  reduce using rule 206 (cell)
 
 
-State 372
-
-  266 ifConditionBreak: "," "end of line" .
-
-    $default  reduce using rule 266 (ifConditionBreak)
-
-
 State 373
 
-  264 ifConditionBreak: ";" "end of line" .
+  267 ifConditionBreak: "," "end of line" .
 
-    $default  reduce using rule 264 (ifConditionBreak)
+    $default  reduce using rule 267 (ifConditionBreak)
 
 
 State 374
 
-  271 then: "then" ifConditionBreak .
+  265 ifConditionBreak: ";" "end of line" .
 
-    $default  reduce using rule 271 (then)
+    $default  reduce using rule 265 (ifConditionBreak)
 
 
 State 375
 
-  269 then: ifConditionBreak "then" .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "else", "elseif", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
-  270     | ifConditionBreak "then" . "end of line"
+  272 then: "then" ifConditionBreak .
 
-    "end of line"  shift, and go to state 432
-
-    $default  reduce using rule 269 (then)
+    $default  reduce using rule 272 (then)
 
 
 State 376
 
-  259 thenBody: expressions .
+  270 then: ifConditionBreak "then" .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "else", "elseif", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
+  271     | ifConditionBreak "then" . "end of line"
+
+    "end of line"  shift, and go to state 433
 
-    $default  reduce using rule 259 (thenBody)
+    $default  reduce using rule 270 (then)
 
 
 State 377
 
-  256 ifControl: "if" condition then thenBody . "end"
-  257          | "if" condition then thenBody . else elseBody "end"
-  258          | "if" condition then thenBody . elseIfControl "end"
-  274 else: . "else"
-  275     | . "else" ","
-  276     | . "else" ";"
-  277     | . "else" "end of line"
-  278     | . "else" "," "end of line"
-  279     | . "else" ";" "end of line"
-  280 elseIfControl: . "elseif" condition then thenBody
-  281              | . "elseif" condition then thenBody else elseBody
-  282              | . "elseif" condition then thenBody elseIfControl
-
-    "else"    shift, and go to state 433
-    "elseif"  shift, and go to state 434
-    "end"     shift, and go to state 435
+  260 thenBody: expressions .
 
-    else           go to state 436
-    elseIfControl  go to state 437
+    $default  reduce using rule 260 (thenBody)
 
 
 State 378
 
+  257 ifControl: "if" condition then thenBody . "end"
+  258          | "if" condition then thenBody . else elseBody "end"
+  259          | "if" condition then thenBody . elseIfControl "end"
+  275 else: . "else"
+  276     | . "else" ","
+  277     | . "else" ";"
+  278     | . "else" "end of line"
+  279     | . "else" "," "end of line"
+  280     | . "else" ";" "end of line"
+  281 elseIfControl: . "elseif" condition then thenBody
+  282              | . "elseif" condition then thenBody else elseBody
+  283              | . "elseif" condition then thenBody elseIfControl
+
+    "else"    shift, and go to state 434
+    "elseif"  shift, and go to state 435
+    "end"     shift, and go to state 436
+
+    else           go to state 437
+    elseIfControl  go to state 438
+
+
+State 379
+
    69 functionDeclaration: "function" "[" "]" "=" . "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
    73                    | "function" "[" "]" "=" . "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
 
-    "identifier"  shift, and go to state 438
+    "identifier"  shift, and go to state 439
 
 
-State 379
+State 380
 
    68 functionDeclaration: "function" "[" functionDeclarationReturns "]" . "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
    72                    | "function" "[" functionDeclarationReturns "]" . "=" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
 
-    "="  shift, and go to state 439
+    "="  shift, and go to state 440
 
 
-State 380
+State 381
 
    79 idList: idList "," . "identifier"
 
-    "identifier"  shift, and go to state 440
+    "identifier"  shift, and go to state 441
 
 
-State 381
+State 382
 
    77 functionDeclarationArguments: "(" ")" .
 
     $default  reduce using rule 77 (functionDeclarationArguments)
 
 
-State 382
+State 383
 
    76 functionDeclarationArguments: "(" idList . ")"
    79 idList: idList . "," "identifier"
 
-    ","  shift, and go to state 380
-    ")"  shift, and go to state 441
+    ","  shift, and go to state 381
+    ")"  shift, and go to state 442
 
 
-State 383
+State 384
 
    67 functionDeclaration: "function" "identifier" "=" "identifier" . functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
    71                    | "function" "identifier" "=" "identifier" . functionDeclarationArguments functionDeclarationBreak functionBody "end"
@@ -24191,44 +24219,44 @@ State 383
 
     $default  reduce using rule 78 (functionDeclarationArguments)
 
-    functionDeclarationArguments  go to state 442
+    functionDeclarationArguments  go to state 443
 
 
-State 384
+State 385
 
-  371 lineEnd: "end of line" .
+  372 lineEnd: "end of line" .
 
-    $default  reduce using rule 371 (lineEnd)
+    $default  reduce using rule 372 (lineEnd)
 
 
-State 385
+State 386
 
    84 functionDeclarationBreak: "," .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "end", "select", "switch", "function", "endfunction", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
    85                         | "," . "end of line"
 
-    "end of line"  shift, and go to state 443
+    "end of line"  shift, and go to state 444
 
     $default  reduce using rule 84 (functionDeclarationBreak)
 
 
-State 386
+State 387
 
    82 functionDeclarationBreak: ";" .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "end", "select", "switch", "function", "endfunction", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
    83                         | ";" . "end of line"
 
-    "end of line"  shift, and go to state 444
+    "end of line"  shift, and go to state 445
 
     $default  reduce using rule 82 (functionDeclarationBreak)
 
 
-State 387
+State 388
 
-  372 lineEnd: "line comment" . "end of line"
+  373 lineEnd: "line comment" . "end of line"
 
-    "end of line"  shift, and go to state 445
+    "end of line"  shift, and go to state 446
 
 
-State 388
+State 389
 
     5 expressions: . recursiveExpression
     6            | . recursiveExpression expression
@@ -24335,41 +24363,41 @@ State 388
   217       | . "[" "end of line" matrixOrCellColumns "]"
   218       | . "[" "end of line" "]"
   219       | . "[" "]"
-  238 variableDeclaration: . assignable "=" variable
-  239                    | . assignable "=" functionCall
-  240                    | . functionCall "=" variable
-  241                    | . functionCall "=" functionCall
-  242                    | . assignable "=" ":"
-  243                    | . functionCall "=" ":"
-  244                    | . assignable "=" returnControl
-  245                    | . functionCall "=" returnControl
-  246 assignable: . variable "." "identifier"
-  247           | . variable "." keywords
-  248           | . variable "." functionCall
-  249           | . functionCall "." "identifier"
-  250           | . functionCall "." keywords
-  251           | . "identifier"
-  252           | . multipleResults
-  253           | . variable "(" functionArgs ")"
-  254           | . functionCall "(" functionArgs ")"
-  255 multipleResults: . "[" matrixOrCellColumns "]"
-  256 ifControl: . "if" condition then thenBody "end"
-  257          | . "if" condition then thenBody else elseBody "end"
-  258          | . "if" condition then thenBody elseIfControl "end"
-  283 selectControl: . select selectable selectConditionBreak casesControl "end"
-  284              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
-  285              | . select selectable "line comment" selectConditionBreak casesControl "end"
-  286              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
-  287 select: . "select"
-  288       | . "switch"
-  323 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
-  324           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
-  337 whileControl: . "while" condition whileConditionBreak whileBody "end"
-  358 tryControl: . "try" catchBody "catch" catchBody "end"
-  359           | . "try" catchBody "end"
-  366 returnControl: . "return"
-  367              | . "return" variable
-  368              | . "return" functionCall
+  239 variableDeclaration: . assignable "=" variable
+  240                    | . assignable "=" functionCall
+  241                    | . functionCall "=" variable
+  242                    | . functionCall "=" functionCall
+  243                    | . assignable "=" ":"
+  244                    | . functionCall "=" ":"
+  245                    | . assignable "=" returnControl
+  246                    | . functionCall "=" returnControl
+  247 assignable: . variable "." "identifier"
+  248           | . variable "." keywords
+  249           | . variable "." functionCall
+  250           | . functionCall "." "identifier"
+  251           | . functionCall "." keywords
+  252           | . "identifier"
+  253           | . multipleResults
+  254           | . variable "(" functionArgs ")"
+  255           | . functionCall "(" functionArgs ")"
+  256 multipleResults: . "[" matrixOrCellColumns "]"
+  257 ifControl: . "if" condition then thenBody "end"
+  258          | . "if" condition then thenBody else elseBody "end"
+  259          | . "if" condition then thenBody elseIfControl "end"
+  284 selectControl: . select selectable selectConditionBreak casesControl "end"
+  285              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
+  286              | . select selectable "line comment" selectConditionBreak casesControl "end"
+  287              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
+  288 select: . "select"
+  289       | . "switch"
+  324 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
+  325           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
+  338 whileControl: . "while" condition whileConditionBreak whileBody "end"
+  359 tryControl: . "try" catchBody "catch" catchBody "end"
+  360           | . "try" catchBody "end"
+  367 returnControl: . "return"
+  368              | . "return" variable
+  369              | . "return" functionCall
 
     error           shift, and go to state 1
     "%t or %T"      shift, and go to state 3
@@ -24401,14 +24429,14 @@ State 388
     "end"          reduce using rule 87 (functionBody)
     "endfunction"  reduce using rule 87 (functionBody)
 
-    expressions           go to state 446
+    expressions           go to state 447
     recursiveExpression   go to state 32
     expression            go to state 34
     implicitFunctionCall  go to state 35
     functionCall          go to state 36
     simpleFunctionCall    go to state 37
     functionDeclaration   go to state 38
-    functionBody          go to state 447
+    functionBody          go to state 448
     comparison            go to state 39
     operation             go to state 40
     variable              go to state 41
@@ -24426,14 +24454,14 @@ State 388
     returnControl         go to state 53
 
 
-State 389
+State 390
 
    81 functionDeclarationBreak: lineEnd .
 
     $default  reduce using rule 81 (functionDeclarationBreak)
 
 
-State 390
+State 391
 
    47 functionCall: . simpleFunctionCall
    48             | . "(" functionCall ")"
@@ -24502,9 +24530,9 @@ State 390
   217       | . "[" "end of line" matrixOrCellColumns "]"
   218       | . "[" "end of line" "]"
   219       | . "[" "]"
-  324 forControl: "for" "(" "identifier" "=" . forIterator ")" forConditionBreak forBody "end"
-  325 forIterator: . functionCall
-  326            | . variable
+  325 forControl: "for" "(" "identifier" "=" . forIterator ")" forConditionBreak forBody "end"
+  326 forIterator: . functionCall
+  327            | . variable
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -24521,17 +24549,17 @@ State 390
     "float"       shift, and go to state 27
     "number"      shift, and go to state 28
 
-    functionCall        go to state 391
+    functionCall        go to state 392
     simpleFunctionCall  go to state 37
     comparison          go to state 39
     operation           go to state 40
-    variable            go to state 392
+    variable            go to state 393
     cell                go to state 42
     matrix              go to state 43
-    forIterator         go to state 448
+    forIterator         go to state 449
 
 
-State 391
+State 392
 
    91 comparison: functionCall . rightComparable
    92 rightComparable: . "&" variable
@@ -24608,7 +24636,7 @@ State 391
   179         | functionCall . "." keywords
   181         | functionCall . listableEnd
   197         | functionCall . "(" functionArgs ")"
-  325 forIterator: functionCall .  [error, "end of line", "%t or %T", "%f or %F", "~ or @", "$", ",", ";", ")", "[", "{", "if", "end", "select", "switch", "function", "for", "while", "do", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
+  326 forIterator: functionCall .  [error, "end of line", "%t or %T", "%f or %F", "~ or @", "$", ",", ";", ")", "[", "{", "if", "end", "select", "switch", "function", "for", "while", "do", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
 
     "'"         shift, and go to state 114
     ":"         shift, and go to state 115
@@ -24642,19 +24670,19 @@ State 391
     "|"         shift, and go to state 143
     "||"        shift, and go to state 144
 
-    $default  reduce using rule 325 (forIterator)
+    $default  reduce using rule 326 (forIterator)
 
     rightComparable  go to state 146
     rightOperand     go to state 147
     listableBegin    go to state 148
     listableEnd      go to state 149
 
-    Conflict between rule 325 and token "(" resolved as shift (UPLEVEL < "(").
-    Conflict between rule 325 and token "+" resolved as shift (UPLEVEL < "+").
-    Conflict between rule 325 and token "-" resolved as shift (UPLEVEL < "-").
+    Conflict between rule 326 and token "(" resolved as shift (UPLEVEL < "(").
+    Conflict between rule 326 and token "+" resolved as shift (UPLEVEL < "+").
+    Conflict between rule 326 and token "-" resolved as shift (UPLEVEL < "-").
 
 
-State 392
+State 393
 
    90 comparison: variable . rightComparable
    92 rightComparable: . "&" variable
@@ -24732,7 +24760,7 @@ State 392
   177         | variable . "." functionCall
   180         | variable . listableEnd
   196         | variable . "(" functionArgs ")"
-  326 forIterator: variable .  [error, "end of line", "%t or %T", "%f or %F", "~ or @", "$", ",", ";", ")", "[", "{", "if", "end", "select", "switch", "function", "for", "while", "do", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
+  327 forIterator: variable .  [error, "end of line", "%t or %T", "%f or %F", "~ or @", "$", ",", ";", ")", "[", "{", "if", "end", "select", "switch", "function", "for", "while", "do", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
 
     "'"         shift, and go to state 150
     ":"         shift, and go to state 115
@@ -24766,75 +24794,65 @@ State 392
     "|"         shift, and go to state 143
     "||"        shift, and go to state 144
 
-    $default  reduce using rule 326 (forIterator)
+    $default  reduce using rule 327 (forIterator)
 
     rightComparable  go to state 156
     rightOperand     go to state 157
     listableBegin    go to state 148
     listableEnd      go to state 158
 
-    Conflict between rule 326 and token "(" resolved as shift (UPLEVEL < "(").
-    Conflict between rule 326 and token "+" resolved as shift (UPLEVEL < "+").
-    Conflict between rule 326 and token "-" resolved as shift (UPLEVEL < "-").
-
+    Conflict between rule 327 and token "(" resolved as shift (UPLEVEL < "(").
+    Conflict between rule 327 and token "+" resolved as shift (UPLEVEL < "+").
+    Conflict between rule 327 and token "-" resolved as shift (UPLEVEL < "-").
 
-State 393
-
-  323 forControl: "for" "identifier" "=" forIterator . forConditionBreak forBody "end"
-  327 forConditionBreak: . "end of line"
-  328                  | . ";"
-  329                  | . ";" "end of line"
-  330                  | . ","
-  331                  | . "," "end of line"
-  332                  | . "do"
-  333                  | . "do" "end of line"
-  334                  | . %empty  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
-
-    "end of line"  shift, and go to state 449
-    ","            shift, and go to state 450
-    ";"            shift, and go to state 451
-    "do"           shift, and go to state 452
-
-    $default  reduce using rule 334 (forConditionBreak)
 
-    forConditionBreak  go to state 453
+State 394
 
+  324 forControl: "for" "identifier" "=" forIterator . forConditionBreak forBody "end"
+  328 forConditionBreak: . "end of line"
+  329                  | . ";"
+  330                  | . ";" "end of line"
+  331                  | . ","
+  332                  | . "," "end of line"
+  333                  | . "do"
+  334                  | . "do" "end of line"
+  335                  | . %empty  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
 
-State 394
+    "end of line"  shift, and go to state 450
+    ","            shift, and go to state 451
+    ";"            shift, and go to state 452
+    "do"           shift, and go to state 453
 
-  350 whileConditionBreak: "," "end of line" .
+    $default  reduce using rule 335 (forConditionBreak)
 
-    $default  reduce using rule 350 (whileConditionBreak)
+    forConditionBreak  go to state 454
 
 
 State 395
 
-  351 whileConditionBreak: ";" "end of line" .
+  351 whileConditionBreak: "," "end of line" .
 
     $default  reduce using rule 351 (whileConditionBreak)
 
 
 State 396
 
-  355 whileConditionBreak: "then" "end of line" .
+  352 whileConditionBreak: ";" "end of line" .
 
-    $default  reduce using rule 355 (whileConditionBreak)
+    $default  reduce using rule 352 (whileConditionBreak)
 
 
 State 397
 
-  346 whileConditionBreak: "then" "," .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
-  356                    | "then" "," . "end of line"
-
-    "end of line"  shift, and go to state 454
+  356 whileConditionBreak: "then" "end of line" .
 
-    $default  reduce using rule 346 (whileConditionBreak)
+    $default  reduce using rule 356 (whileConditionBreak)
 
 
 State 398
 
-  347 whileConditionBreak: "then" ";" .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
-  357                    | "then" ";" . "end of line"
+  347 whileConditionBreak: "then" "," .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
+  357                    | "then" "," . "end of line"
 
     "end of line"  shift, and go to state 455
 
@@ -24843,25 +24861,25 @@ State 398
 
 State 399
 
-  352 whileConditionBreak: "do" "end of line" .
+  348 whileConditionBreak: "then" ";" .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
+  358                    | "then" ";" . "end of line"
 
-    $default  reduce using rule 352 (whileConditionBreak)
+    "end of line"  shift, and go to state 456
 
+    $default  reduce using rule 348 (whileConditionBreak)
 
-State 400
 
-  343 whileConditionBreak: "do" "," .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
-  353                    | "do" "," . "end of line"
+State 400
 
-    "end of line"  shift, and go to state 456
+  353 whileConditionBreak: "do" "end of line" .
 
-    $default  reduce using rule 343 (whileConditionBreak)
+    $default  reduce using rule 353 (whileConditionBreak)
 
 
 State 401
 
-  344 whileConditionBreak: "do" ";" .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
-  354                    | "do" ";" . "end of line"
+  344 whileConditionBreak: "do" "," .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
+  354                    | "do" "," . "end of line"
 
     "end of line"  shift, and go to state 457
 
@@ -24870,40 +24888,50 @@ State 401
 
 State 402
 
-  348 whileConditionBreak: "line comment" "end of line" .
+  345 whileConditionBreak: "do" ";" .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
+  355                    | "do" ";" . "end of line"
 
-    $default  reduce using rule 348 (whileConditionBreak)
+    "end of line"  shift, and go to state 458
+
+    $default  reduce using rule 345 (whileConditionBreak)
 
 
 State 403
 
-  338 whileBody: expressions .
+  349 whileConditionBreak: "line comment" "end of line" .
 
-    $default  reduce using rule 338 (whileBody)
+    $default  reduce using rule 349 (whileConditionBreak)
 
 
 State 404
 
-  337 whileControl: "while" condition whileConditionBreak whileBody . "end"
+  339 whileBody: expressions .
 
-    "end"  shift, and go to state 458
+    $default  reduce using rule 339 (whileBody)
 
 
 State 405
 
-  358 tryControl: "try" catchBody "catch" catchBody . "end"
+  338 whileControl: "while" condition whileConditionBreak whileBody . "end"
 
     "end"  shift, and go to state 459
 
 
 State 406
 
+  359 tryControl: "try" catchBody "catch" catchBody . "end"
+
+    "end"  shift, and go to state 460
+
+
+State 407
+
    60 functionArgs: "," ":" .
 
     $default  reduce using rule 60 (functionArgs)
 
 
-State 407
+State 408
 
    59 functionArgs: "," functionCall .  [",", ")", "}"]
    91 comparison: functionCall . rightComparable
@@ -24981,13 +25009,13 @@ State 407
   179         | functionCall . "." keywords
   181         | functionCall . listableEnd
   197         | functionCall . "(" functionArgs ")"
-  240 variableDeclaration: functionCall . "=" variable
-  241                    | functionCall . "=" functionCall
-  243                    | functionCall . "=" ":"
-  245                    | functionCall . "=" returnControl
-  249 assignable: functionCall . "." "identifier"
-  250           | functionCall . "." keywords
-  254           | functionCall . "(" functionArgs ")"
+  241 variableDeclaration: functionCall . "=" variable
+  242                    | functionCall . "=" functionCall
+  244                    | functionCall . "=" ":"
+  246                    | functionCall . "=" returnControl
+  250 assignable: functionCall . "." "identifier"
+  251           | functionCall . "." keywords
+  255           | functionCall . "(" functionArgs ")"
 
     "'"         shift, and go to state 114
     ":"         shift, and go to state 115
@@ -25030,7 +25058,7 @@ State 407
     listableEnd      go to state 149
 
 
-State 408
+State 409
 
    58 functionArgs: "," variable .  [",", ")", "}"]
    90 comparison: variable . rightComparable
@@ -25109,10 +25137,10 @@ State 408
   177         | variable . "." functionCall
   180         | variable . listableEnd
   196         | variable . "(" functionArgs ")"
-  246 assignable: variable . "." "identifier"
-  247           | variable . "." keywords
-  248           | variable . "." functionCall
-  253           | variable . "(" functionArgs ")"
+  247 assignable: variable . "." "identifier"
+  248           | variable . "." keywords
+  249           | variable . "." functionCall
+  254           | variable . "(" functionArgs ")"
 
     "'"         shift, and go to state 150
     ":"         shift, and go to state 115
@@ -25154,14 +25182,14 @@ State 408
     listableEnd      go to state 158
 
 
-State 409
+State 410
 
    61 functionArgs: "," variableDeclaration .
 
     $default  reduce using rule 61 (functionArgs)
 
 
-State 410
+State 411
 
    47 functionCall: . simpleFunctionCall
    48             | . "(" functionCall ")"
@@ -25235,30 +25263,30 @@ State 410
   217       | . "[" "end of line" matrixOrCellColumns "]"
   218       | . "[" "end of line" "]"
   219       | . "[" "]"
-  238 variableDeclaration: . assignable "=" variable
-  239                    | . assignable "=" functionCall
-  240                    | . functionCall "=" variable
-  241                    | . functionCall "=" functionCall
-  242                    | . assignable "=" ":"
-  243                    | . functionCall "=" ":"
-  244                    | . assignable "=" returnControl
-  245                    | . functionCall "=" returnControl
-  246 assignable: . variable "." "identifier"
-  247           | . variable "." keywords
-  248           | . variable "." functionCall
-  249           | . functionCall "." "identifier"
-  250           | . functionCall "." keywords
-  251           | . "identifier"
-  252           | . multipleResults
-  253           | . variable "(" functionArgs ")"
-  254           | . functionCall "(" functionArgs ")"
-  255 multipleResults: . "[" matrixOrCellColumns "]"
+  239 variableDeclaration: . assignable "=" variable
+  240                    | . assignable "=" functionCall
+  241                    | . functionCall "=" variable
+  242                    | . functionCall "=" functionCall
+  243                    | . assignable "=" ":"
+  244                    | . functionCall "=" ":"
+  245                    | . assignable "=" returnControl
+  246                    | . functionCall "=" returnControl
+  247 assignable: . variable "." "identifier"
+  248           | . variable "." keywords
+  249           | . variable "." functionCall
+  250           | . functionCall "." "identifier"
+  251           | . functionCall "." keywords
+  252           | . "identifier"
+  253           | . multipleResults
+  254           | . variable "(" functionArgs ")"
+  255           | . functionCall "(" functionArgs ")"
+  256 multipleResults: . "[" matrixOrCellColumns "]"
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
     "~ or @"      shift, and go to state 5
     "$"           shift, and go to state 6
-    ":"           shift, and go to state 460
+    ":"           shift, and go to state 461
     "("           shift, and go to state 9
     "["           shift, and go to state 10
     "{"           shift, and go to state 11
@@ -25272,40 +25300,40 @@ State 410
 
     $default  reduce using rule 62 (functionArgs)
 
-    functionCall         go to state 461
+    functionCall         go to state 462
     simpleFunctionCall   go to state 37
     comparison           go to state 39
     operation            go to state 40
-    variable             go to state 462
+    variable             go to state 463
     cell                 go to state 42
     matrix               go to state 43
-    variableDeclaration  go to state 463
+    variableDeclaration  go to state 464
     assignable           go to state 45
     multipleResults      go to state 46
 
 
-State 411
+State 412
 
    49 simpleFunctionCall: "identifier" "(" functionArgs ")" .
 
     $default  reduce using rule 49 (simpleFunctionCall)
 
 
-State 412
+State 413
 
    50 simpleFunctionCall: "identifier" "{" functionArgs "}" .
 
     $default  reduce using rule 50 (simpleFunctionCall)
 
 
-State 413
+State 414
 
    45 implicitCallable: implicitCallable "." "identifier" .
 
     $default  reduce using rule 45 (implicitCallable)
 
 
-State 414
+State 415
 
    11 recursiveExpression: recursiveExpression expression "line comment" expressionLineBreak .  ["end of file", error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "else", "elseif", "end", "select", "switch", "case", "otherwise", "function", "endfunction", "for", "while", "break", "continue", "try", "catch", "return", "string", "identifier", "integer", "float", "number", "line comment"]
    17 expressionLineBreak: expressionLineBreak . ";"
@@ -25319,16 +25347,16 @@ State 414
     $default  reduce using rule 11 (recursiveExpression)
 
 
-State 415
+State 416
 
   197 variable: functionCall "(" functionArgs ")" .  ["end of file", "end of line", "'", ",", ":", ";", "(", ")", "}", ".", ".'", "+", "-", "*", ".*", ".*.", "*.", "/", "./", "/.", "./.", "\\", ".\\", "\\.", ".\\.", "** or ^", ".^", "==", "<> or ~=", "<", "<=", ">", ">=", "&", "&&", "|", "||", "else", "elseif", "end", "case", "otherwise", "endfunction", "catch", "line comment"]
-  254 assignable: functionCall "(" functionArgs ")" .  ["="]
+  255 assignable: functionCall "(" functionArgs ")" .  ["="]
 
-    "="       reduce using rule 254 (assignable)
+    "="       reduce using rule 255 (assignable)
     $default  reduce using rule 197 (variable)
 
 
-State 416
+State 417
 
    91 comparison: functionCall . rightComparable
    92 rightComparable: . "&" variable
@@ -25474,7 +25502,7 @@ State 416
     Conflict between rule 171 and token "||" resolved as reduce ("||" < COLON).
 
 
-State 417
+State 418
 
    90 comparison: variable . rightComparable
    92 rightComparable: . "&" variable
@@ -25621,16 +25649,16 @@ State 417
     Conflict between rule 170 and token "||" resolved as reduce ("||" < COLON).
 
 
-State 418
+State 419
 
   196 variable: variable "(" functionArgs ")" .  ["end of file", "end of line", "'", ",", ":", ";", "(", ")", "}", ".", ".'", "+", "-", "*", ".*", ".*.", "*.", "/", "./", "/.", "./.", "\\", ".\\", "\\.", ".\\.", "** or ^", ".^", "==", "<> or ~=", "<", "<=", ">", ">=", "&", "&&", "|", "||", "else", "elseif", "end", "case", "otherwise", "endfunction", "catch", "line comment"]
-  253 assignable: variable "(" functionArgs ")" .  ["="]
+  254 assignable: variable "(" functionArgs ")" .  ["="]
 
-    "="       reduce using rule 253 (assignable)
+    "="       reduce using rule 254 (assignable)
     $default  reduce using rule 196 (variable)
 
 
-State 419
+State 420
 
    49 simpleFunctionCall: "identifier" . "(" functionArgs ")"
    50                   | "identifier" . "{" functionArgs "}"
@@ -25641,48 +25669,48 @@ State 419
     "{"  shift, and go to state 97
 
 
-State 420
+State 421
 
    48 functionCall: "(" functionCall . ")"
 
     ")"  shift, and go to state 169
 
 
-State 421
+State 422
 
-  299 selectConditionBreak: "," "end of line" .
+  300 selectConditionBreak: "," "end of line" .
 
-    $default  reduce using rule 299 (selectConditionBreak)
+    $default  reduce using rule 300 (selectConditionBreak)
 
 
-State 422
+State 423
 
-  300 selectConditionBreak: ";" "end of line" .
+  301 selectConditionBreak: ";" "end of line" .
 
-    $default  reduce using rule 300 (selectConditionBreak)
+    $default  reduce using rule 301 (selectConditionBreak)
 
 
-State 423
+State 424
 
-  285 selectControl: select selectable "line comment" selectConditionBreak . casesControl "end"
-  286              | select selectable "line comment" selectConditionBreak . casesControl defaultCase elseBody "end"
-  303 casesControl: . "case" variable caseControlBreak caseBody
-  304             | . "case" functionCall caseControlBreak caseBody
-  305             | . comments "case" variable caseControlBreak caseBody
-  306             | . comments "case" functionCall caseControlBreak caseBody
-  307             | . casesControl "case" variable caseControlBreak caseBody
-  308             | . casesControl "case" functionCall caseControlBreak caseBody
-  369 comments: . "line comment" "end of line"
-  370         | . comments "line comment" "end of line"
+  286 selectControl: select selectable "line comment" selectConditionBreak . casesControl "end"
+  287              | select selectable "line comment" selectConditionBreak . casesControl defaultCase elseBody "end"
+  304 casesControl: . "case" variable caseControlBreak caseBody
+  305             | . "case" functionCall caseControlBreak caseBody
+  306             | . comments "case" variable caseControlBreak caseBody
+  307             | . comments "case" functionCall caseControlBreak caseBody
+  308             | . casesControl "case" variable caseControlBreak caseBody
+  309             | . casesControl "case" functionCall caseControlBreak caseBody
+  370 comments: . "line comment" "end of line"
+  371         | . comments "line comment" "end of line"
 
-    "case"          shift, and go to state 424
-    "line comment"  shift, and go to state 425
+    "case"          shift, and go to state 425
+    "line comment"  shift, and go to state 426
 
-    casesControl  go to state 464
-    comments      go to state 427
+    casesControl  go to state 465
+    comments      go to state 428
 
 
-State 424
+State 425
 
    47 functionCall: . simpleFunctionCall
    48             | . "(" functionCall ")"
@@ -25751,8 +25779,8 @@ State 424
   217       | . "[" "end of line" matrixOrCellColumns "]"
   218       | . "[" "end of line" "]"
   219       | . "[" "]"
-  303 casesControl: "case" . variable caseControlBreak caseBody
-  304             | "case" . functionCall caseControlBreak caseBody
+  304 casesControl: "case" . variable caseControlBreak caseBody
+  305             | "case" . functionCall caseControlBreak caseBody
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -25769,113 +25797,113 @@ State 424
     "float"       shift, and go to state 27
     "number"      shift, and go to state 28
 
-    functionCall        go to state 465
+    functionCall        go to state 466
     simpleFunctionCall  go to state 37
     comparison          go to state 39
     operation           go to state 40
-    variable            go to state 466
+    variable            go to state 467
     cell                go to state 42
     matrix              go to state 43
 
 
-State 425
+State 426
 
-  369 comments: "line comment" . "end of line"
+  370 comments: "line comment" . "end of line"
 
-    "end of line"  shift, and go to state 467
+    "end of line"  shift, and go to state 468
 
 
-State 426
+State 427
 
-  274 else: . "else"
-  275     | . "else" ","
-  276     | . "else" ";"
-  277     | . "else" "end of line"
-  278     | . "else" "," "end of line"
-  279     | . "else" ";" "end of line"
-  283 selectControl: select selectable selectConditionBreak casesControl . "end"
-  284              | select selectable selectConditionBreak casesControl . defaultCase elseBody "end"
-  289 defaultCase: . else
-  290            | . "otherwise"
-  291            | . "otherwise" ","
-  292            | . "otherwise" ";"
-  293            | . "otherwise" "end of line"
-  294            | . "otherwise" "," "end of line"
-  295            | . "otherwise" ";" "end of line"
-  307 casesControl: casesControl . "case" variable caseControlBreak caseBody
-  308             | casesControl . "case" functionCall caseControlBreak caseBody
-
-    "else"       shift, and go to state 433
-    "end"        shift, and go to state 468
-    "case"       shift, and go to state 469
-    "otherwise"  shift, and go to state 470
-
-    else         go to state 471
-    defaultCase  go to state 472
+  275 else: . "else"
+  276     | . "else" ","
+  277     | . "else" ";"
+  278     | . "else" "end of line"
+  279     | . "else" "," "end of line"
+  280     | . "else" ";" "end of line"
+  284 selectControl: select selectable selectConditionBreak casesControl . "end"
+  285              | select selectable selectConditionBreak casesControl . defaultCase elseBody "end"
+  290 defaultCase: . else
+  291            | . "otherwise"
+  292            | . "otherwise" ","
+  293            | . "otherwise" ";"
+  294            | . "otherwise" "end of line"
+  295            | . "otherwise" "," "end of line"
+  296            | . "otherwise" ";" "end of line"
+  308 casesControl: casesControl . "case" variable caseControlBreak caseBody
+  309             | casesControl . "case" functionCall caseControlBreak caseBody
+
+    "else"       shift, and go to state 434
+    "end"        shift, and go to state 469
+    "case"       shift, and go to state 470
+    "otherwise"  shift, and go to state 471
+
+    else         go to state 472
+    defaultCase  go to state 473
 
 
-State 427
+State 428
 
-  305 casesControl: comments . "case" variable caseControlBreak caseBody
-  306             | comments . "case" functionCall caseControlBreak caseBody
-  370 comments: comments . "line comment" "end of line"
+  306 casesControl: comments . "case" variable caseControlBreak caseBody
+  307             | comments . "case" functionCall caseControlBreak caseBody
+  371 comments: comments . "line comment" "end of line"
 
-    "case"          shift, and go to state 473
-    "line comment"  shift, and go to state 474
+    "case"          shift, and go to state 474
+    "line comment"  shift, and go to state 475
 
 
-State 428
+State 429
 
   197 variable: functionCall "(" functionArgs ")" .
 
     $default  reduce using rule 197 (variable)
 
 
-State 429
+State 430
 
   196 variable: variable "(" functionArgs ")" .
 
     $default  reduce using rule 196 (variable)
 
 
-State 430
+State 431
 
   215 matrix: "[" "end of line" matrixOrCellLines matrixOrCellColumns "]" .
 
     $default  reduce using rule 215 (matrix)
 
 
-State 431
+State 432
 
   207 cell: "{" "end of line" matrixOrCellLines matrixOrCellColumns "}" .
 
     $default  reduce using rule 207 (cell)
 
 
-State 432
+State 433
 
-  270 then: ifConditionBreak "then" "end of line" .
+  271 then: ifConditionBreak "then" "end of line" .
 
-    $default  reduce using rule 270 (then)
+    $default  reduce using rule 271 (then)
 
 
-State 433
+State 434
 
-  274 else: "else" .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
-  275     | "else" . ","
-  276     | "else" . ";"
-  277     | "else" . "end of line"
-  278     | "else" . "," "end of line"
-  279     | "else" . ";" "end of line"
+  275 else: "else" .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
+  276     | "else" . ","
+  277     | "else" . ";"
+  278     | "else" . "end of line"
+  279     | "else" . "," "end of line"
+  280     | "else" . ";" "end of line"
 
-    "end of line"  shift, and go to state 475
-    ","            shift, and go to state 476
-    ";"            shift, and go to state 477
+    "end of line"  shift, and go to state 476
+    ","            shift, and go to state 477
+    ";"            shift, and go to state 478
 
-    $default  reduce using rule 274 (else)
+    $default  reduce using rule 275 (else)
 
 
-State 434
+State 435
 
    47 functionCall: . simpleFunctionCall
    48             | . "(" functionCall ")"
@@ -25946,9 +25974,9 @@ State 434
   217       | . "[" "end of line" matrixOrCellColumns "]"
   218       | . "[" "end of line" "]"
   219       | . "[" "]"
-  280 elseIfControl: "elseif" . condition then thenBody
-  281              | "elseif" . condition then thenBody else elseBody
-  282              | "elseif" . condition then thenBody elseIfControl
+  281 elseIfControl: "elseif" . condition then thenBody
+  282              | "elseif" . condition then thenBody else elseBody
+  283              | "elseif" . condition then thenBody elseIfControl
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -25967,7 +25995,7 @@ State 434
 
     functionCall        go to state 78
     simpleFunctionCall  go to state 37
-    condition           go to state 478
+    condition           go to state 479
     comparison          go to state 39
     operation           go to state 40
     variable            go to state 80
@@ -25975,14 +26003,14 @@ State 434
     matrix              go to state 43
 
 
-State 435
+State 436
 
-  256 ifControl: "if" condition then thenBody "end" .
+  257 ifControl: "if" condition then thenBody "end" .
 
-    $default  reduce using rule 256 (ifControl)
+    $default  reduce using rule 257 (ifControl)
 
 
-State 436
+State 437
 
     5 expressions: . recursiveExpression
     6            | . recursiveExpression expression
@@ -26085,44 +26113,44 @@ State 436
   217       | . "[" "end of line" matrixOrCellColumns "]"
   218       | . "[" "end of line" "]"
   219       | . "[" "]"
-  238 variableDeclaration: . assignable "=" variable
-  239                    | . assignable "=" functionCall
-  240                    | . functionCall "=" variable
-  241                    | . functionCall "=" functionCall
-  242                    | . assignable "=" ":"
-  243                    | . functionCall "=" ":"
-  244                    | . assignable "=" returnControl
-  245                    | . functionCall "=" returnControl
-  246 assignable: . variable "." "identifier"
-  247           | . variable "." keywords
-  248           | . variable "." functionCall
-  249           | . functionCall "." "identifier"
-  250           | . functionCall "." keywords
-  251           | . "identifier"
-  252           | . multipleResults
-  253           | . variable "(" functionArgs ")"
-  254           | . functionCall "(" functionArgs ")"
-  255 multipleResults: . "[" matrixOrCellColumns "]"
-  256 ifControl: . "if" condition then thenBody "end"
-  257          | . "if" condition then thenBody else elseBody "end"
-  257          | "if" condition then thenBody else . elseBody "end"
-  258          | . "if" condition then thenBody elseIfControl "end"
-  261 elseBody: . expressions
-  262         | . %empty  ["end"]
-  283 selectControl: . select selectable selectConditionBreak casesControl "end"
-  284              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
-  285              | . select selectable "line comment" selectConditionBreak casesControl "end"
-  286              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
-  287 select: . "select"
-  288       | . "switch"
-  323 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
-  324           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
-  337 whileControl: . "while" condition whileConditionBreak whileBody "end"
-  358 tryControl: . "try" catchBody "catch" catchBody "end"
-  359           | . "try" catchBody "end"
-  366 returnControl: . "return"
-  367              | . "return" variable
-  368              | . "return" functionCall
+  239 variableDeclaration: . assignable "=" variable
+  240                    | . assignable "=" functionCall
+  241                    | . functionCall "=" variable
+  242                    | . functionCall "=" functionCall
+  243                    | . assignable "=" ":"
+  244                    | . functionCall "=" ":"
+  245                    | . assignable "=" returnControl
+  246                    | . functionCall "=" returnControl
+  247 assignable: . variable "." "identifier"
+  248           | . variable "." keywords
+  249           | . variable "." functionCall
+  250           | . functionCall "." "identifier"
+  251           | . functionCall "." keywords
+  252           | . "identifier"
+  253           | . multipleResults
+  254           | . variable "(" functionArgs ")"
+  255           | . functionCall "(" functionArgs ")"
+  256 multipleResults: . "[" matrixOrCellColumns "]"
+  257 ifControl: . "if" condition then thenBody "end"
+  258          | . "if" condition then thenBody else elseBody "end"
+  258          | "if" condition then thenBody else . elseBody "end"
+  259          | . "if" condition then thenBody elseIfControl "end"
+  262 elseBody: . expressions
+  263         | . %empty  ["end"]
+  284 selectControl: . select selectable selectConditionBreak casesControl "end"
+  285              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
+  286              | . select selectable "line comment" selectConditionBreak casesControl "end"
+  287              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
+  288 select: . "select"
+  289       | . "switch"
+  324 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
+  325           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
+  338 whileControl: . "while" condition whileConditionBreak whileBody "end"
+  359 tryControl: . "try" catchBody "catch" catchBody "end"
+  360           | . "try" catchBody "end"
+  367 returnControl: . "return"
+  368              | . "return" variable
+  369              | . "return" functionCall
 
     error           shift, and go to state 1
     "%t or %T"      shift, and go to state 3
@@ -26151,9 +26179,9 @@ State 436
     "number"        shift, and go to state 28
     "line comment"  shift, and go to state 29
 
-    "end"  reduce using rule 262 (elseBody)
+    "end"  reduce using rule 263 (elseBody)
 
-    expressions           go to state 479
+    expressions           go to state 480
     recursiveExpression   go to state 32
     expression            go to state 34
     implicitFunctionCall  go to state 35
@@ -26169,7 +26197,7 @@ State 436
     assignable            go to state 45
     multipleResults       go to state 46
     ifControl             go to state 47
-    elseBody              go to state 480
+    elseBody              go to state 481
     selectControl         go to state 48
     select                go to state 49
     forControl            go to state 50
@@ -26178,14 +26206,14 @@ State 436
     returnControl         go to state 53
 
 
-State 437
+State 438
 
-  258 ifControl: "if" condition then thenBody elseIfControl . "end"
+  259 ifControl: "if" condition then thenBody elseIfControl . "end"
 
-    "end"  shift, and go to state 481
+    "end"  shift, and go to state 482
 
 
-State 438
+State 439
 
    69 functionDeclaration: "function" "[" "]" "=" "identifier" . functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
    73                    | "function" "[" "]" "=" "identifier" . functionDeclarationArguments functionDeclarationBreak functionBody "end"
@@ -26197,32 +26225,32 @@ State 438
 
     $default  reduce using rule 78 (functionDeclarationArguments)
 
-    functionDeclarationArguments  go to state 482
+    functionDeclarationArguments  go to state 483
 
 
-State 439
+State 440
 
    68 functionDeclaration: "function" "[" functionDeclarationReturns "]" "=" . "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
    72                    | "function" "[" functionDeclarationReturns "]" "=" . "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end"
 
-    "identifier"  shift, and go to state 483
+    "identifier"  shift, and go to state 484
 
 
-State 440
+State 441
 
    79 idList: idList "," "identifier" .
 
     $default  reduce using rule 79 (idList)
 
 
-State 441
+State 442
 
    76 functionDeclarationArguments: "(" idList ")" .
 
     $default  reduce using rule 76 (functionDeclarationArguments)
 
 
-State 442
+State 443
 
    67 functionDeclaration: "function" "identifier" "=" "identifier" functionDeclarationArguments . functionDeclarationBreak functionBody "endfunction"
    71                    | "function" "identifier" "=" "identifier" functionDeclarationArguments . functionDeclarationBreak functionBody "end"
@@ -26231,101 +26259,101 @@ State 442
    83                         | . ";" "end of line"
    84                         | . ","
    85                         | . "," "end of line"
-  371 lineEnd: . "end of line"
-  372        | . "line comment" "end of line"
+  372 lineEnd: . "end of line"
+  373        | . "line comment" "end of line"
 
-    "end of line"   shift, and go to state 384
-    ","             shift, and go to state 385
-    ";"             shift, and go to state 386
-    "line comment"  shift, and go to state 387
+    "end of line"   shift, and go to state 385
+    ","             shift, and go to state 386
+    ";"             shift, and go to state 387
+    "line comment"  shift, and go to state 388
 
-    functionDeclarationBreak  go to state 484
-    lineEnd                   go to state 389
+    functionDeclarationBreak  go to state 485
+    lineEnd                   go to state 390
 
 
-State 443
+State 444
 
    85 functionDeclarationBreak: "," "end of line" .
 
     $default  reduce using rule 85 (functionDeclarationBreak)
 
 
-State 444
+State 445
 
    83 functionDeclarationBreak: ";" "end of line" .
 
     $default  reduce using rule 83 (functionDeclarationBreak)
 
 
-State 445
+State 446
 
-  372 lineEnd: "line comment" "end of line" .
+  373 lineEnd: "line comment" "end of line" .
 
-    $default  reduce using rule 372 (lineEnd)
+    $default  reduce using rule 373 (lineEnd)
 
 
-State 446
+State 447
 
    86 functionBody: expressions .
 
     $default  reduce using rule 86 (functionBody)
 
 
-State 447
+State 448
 
    70 functionDeclaration: "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody . "endfunction"
    74                    | "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody . "end"
 
-    "end"          shift, and go to state 485
-    "endfunction"  shift, and go to state 486
-
-
-State 448
-
-  324 forControl: "for" "(" "identifier" "=" forIterator . ")" forConditionBreak forBody "end"
-
-    ")"  shift, and go to state 487
+    "end"          shift, and go to state 486
+    "endfunction"  shift, and go to state 487
 
 
 State 449
 
-  327 forConditionBreak: "end of line" .
+  325 forControl: "for" "(" "identifier" "=" forIterator . ")" forConditionBreak forBody "end"
 
-    $default  reduce using rule 327 (forConditionBreak)
+    ")"  shift, and go to state 488
 
 
 State 450
 
-  330 forConditionBreak: "," .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
-  331                  | "," . "end of line"
+  328 forConditionBreak: "end of line" .
 
-    "end of line"  shift, and go to state 488
-
-    $default  reduce using rule 330 (forConditionBreak)
+    $default  reduce using rule 328 (forConditionBreak)
 
 
 State 451
 
-  328 forConditionBreak: ";" .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
-  329                  | ";" . "end of line"
+  331 forConditionBreak: "," .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
+  332                  | "," . "end of line"
 
     "end of line"  shift, and go to state 489
 
-    $default  reduce using rule 328 (forConditionBreak)
+    $default  reduce using rule 331 (forConditionBreak)
 
 
 State 452
 
-  332 forConditionBreak: "do" .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
-  333                  | "do" . "end of line"
+  329 forConditionBreak: ";" .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
+  330                  | ";" . "end of line"
 
     "end of line"  shift, and go to state 490
 
-    $default  reduce using rule 332 (forConditionBreak)
+    $default  reduce using rule 329 (forConditionBreak)
 
 
 State 453
 
+  333 forConditionBreak: "do" .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
+  334                  | "do" . "end of line"
+
+    "end of line"  shift, and go to state 491
+
+    $default  reduce using rule 333 (forConditionBreak)
+
+
+State 454
+
     5 expressions: . recursiveExpression
     6            | . recursiveExpression expression
     7            | . recursiveExpression expression "line comment"
@@ -26427,44 +26455,44 @@ State 453
   217       | . "[" "end of line" matrixOrCellColumns "]"
   218       | . "[" "end of line" "]"
   219       | . "[" "]"
-  238 variableDeclaration: . assignable "=" variable
-  239                    | . assignable "=" functionCall
-  240                    | . functionCall "=" variable
-  241                    | . functionCall "=" functionCall
-  242                    | . assignable "=" ":"
-  243                    | . functionCall "=" ":"
-  244                    | . assignable "=" returnControl
-  245                    | . functionCall "=" returnControl
-  246 assignable: . variable "." "identifier"
-  247           | . variable "." keywords
-  248           | . variable "." functionCall
-  249           | . functionCall "." "identifier"
-  250           | . functionCall "." keywords
-  251           | . "identifier"
-  252           | . multipleResults
-  253           | . variable "(" functionArgs ")"
-  254           | . functionCall "(" functionArgs ")"
-  255 multipleResults: . "[" matrixOrCellColumns "]"
-  256 ifControl: . "if" condition then thenBody "end"
-  257          | . "if" condition then thenBody else elseBody "end"
-  258          | . "if" condition then thenBody elseIfControl "end"
-  283 selectControl: . select selectable selectConditionBreak casesControl "end"
-  284              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
-  285              | . select selectable "line comment" selectConditionBreak casesControl "end"
-  286              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
-  287 select: . "select"
-  288       | . "switch"
-  323 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
-  323           | "for" "identifier" "=" forIterator forConditionBreak . forBody "end"
-  324           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
-  335 forBody: . expressions
-  336        | . %empty  ["end"]
-  337 whileControl: . "while" condition whileConditionBreak whileBody "end"
-  358 tryControl: . "try" catchBody "catch" catchBody "end"
-  359           | . "try" catchBody "end"
-  366 returnControl: . "return"
-  367              | . "return" variable
-  368              | . "return" functionCall
+  239 variableDeclaration: . assignable "=" variable
+  240                    | . assignable "=" functionCall
+  241                    | . functionCall "=" variable
+  242                    | . functionCall "=" functionCall
+  243                    | . assignable "=" ":"
+  244                    | . functionCall "=" ":"
+  245                    | . assignable "=" returnControl
+  246                    | . functionCall "=" returnControl
+  247 assignable: . variable "." "identifier"
+  248           | . variable "." keywords
+  249           | . variable "." functionCall
+  250           | . functionCall "." "identifier"
+  251           | . functionCall "." keywords
+  252           | . "identifier"
+  253           | . multipleResults
+  254           | . variable "(" functionArgs ")"
+  255           | . functionCall "(" functionArgs ")"
+  256 multipleResults: . "[" matrixOrCellColumns "]"
+  257 ifControl: . "if" condition then thenBody "end"
+  258          | . "if" condition then thenBody else elseBody "end"
+  259          | . "if" condition then thenBody elseIfControl "end"
+  284 selectControl: . select selectable selectConditionBreak casesControl "end"
+  285              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
+  286              | . select selectable "line comment" selectConditionBreak casesControl "end"
+  287              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
+  288 select: . "select"
+  289       | . "switch"
+  324 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
+  324           | "for" "identifier" "=" forIterator forConditionBreak . forBody "end"
+  325           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
+  336 forBody: . expressions
+  337        | . %empty  ["end"]
+  338 whileControl: . "while" condition whileConditionBreak whileBody "end"
+  359 tryControl: . "try" catchBody "catch" catchBody "end"
+  360           | . "try" catchBody "end"
+  367 returnControl: . "return"
+  368              | . "return" variable
+  369              | . "return" functionCall
 
     error           shift, and go to state 1
     "%t or %T"      shift, and go to state 3
@@ -26493,9 +26521,9 @@ State 453
     "number"        shift, and go to state 28
     "line comment"  shift, and go to state 29
 
-    "end"  reduce using rule 336 (forBody)
+    "end"  reduce using rule 337 (forBody)
 
-    expressions           go to state 491
+    expressions           go to state 492
     recursiveExpression   go to state 32
     expression            go to state 34
     implicitFunctionCall  go to state 35
@@ -26514,62 +26542,62 @@ State 453
     selectControl         go to state 48
     select                go to state 49
     forControl            go to state 50
-    forBody               go to state 492
+    forBody               go to state 493
     whileControl          go to state 51
     tryControl            go to state 52
     returnControl         go to state 53
 
 
-State 454
-
-  356 whileConditionBreak: "then" "," "end of line" .
-
-    $default  reduce using rule 356 (whileConditionBreak)
-
-
 State 455
 
-  357 whileConditionBreak: "then" ";" "end of line" .
+  357 whileConditionBreak: "then" "," "end of line" .
 
     $default  reduce using rule 357 (whileConditionBreak)
 
 
 State 456
 
-  353 whileConditionBreak: "do" "," "end of line" .
+  358 whileConditionBreak: "then" ";" "end of line" .
 
-    $default  reduce using rule 353 (whileConditionBreak)
+    $default  reduce using rule 358 (whileConditionBreak)
 
 
 State 457
 
-  354 whileConditionBreak: "do" ";" "end of line" .
+  354 whileConditionBreak: "do" "," "end of line" .
 
     $default  reduce using rule 354 (whileConditionBreak)
 
 
 State 458
 
-  337 whileControl: "while" condition whileConditionBreak whileBody "end" .
+  355 whileConditionBreak: "do" ";" "end of line" .
 
-    $default  reduce using rule 337 (whileControl)
+    $default  reduce using rule 355 (whileConditionBreak)
 
 
 State 459
 
-  358 tryControl: "try" catchBody "catch" catchBody "end" .
+  338 whileControl: "while" condition whileConditionBreak whileBody "end" .
 
-    $default  reduce using rule 358 (tryControl)
+    $default  reduce using rule 338 (whileControl)
 
 
 State 460
 
+  359 tryControl: "try" catchBody "catch" catchBody "end" .
+
+    $default  reduce using rule 359 (tryControl)
+
+
+State 461
+
    65 functionArgs: functionArgs "," ":" .
 
     $default  reduce using rule 65 (functionArgs)
 
 
-State 461
+State 462
 
    64 functionArgs: functionArgs "," functionCall .  [",", ")", "}"]
    91 comparison: functionCall . rightComparable
@@ -26647,13 +26675,13 @@ State 461
   179         | functionCall . "." keywords
   181         | functionCall . listableEnd
   197         | functionCall . "(" functionArgs ")"
-  240 variableDeclaration: functionCall . "=" variable
-  241                    | functionCall . "=" functionCall
-  243                    | functionCall . "=" ":"
-  245                    | functionCall . "=" returnControl
-  249 assignable: functionCall . "." "identifier"
-  250           | functionCall . "." keywords
-  254           | functionCall . "(" functionArgs ")"
+  241 variableDeclaration: functionCall . "=" variable
+  242                    | functionCall . "=" functionCall
+  244                    | functionCall . "=" ":"
+  246                    | functionCall . "=" returnControl
+  250 assignable: functionCall . "." "identifier"
+  251           | functionCall . "." keywords
+  255           | functionCall . "(" functionArgs ")"
 
     "'"         shift, and go to state 114
     ":"         shift, and go to state 115
@@ -26696,7 +26724,7 @@ State 461
     listableEnd      go to state 149
 
 
-State 462
+State 463
 
    63 functionArgs: functionArgs "," variable .  [",", ")", "}"]
    90 comparison: variable . rightComparable
@@ -26775,10 +26803,10 @@ State 462
   177         | variable . "." functionCall
   180         | variable . listableEnd
   196         | variable . "(" functionArgs ")"
-  246 assignable: variable . "." "identifier"
-  247           | variable . "." keywords
-  248           | variable . "." functionCall
-  253           | variable . "(" functionArgs ")"
+  247 assignable: variable . "." "identifier"
+  248           | variable . "." keywords
+  249           | variable . "." functionCall
+  254           | variable . "(" functionArgs ")"
 
     "'"         shift, and go to state 150
     ":"         shift, and go to state 115
@@ -26820,43 +26848,43 @@ State 462
     listableEnd      go to state 158
 
 
-State 463
+State 464
 
    66 functionArgs: functionArgs "," variableDeclaration .
 
     $default  reduce using rule 66 (functionArgs)
 
 
-State 464
+State 465
 
-  274 else: . "else"
-  275     | . "else" ","
-  276     | . "else" ";"
-  277     | . "else" "end of line"
-  278     | . "else" "," "end of line"
-  279     | . "else" ";" "end of line"
-  285 selectControl: select selectable "line comment" selectConditionBreak casesControl . "end"
-  286              | select selectable "line comment" selectConditionBreak casesControl . defaultCase elseBody "end"
-  289 defaultCase: . else
-  290            | . "otherwise"
-  291            | . "otherwise" ","
-  292            | . "otherwise" ";"
-  293            | . "otherwise" "end of line"
-  294            | . "otherwise" "," "end of line"
-  295            | . "otherwise" ";" "end of line"
-  307 casesControl: casesControl . "case" variable caseControlBreak caseBody
-  308             | casesControl . "case" functionCall caseControlBreak caseBody
-
-    "else"       shift, and go to state 433
-    "end"        shift, and go to state 493
-    "case"       shift, and go to state 469
-    "otherwise"  shift, and go to state 470
-
-    else         go to state 471
-    defaultCase  go to state 494
+  275 else: . "else"
+  276     | . "else" ","
+  277     | . "else" ";"
+  278     | . "else" "end of line"
+  279     | . "else" "," "end of line"
+  280     | . "else" ";" "end of line"
+  286 selectControl: select selectable "line comment" selectConditionBreak casesControl . "end"
+  287              | select selectable "line comment" selectConditionBreak casesControl . defaultCase elseBody "end"
+  290 defaultCase: . else
+  291            | . "otherwise"
+  292            | . "otherwise" ","
+  293            | . "otherwise" ";"
+  294            | . "otherwise" "end of line"
+  295            | . "otherwise" "," "end of line"
+  296            | . "otherwise" ";" "end of line"
+  308 casesControl: casesControl . "case" variable caseControlBreak caseBody
+  309             | casesControl . "case" functionCall caseControlBreak caseBody
+
+    "else"       shift, and go to state 434
+    "end"        shift, and go to state 494
+    "case"       shift, and go to state 470
+    "otherwise"  shift, and go to state 471
+
+    else         go to state 472
+    defaultCase  go to state 495
 
 
-State 465
+State 466
 
    91 comparison: functionCall . rightComparable
    92 rightComparable: . "&" variable
@@ -26933,25 +26961,25 @@ State 465
   179         | functionCall . "." keywords
   181         | functionCall . listableEnd
   197         | functionCall . "(" functionArgs ")"
-  304 casesControl: "case" functionCall . caseControlBreak caseBody
-  311 caseControlBreak: . "then"
-  312                 | . ","
-  313                 | . ";"
-  314                 | . "end of line"
-  315                 | . "then" "end of line"
-  316                 | . "," "end of line"
-  317                 | . ";" "end of line"
-  318                 | . "then" ","
-  319                 | . "then" "," "end of line"
-  320                 | . "then" ";"
-  321                 | . "then" ";" "end of line"
-  322                 | . %empty  [error, "%t or %T", "%f or %F", "~ or @", "$", "[", "{", "if", "else", "end", "select", "switch", "case", "otherwise", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
-
-    "end of line"  shift, and go to state 495
+  305 casesControl: "case" functionCall . caseControlBreak caseBody
+  312 caseControlBreak: . "then"
+  313                 | . ","
+  314                 | . ";"
+  315                 | . "end of line"
+  316                 | . "then" "end of line"
+  317                 | . "," "end of line"
+  318                 | . ";" "end of line"
+  319                 | . "then" ","
+  320                 | . "then" "," "end of line"
+  321                 | . "then" ";"
+  322                 | . "then" ";" "end of line"
+  323                 | . %empty  [error, "%t or %T", "%f or %F", "~ or @", "$", "[", "{", "if", "else", "end", "select", "switch", "case", "otherwise", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
+
+    "end of line"  shift, and go to state 496
     "'"            shift, and go to state 114
-    ","            shift, and go to state 496
+    ","            shift, and go to state 497
     ":"            shift, and go to state 115
-    ";"            shift, and go to state 497
+    ";"            shift, and go to state 498
     "("            shift, and go to state 164
     "."            shift, and go to state 165
     ".'"           shift, and go to state 118
@@ -26981,22 +27009,22 @@ State 465
     "&&"           shift, and go to state 142
     "|"            shift, and go to state 143
     "||"           shift, and go to state 144
-    "then"         shift, and go to state 498
+    "then"         shift, and go to state 499
 
-    $default  reduce using rule 322 (caseControlBreak)
+    $default  reduce using rule 323 (caseControlBreak)
 
     rightComparable   go to state 146
     rightOperand      go to state 147
     listableBegin     go to state 148
     listableEnd       go to state 149
-    caseControlBreak  go to state 499
+    caseControlBreak  go to state 500
 
-    Conflict between rule 322 and token "(" resolved as shift (CONTROLBREAK < "(").
-    Conflict between rule 322 and token "+" resolved as shift (CONTROLBREAK < "+").
-    Conflict between rule 322 and token "-" resolved as shift (CONTROLBREAK < "-").
+    Conflict between rule 323 and token "(" resolved as shift (CONTROLBREAK < "(").
+    Conflict between rule 323 and token "+" resolved as shift (CONTROLBREAK < "+").
+    Conflict between rule 323 and token "-" resolved as shift (CONTROLBREAK < "-").
 
 
-State 466
+State 467
 
    90 comparison: variable . rightComparable
    92 rightComparable: . "&" variable
@@ -27074,25 +27102,25 @@ State 466
   177         | variable . "." functionCall
   180         | variable . listableEnd
   196         | variable . "(" functionArgs ")"
-  303 casesControl: "case" variable . caseControlBreak caseBody
-  311 caseControlBreak: . "then"
-  312                 | . ","
-  313                 | . ";"
-  314                 | . "end of line"
-  315                 | . "then" "end of line"
-  316                 | . "," "end of line"
-  317                 | . ";" "end of line"
-  318                 | . "then" ","
-  319                 | . "then" "," "end of line"
-  320                 | . "then" ";"
-  321                 | . "then" ";" "end of line"
-  322                 | . %empty  [error, "%t or %T", "%f or %F", "~ or @", "$", "[", "{", "if", "else", "end", "select", "switch", "case", "otherwise", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
-
-    "end of line"  shift, and go to state 495
+  304 casesControl: "case" variable . caseControlBreak caseBody
+  312 caseControlBreak: . "then"
+  313                 | . ","
+  314                 | . ";"
+  315                 | . "end of line"
+  316                 | . "then" "end of line"
+  317                 | . "," "end of line"
+  318                 | . ";" "end of line"
+  319                 | . "then" ","
+  320                 | . "then" "," "end of line"
+  321                 | . "then" ";"
+  322                 | . "then" ";" "end of line"
+  323                 | . %empty  [error, "%t or %T", "%f or %F", "~ or @", "$", "[", "{", "if", "else", "end", "select", "switch", "case", "otherwise", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
+
+    "end of line"  shift, and go to state 496
     "'"            shift, and go to state 150
-    ","            shift, and go to state 496
+    ","            shift, and go to state 497
     ":"            shift, and go to state 115
-    ";"            shift, and go to state 497
+    ";"            shift, and go to state 498
     "("            shift, and go to state 166
     "."            shift, and go to state 167
     ".'"           shift, and go to state 153
@@ -27122,36 +27150,36 @@ State 466
     "&&"           shift, and go to state 142
     "|"            shift, and go to state 143
     "||"           shift, and go to state 144
-    "then"         shift, and go to state 498
+    "then"         shift, and go to state 499
 
-    $default  reduce using rule 322 (caseControlBreak)
+    $default  reduce using rule 323 (caseControlBreak)
 
     rightComparable   go to state 156
     rightOperand      go to state 157
     listableBegin     go to state 148
     listableEnd       go to state 158
-    caseControlBreak  go to state 500
+    caseControlBreak  go to state 501
 
-    Conflict between rule 322 and token "(" resolved as shift (CONTROLBREAK < "(").
-    Conflict between rule 322 and token "+" resolved as shift (CONTROLBREAK < "+").
-    Conflict between rule 322 and token "-" resolved as shift (CONTROLBREAK < "-").
+    Conflict between rule 323 and token "(" resolved as shift (CONTROLBREAK < "(").
+    Conflict between rule 323 and token "+" resolved as shift (CONTROLBREAK < "+").
+    Conflict between rule 323 and token "-" resolved as shift (CONTROLBREAK < "-").
 
 
-State 467
+State 468
 
-  369 comments: "line comment" "end of line" .
+  370 comments: "line comment" "end of line" .
 
-    $default  reduce using rule 369 (comments)
+    $default  reduce using rule 370 (comments)
 
 
-State 468
+State 469
 
-  283 selectControl: select selectable selectConditionBreak casesControl "end" .
+  284 selectControl: select selectable selectConditionBreak casesControl "end" .
 
-    $default  reduce using rule 283 (selectControl)
+    $default  reduce using rule 284 (selectControl)
 
 
-State 469
+State 470
 
    47 functionCall: . simpleFunctionCall
    48             | . "(" functionCall ")"
@@ -27220,8 +27248,8 @@ State 469
   217       | . "[" "end of line" matrixOrCellColumns "]"
   218       | . "[" "end of line" "]"
   219       | . "[" "]"
-  307 casesControl: casesControl "case" . variable caseControlBreak caseBody
-  308             | casesControl "case" . functionCall caseControlBreak caseBody
+  308 casesControl: casesControl "case" . variable caseControlBreak caseBody
+  309             | casesControl "case" . functionCall caseControlBreak caseBody
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -27238,39 +27266,39 @@ State 469
     "float"       shift, and go to state 27
     "number"      shift, and go to state 28
 
-    functionCall        go to state 501
+    functionCall        go to state 502
     simpleFunctionCall  go to state 37
     comparison          go to state 39
     operation           go to state 40
-    variable            go to state 502
+    variable            go to state 503
     cell                go to state 42
     matrix              go to state 43
 
 
-State 470
+State 471
 
-  290 defaultCase: "otherwise" .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
-  291            | "otherwise" . ","
-  292            | "otherwise" . ";"
-  293            | "otherwise" . "end of line"
-  294            | "otherwise" . "," "end of line"
-  295            | "otherwise" . ";" "end of line"
+  291 defaultCase: "otherwise" .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
+  292            | "otherwise" . ","
+  293            | "otherwise" . ";"
+  294            | "otherwise" . "end of line"
+  295            | "otherwise" . "," "end of line"
+  296            | "otherwise" . ";" "end of line"
 
-    "end of line"  shift, and go to state 503
-    ","            shift, and go to state 504
-    ";"            shift, and go to state 505
+    "end of line"  shift, and go to state 504
+    ","            shift, and go to state 505
+    ";"            shift, and go to state 506
 
-    $default  reduce using rule 290 (defaultCase)
+    $default  reduce using rule 291 (defaultCase)
 
 
-State 471
+State 472
 
-  289 defaultCase: else .
+  290 defaultCase: else .
 
-    $default  reduce using rule 289 (defaultCase)
+    $default  reduce using rule 290 (defaultCase)
 
 
-State 472
+State 473
 
     5 expressions: . recursiveExpression
     6            | . recursiveExpression expression
@@ -27373,44 +27401,44 @@ State 472
   217       | . "[" "end of line" matrixOrCellColumns "]"
   218       | . "[" "end of line" "]"
   219       | . "[" "]"
-  238 variableDeclaration: . assignable "=" variable
-  239                    | . assignable "=" functionCall
-  240                    | . functionCall "=" variable
-  241                    | . functionCall "=" functionCall
-  242                    | . assignable "=" ":"
-  243                    | . functionCall "=" ":"
-  244                    | . assignable "=" returnControl
-  245                    | . functionCall "=" returnControl
-  246 assignable: . variable "." "identifier"
-  247           | . variable "." keywords
-  248           | . variable "." functionCall
-  249           | . functionCall "." "identifier"
-  250           | . functionCall "." keywords
-  251           | . "identifier"
-  252           | . multipleResults
-  253           | . variable "(" functionArgs ")"
-  254           | . functionCall "(" functionArgs ")"
-  255 multipleResults: . "[" matrixOrCellColumns "]"
-  256 ifControl: . "if" condition then thenBody "end"
-  257          | . "if" condition then thenBody else elseBody "end"
-  258          | . "if" condition then thenBody elseIfControl "end"
-  261 elseBody: . expressions
-  262         | . %empty  ["end"]
-  283 selectControl: . select selectable selectConditionBreak casesControl "end"
-  284              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
-  284              | select selectable selectConditionBreak casesControl defaultCase . elseBody "end"
-  285              | . select selectable "line comment" selectConditionBreak casesControl "end"
-  286              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
-  287 select: . "select"
-  288       | . "switch"
-  323 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
-  324           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
-  337 whileControl: . "while" condition whileConditionBreak whileBody "end"
-  358 tryControl: . "try" catchBody "catch" catchBody "end"
-  359           | . "try" catchBody "end"
-  366 returnControl: . "return"
-  367              | . "return" variable
-  368              | . "return" functionCall
+  239 variableDeclaration: . assignable "=" variable
+  240                    | . assignable "=" functionCall
+  241                    | . functionCall "=" variable
+  242                    | . functionCall "=" functionCall
+  243                    | . assignable "=" ":"
+  244                    | . functionCall "=" ":"
+  245                    | . assignable "=" returnControl
+  246                    | . functionCall "=" returnControl
+  247 assignable: . variable "." "identifier"
+  248           | . variable "." keywords
+  249           | . variable "." functionCall
+  250           | . functionCall "." "identifier"
+  251           | . functionCall "." keywords
+  252           | . "identifier"
+  253           | . multipleResults
+  254           | . variable "(" functionArgs ")"
+  255           | . functionCall "(" functionArgs ")"
+  256 multipleResults: . "[" matrixOrCellColumns "]"
+  257 ifControl: . "if" condition then thenBody "end"
+  258          | . "if" condition then thenBody else elseBody "end"
+  259          | . "if" condition then thenBody elseIfControl "end"
+  262 elseBody: . expressions
+  263         | . %empty  ["end"]
+  284 selectControl: . select selectable selectConditionBreak casesControl "end"
+  285              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
+  285              | select selectable selectConditionBreak casesControl defaultCase . elseBody "end"
+  286              | . select selectable "line comment" selectConditionBreak casesControl "end"
+  287              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
+  288 select: . "select"
+  289       | . "switch"
+  324 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
+  325           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
+  338 whileControl: . "while" condition whileConditionBreak whileBody "end"
+  359 tryControl: . "try" catchBody "catch" catchBody "end"
+  360           | . "try" catchBody "end"
+  367 returnControl: . "return"
+  368              | . "return" variable
+  369              | . "return" functionCall
 
     error           shift, and go to state 1
     "%t or %T"      shift, and go to state 3
@@ -27439,9 +27467,9 @@ State 472
     "number"        shift, and go to state 28
     "line comment"  shift, and go to state 29
 
-    "end"  reduce using rule 262 (elseBody)
+    "end"  reduce using rule 263 (elseBody)
 
-    expressions           go to state 479
+    expressions           go to state 480
     recursiveExpression   go to state 32
     expression            go to state 34
     implicitFunctionCall  go to state 35
@@ -27457,7 +27485,7 @@ State 472
     assignable            go to state 45
     multipleResults       go to state 46
     ifControl             go to state 47
-    elseBody              go to state 506
+    elseBody              go to state 507
     selectControl         go to state 48
     select                go to state 49
     forControl            go to state 50
@@ -27466,7 +27494,7 @@ State 472
     returnControl         go to state 53
 
 
-State 473
+State 474
 
    47 functionCall: . simpleFunctionCall
    48             | . "(" functionCall ")"
@@ -27535,8 +27563,8 @@ State 473
   217       | . "[" "end of line" matrixOrCellColumns "]"
   218       | . "[" "end of line" "]"
   219       | . "[" "]"
-  305 casesControl: comments "case" . variable caseControlBreak caseBody
-  306             | comments "case" . functionCall caseControlBreak caseBody
+  306 casesControl: comments "case" . variable caseControlBreak caseBody
+  307             | comments "case" . functionCall caseControlBreak caseBody
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -27553,43 +27581,33 @@ State 473
     "float"       shift, and go to state 27
     "number"      shift, and go to state 28
 
-    functionCall        go to state 507
+    functionCall        go to state 508
     simpleFunctionCall  go to state 37
     comparison          go to state 39
     operation           go to state 40
-    variable            go to state 508
+    variable            go to state 509
     cell                go to state 42
     matrix              go to state 43
 
 
-State 474
-
-  370 comments: comments "line comment" . "end of line"
-
-    "end of line"  shift, and go to state 509
-
-
 State 475
 
-  277 else: "else" "end of line" .
+  371 comments: comments "line comment" . "end of line"
 
-    $default  reduce using rule 277 (else)
+    "end of line"  shift, and go to state 510
 
 
 State 476
 
-  275 else: "else" "," .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
-  278     | "else" "," . "end of line"
+  278 else: "else" "end of line" .
 
-    "end of line"  shift, and go to state 510
-
-    $default  reduce using rule 275 (else)
+    $default  reduce using rule 278 (else)
 
 
 State 477
 
-  276 else: "else" ";" .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
-  279     | "else" ";" . "end of line"
+  276 else: "else" "," .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
+  279     | "else" "," . "end of line"
 
     "end of line"  shift, and go to state 511
 
@@ -27598,54 +27616,64 @@ State 477
 
 State 478
 
-  263 ifConditionBreak: . ";"
-  264                 | . ";" "end of line"
-  265                 | . ","
-  266                 | . "," "end of line"
-  267                 | . "end of line"
-  268 then: . "then"
-  269     | . ifConditionBreak "then"
-  270     | . ifConditionBreak "then" "end of line"
-  271     | . "then" ifConditionBreak
-  272     | . ifConditionBreak
-  273     | . %empty  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "else", "elseif", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
-  280 elseIfControl: "elseif" condition . then thenBody
-  281              | "elseif" condition . then thenBody else elseBody
-  282              | "elseif" condition . then thenBody elseIfControl
+  277 else: "else" ";" .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
+  280     | "else" ";" . "end of line"
+
+    "end of line"  shift, and go to state 512
+
+    $default  reduce using rule 277 (else)
+
+
+State 479
+
+  264 ifConditionBreak: . ";"
+  265                 | . ";" "end of line"
+  266                 | . ","
+  267                 | . "," "end of line"
+  268                 | . "end of line"
+  269 then: . "then"
+  270     | . ifConditionBreak "then"
+  271     | . ifConditionBreak "then" "end of line"
+  272     | . "then" ifConditionBreak
+  273     | . ifConditionBreak
+  274     | . %empty  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "else", "elseif", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
+  281 elseIfControl: "elseif" condition . then thenBody
+  282              | "elseif" condition . then thenBody else elseBody
+  283              | "elseif" condition . then thenBody elseIfControl
 
     "end of line"  shift, and go to state 195
     ","            shift, and go to state 196
     ";"            shift, and go to state 197
     "then"         shift, and go to state 198
 
-    $default  reduce using rule 273 (then)
+    $default  reduce using rule 274 (then)
 
     ifConditionBreak  go to state 199
-    then              go to state 512
+    then              go to state 513
 
 
-State 479
+State 480
 
-  261 elseBody: expressions .
+  262 elseBody: expressions .
 
-    $default  reduce using rule 261 (elseBody)
+    $default  reduce using rule 262 (elseBody)
 
 
-State 480
+State 481
 
-  257 ifControl: "if" condition then thenBody else elseBody . "end"
+  258 ifControl: "if" condition then thenBody else elseBody . "end"
 
-    "end"  shift, and go to state 513
+    "end"  shift, and go to state 514
 
 
-State 481
+State 482
 
-  258 ifControl: "if" condition then thenBody elseIfControl "end" .
+  259 ifControl: "if" condition then thenBody elseIfControl "end" .
 
-    $default  reduce using rule 258 (ifControl)
+    $default  reduce using rule 259 (ifControl)
 
 
-State 482
+State 483
 
    69 functionDeclaration: "function" "[" "]" "=" "identifier" functionDeclarationArguments . functionDeclarationBreak functionBody "endfunction"
    73                    | "function" "[" "]" "=" "identifier" functionDeclarationArguments . functionDeclarationBreak functionBody "end"
@@ -27654,19 +27682,19 @@ State 482
    83                         | . ";" "end of line"
    84                         | . ","
    85                         | . "," "end of line"
-  371 lineEnd: . "end of line"
-  372        | . "line comment" "end of line"
+  372 lineEnd: . "end of line"
+  373        | . "line comment" "end of line"
 
-    "end of line"   shift, and go to state 384
-    ","             shift, and go to state 385
-    ";"             shift, and go to state 386
-    "line comment"  shift, and go to state 387
+    "end of line"   shift, and go to state 385
+    ","             shift, and go to state 386
+    ";"             shift, and go to state 387
+    "line comment"  shift, and go to state 388
 
-    functionDeclarationBreak  go to state 514
-    lineEnd                   go to state 389
+    functionDeclarationBreak  go to state 515
+    lineEnd                   go to state 390
 
 
-State 483
+State 484
 
    68 functionDeclaration: "function" "[" functionDeclarationReturns "]" "=" "identifier" . functionDeclarationArguments functionDeclarationBreak functionBody "endfunction"
    72                    | "function" "[" functionDeclarationReturns "]" "=" "identifier" . functionDeclarationArguments functionDeclarationBreak functionBody "end"
@@ -27678,10 +27706,10 @@ State 483
 
     $default  reduce using rule 78 (functionDeclarationArguments)
 
-    functionDeclarationArguments  go to state 515
+    functionDeclarationArguments  go to state 516
 
 
-State 484
+State 485
 
     5 expressions: . recursiveExpression
     6            | . recursiveExpression expression
@@ -27788,41 +27816,41 @@ State 484
   217       | . "[" "end of line" matrixOrCellColumns "]"
   218       | . "[" "end of line" "]"
   219       | . "[" "]"
-  238 variableDeclaration: . assignable "=" variable
-  239                    | . assignable "=" functionCall
-  240                    | . functionCall "=" variable
-  241                    | . functionCall "=" functionCall
-  242                    | . assignable "=" ":"
-  243                    | . functionCall "=" ":"
-  244                    | . assignable "=" returnControl
-  245                    | . functionCall "=" returnControl
-  246 assignable: . variable "." "identifier"
-  247           | . variable "." keywords
-  248           | . variable "." functionCall
-  249           | . functionCall "." "identifier"
-  250           | . functionCall "." keywords
-  251           | . "identifier"
-  252           | . multipleResults
-  253           | . variable "(" functionArgs ")"
-  254           | . functionCall "(" functionArgs ")"
-  255 multipleResults: . "[" matrixOrCellColumns "]"
-  256 ifControl: . "if" condition then thenBody "end"
-  257          | . "if" condition then thenBody else elseBody "end"
-  258          | . "if" condition then thenBody elseIfControl "end"
-  283 selectControl: . select selectable selectConditionBreak casesControl "end"
-  284              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
-  285              | . select selectable "line comment" selectConditionBreak casesControl "end"
-  286              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
-  287 select: . "select"
-  288       | . "switch"
-  323 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
-  324           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
-  337 whileControl: . "while" condition whileConditionBreak whileBody "end"
-  358 tryControl: . "try" catchBody "catch" catchBody "end"
-  359           | . "try" catchBody "end"
-  366 returnControl: . "return"
-  367              | . "return" variable
-  368              | . "return" functionCall
+  239 variableDeclaration: . assignable "=" variable
+  240                    | . assignable "=" functionCall
+  241                    | . functionCall "=" variable
+  242                    | . functionCall "=" functionCall
+  243                    | . assignable "=" ":"
+  244                    | . functionCall "=" ":"
+  245                    | . assignable "=" returnControl
+  246                    | . functionCall "=" returnControl
+  247 assignable: . variable "." "identifier"
+  248           | . variable "." keywords
+  249           | . variable "." functionCall
+  250           | . functionCall "." "identifier"
+  251           | . functionCall "." keywords
+  252           | . "identifier"
+  253           | . multipleResults
+  254           | . variable "(" functionArgs ")"
+  255           | . functionCall "(" functionArgs ")"
+  256 multipleResults: . "[" matrixOrCellColumns "]"
+  257 ifControl: . "if" condition then thenBody "end"
+  258          | . "if" condition then thenBody else elseBody "end"
+  259          | . "if" condition then thenBody elseIfControl "end"
+  284 selectControl: . select selectable selectConditionBreak casesControl "end"
+  285              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
+  286              | . select selectable "line comment" selectConditionBreak casesControl "end"
+  287              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
+  288 select: . "select"
+  289       | . "switch"
+  324 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
+  325           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
+  338 whileControl: . "while" condition whileConditionBreak whileBody "end"
+  359 tryControl: . "try" catchBody "catch" catchBody "end"
+  360           | . "try" catchBody "end"
+  367 returnControl: . "return"
+  368              | . "return" variable
+  369              | . "return" functionCall
 
     error           shift, and go to state 1
     "%t or %T"      shift, and go to state 3
@@ -27854,14 +27882,14 @@ State 484
     "end"          reduce using rule 87 (functionBody)
     "endfunction"  reduce using rule 87 (functionBody)
 
-    expressions           go to state 446
+    expressions           go to state 447
     recursiveExpression   go to state 32
     expression            go to state 34
     implicitFunctionCall  go to state 35
     functionCall          go to state 36
     simpleFunctionCall    go to state 37
     functionDeclaration   go to state 38
-    functionBody          go to state 516
+    functionBody          go to state 517
     comparison            go to state 39
     operation             go to state 40
     variable              go to state 41
@@ -27879,86 +27907,86 @@ State 484
     returnControl         go to state 53
 
 
-State 485
+State 486
 
    74 functionDeclaration: "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "end" .
 
     $default  reduce using rule 74 (functionDeclaration)
 
 
-State 486
+State 487
 
    70 functionDeclaration: "function" "identifier" functionDeclarationArguments functionDeclarationBreak functionBody "endfunction" .
 
     $default  reduce using rule 70 (functionDeclaration)
 
 
-State 487
-
-  324 forControl: "for" "(" "identifier" "=" forIterator ")" . forConditionBreak forBody "end"
-  327 forConditionBreak: . "end of line"
-  328                  | . ";"
-  329                  | . ";" "end of line"
-  330                  | . ","
-  331                  | . "," "end of line"
-  332                  | . "do"
-  333                  | . "do" "end of line"
-  334                  | . %empty  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
-
-    "end of line"  shift, and go to state 449
-    ","            shift, and go to state 450
-    ";"            shift, and go to state 451
-    "do"           shift, and go to state 452
-
-    $default  reduce using rule 334 (forConditionBreak)
-
-    forConditionBreak  go to state 517
+State 488
 
+  325 forControl: "for" "(" "identifier" "=" forIterator ")" . forConditionBreak forBody "end"
+  328 forConditionBreak: . "end of line"
+  329                  | . ";"
+  330                  | . ";" "end of line"
+  331                  | . ","
+  332                  | . "," "end of line"
+  333                  | . "do"
+  334                  | . "do" "end of line"
+  335                  | . %empty  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "end", "select", "switch", "function", "for", "while", "break", "continue", "try", "return", "string", "identifier", "integer", "float", "number", "line comment"]
 
-State 488
+    "end of line"  shift, and go to state 450
+    ","            shift, and go to state 451
+    ";"            shift, and go to state 452
+    "do"           shift, and go to state 453
 
-  331 forConditionBreak: "," "end of line" .
+    $default  reduce using rule 335 (forConditionBreak)
 
-    $default  reduce using rule 331 (forConditionBreak)
+    forConditionBreak  go to state 518
 
 
 State 489
 
-  329 forConditionBreak: ";" "end of line" .
+  332 forConditionBreak: "," "end of line" .
 
-    $default  reduce using rule 329 (forConditionBreak)
+    $default  reduce using rule 332 (forConditionBreak)
 
 
 State 490
 
-  333 forConditionBreak: "do" "end of line" .
+  330 forConditionBreak: ";" "end of line" .
 
-    $default  reduce using rule 333 (forConditionBreak)
+    $default  reduce using rule 330 (forConditionBreak)
 
 
 State 491
 
-  335 forBody: expressions .
+  334 forConditionBreak: "do" "end of line" .
 
-    $default  reduce using rule 335 (forBody)
+    $default  reduce using rule 334 (forConditionBreak)
 
 
 State 492
 
-  323 forControl: "for" "identifier" "=" forIterator forConditionBreak forBody . "end"
+  336 forBody: expressions .
 
-    "end"  shift, and go to state 518
+    $default  reduce using rule 336 (forBody)
 
 
 State 493
 
-  285 selectControl: select selectable "line comment" selectConditionBreak casesControl "end" .
+  324 forControl: "for" "identifier" "=" forIterator forConditionBreak forBody . "end"
 
-    $default  reduce using rule 285 (selectControl)
+    "end"  shift, and go to state 519
 
 
 State 494
 
+  286 selectControl: select selectable "line comment" selectConditionBreak casesControl "end" .
+
+    $default  reduce using rule 286 (selectControl)
+
+
+State 495
+
     5 expressions: . recursiveExpression
     6            | . recursiveExpression expression
     7            | . recursiveExpression expression "line comment"
@@ -28060,44 +28088,44 @@ State 494
   217       | . "[" "end of line" matrixOrCellColumns "]"
   218       | . "[" "end of line" "]"
   219       | . "[" "]"
-  238 variableDeclaration: . assignable "=" variable
-  239                    | . assignable "=" functionCall
-  240                    | . functionCall "=" variable
-  241                    | . functionCall "=" functionCall
-  242                    | . assignable "=" ":"
-  243                    | . functionCall "=" ":"
-  244                    | . assignable "=" returnControl
-  245                    | . functionCall "=" returnControl
-  246 assignable: . variable "." "identifier"
-  247           | . variable "." keywords
-  248           | . variable "." functionCall
-  249           | . functionCall "." "identifier"
-  250           | . functionCall "." keywords
-  251           | . "identifier"
-  252           | . multipleResults
-  253           | . variable "(" functionArgs ")"
-  254           | . functionCall "(" functionArgs ")"
-  255 multipleResults: . "[" matrixOrCellColumns "]"
-  256 ifControl: . "if" condition then thenBody "end"
-  257          | . "if" condition then thenBody else elseBody "end"
-  258          | . "if" condition then thenBody elseIfControl "end"
-  261 elseBody: . expressions
-  262         | . %empty  ["end"]
-  283 selectControl: . select selectable selectConditionBreak casesControl "end"
-  284              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
-  285              | . select selectable "line comment" selectConditionBreak casesControl "end"
-  286              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
-  286              | select selectable "line comment" selectConditionBreak casesControl defaultCase . elseBody "end"
-  287 select: . "select"
-  288       | . "switch"
-  323 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
-  324           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
-  337 whileControl: . "while" condition whileConditionBreak whileBody "end"
-  358 tryControl: . "try" catchBody "catch" catchBody "end"
-  359           | . "try" catchBody "end"
-  366 returnControl: . "return"
-  367              | . "return" variable
-  368              | . "return" functionCall
+  239 variableDeclaration: . assignable "=" variable
+  240                    | . assignable "=" functionCall
+  241                    | . functionCall "=" variable
+  242                    | . functionCall "=" functionCall
+  243                    | . assignable "=" ":"
+  244                    | . functionCall "=" ":"
+  245                    | . assignable "=" returnControl
+  246                    | . functionCall "=" returnControl
+  247 assignable: . variable "." "identifier"
+  248           | . variable "." keywords
+  249           | . variable "." functionCall
+  250           | . functionCall "." "identifier"
+  251           | . functionCall "." keywords
+  252           | . "identifier"
+  253           | . multipleResults
+  254           | . variable "(" functionArgs ")"
+  255           | . functionCall "(" functionArgs ")"
+  256 multipleResults: . "[" matrixOrCellColumns "]"
+  257 ifControl: . "if" condition then thenBody "end"
+  258          | . "if" condition then thenBody else elseBody "end"
+  259          | . "if" condition then thenBody elseIfControl "end"
+  262 elseBody: . expressions
+  263         | . %empty  ["end"]
+  284 selectControl: . select selectable selectConditionBreak casesControl "end"
+  285              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
+  286              | . select selectable "line comment" selectConditionBreak casesControl "end"
+  287              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
+  287              | select selectable "line comment" selectConditionBreak casesControl defaultCase . elseBody "end"
+  288 select: . "select"
+  289       | . "switch"
+  324 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
+  325           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
+  338 whileControl: . "while" condition whileConditionBreak whileBody "end"
+  359 tryControl: . "try" catchBody "catch" catchBody "end"
+  360           | . "try" catchBody "end"
+  367 returnControl: . "return"
+  368              | . "return" variable
+  369              | . "return" functionCall
 
     error           shift, and go to state 1
     "%t or %T"      shift, and go to state 3
@@ -28126,9 +28154,9 @@ State 494
     "number"        shift, and go to state 28
     "line comment"  shift, and go to state 29
 
-    "end"  reduce using rule 262 (elseBody)
+    "end"  reduce using rule 263 (elseBody)
 
-    expressions           go to state 479
+    expressions           go to state 480
     recursiveExpression   go to state 32
     expression            go to state 34
     implicitFunctionCall  go to state 35
@@ -28144,7 +28172,7 @@ State 494
     assignable            go to state 45
     multipleResults       go to state 46
     ifControl             go to state 47
-    elseBody              go to state 519
+    elseBody              go to state 520
     selectControl         go to state 48
     select                go to state 49
     forControl            go to state 50
@@ -28153,27 +28181,17 @@ State 494
     returnControl         go to state 53
 
 
-State 495
-
-  314 caseControlBreak: "end of line" .
-
-    $default  reduce using rule 314 (caseControlBreak)
-
-
 State 496
 
-  312 caseControlBreak: "," .  [error, "%t or %T", "%f or %F", "~ or @", "$", "(", "[", "{", "+", "-", "if", "else", "end", "select", "switch", "case", "otherwise", "function", "for", "while", "break", "continue", "try", "return"