[bug_14245] parser fixed about field and call 58/17558/8
Cedric Delamarre [Wed, 9 Dec 2015 17:40:03 +0000 (18:40 +0100)]
// error must be "undefined variable a"
a(1).b(2)(1:3)
a(1).b

test_run ast bug_14245

Change-Id: Iea193efe723ab87ec5b332b4e943a2ed448de3b7

scilab/CHANGES_6.0.X
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_14245.dia.ref [new file with mode: 0644]
scilab/modules/ast/tests/nonreg_tests/bug_14245.tst [new file with mode: 0644]

index 340cbdd..9da0ae9 100644 (file)
@@ -55,6 +55,8 @@ Bug Fixes
 
 * Bug #14181 fixed - Calling intg (or integrate) in a function that is being integrated failed.
 
+* Bug #14245 fixed - Problem in recursive extraction using list with struct.
+
 * Bug #14251 fixed - `spec` leaked some memory.
 
 * Bug #14253 fixed - Insertion in a struct contained in a list fixed.
index a682528..570368e 100644 (file)
@@ -211,260 +211,258 @@ Grammar
   175         | variable "." "identifier"
   176         | variable "." keywords
   177         | variable "." functionCall
-  178         | functionCall "." variable
+  178         | functionCall "." "identifier"
   179         | functionCall "." keywords
-  180         | functionCall "." functionCall
-  181         | variable listableEnd
-  182         | functionCall listableEnd
-  183         | matrix
-  184         | cell
-  185         | operation
-  186         | "identifier"
-  187         | "integer"
-  188         | "number"
-  189         | "float"
-  190         | "string"
-  191         | "$"
-  192         | "%t or %T"
-  193         | "%f or %F"
-  194         | "(" variable ")"
-  195         | "(" variableFields ")"
-  196         | comparison
-  197         | variable "(" functionArgs ")"
-  198         | functionCall "(" functionArgs ")"
-
-  199 variableFields: variableFields "," variable
-  200               | variableFields "," functionCall
-  201               | variable "," variable
-  202               | functionCall "," functionCall
-  203               | functionCall "," variable
-  204               | variable "," functionCall
-
-  205 cell: "{" matrixOrCellLines "}"
-  206     | "{" "end of line" matrixOrCellLines "}"
-  207     | "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | "{" matrixOrCellColumns "}"
-  210     | "{" "end of line" matrixOrCellColumns "}"
-  211     | "{" "end of line" "}"
-  212     | "{" "}"
-
-  213 matrix: "[" matrixOrCellLines "]"
-  214       | "[" "end of line" matrixOrCellLines "]"
-  215       | "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | "[" matrixOrCellColumns "]"
-  218       | "[" "end of line" matrixOrCellColumns "]"
-  219       | "[" "end of line" "]"
-  220       | "[" "]"
-
-  221 matrixOrCellLines: matrixOrCellLines matrixOrCellLine
-  222                  | matrixOrCellLine
-
-  223 matrixOrCellLineBreak: ";"
-  224                      | "end of line"
-  225                      | matrixOrCellLineBreak "end of line"
-  226                      | matrixOrCellLineBreak ";"
-
-  227 matrixOrCellLine: matrixOrCellColumns matrixOrCellLineBreak
-  228                 | matrixOrCellColumns matrixOrCellColumnsBreak matrixOrCellLineBreak
-
-  229 matrixOrCellColumns: matrixOrCellColumns matrixOrCellColumnsBreak variable
-  230                    | matrixOrCellColumns matrixOrCellColumnsBreak functionCall
-  231                    | matrixOrCellColumns variable
-  232                    | matrixOrCellColumns functionCall
-  233                    | matrixOrCellColumns "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 "." variable
-  251           | functionCall "." keywords
-  252           | functionCall "." functionCall
-  253           | "identifier"
-  254           | multipleResults
-  255           | variable "(" functionArgs ")"
-  256           | functionCall "(" functionArgs ")"
-
-  257 multipleResults: "[" matrixOrCellColumns "]"
-
-  258 ifControl: "if" condition then thenBody "end"
-  259          | "if" condition then thenBody else elseBody "end"
-  260          | "if" condition then thenBody elseIfControl "end"
-
-  261 thenBody: expressions
+  180         | variable listableEnd
+  181         | functionCall listableEnd
+  182         | matrix
+  183         | cell
+  184         | operation
+  185         | "identifier"
+  186         | "integer"
+  187         | "number"
+  188         | "float"
+  189         | "string"
+  190         | "$"
+  191         | "%t or %T"
+  192         | "%f or %F"
+  193         | "(" variable ")"
+  194         | "(" variableFields ")"
+  195         | comparison
+  196         | variable "(" functionArgs ")"
+  197         | functionCall "(" functionArgs ")"
+
+  198 variableFields: variableFields "," variable
+  199               | variableFields "," functionCall
+  200               | variable "," variable
+  201               | functionCall "," functionCall
+  202               | functionCall "," variable
+  203               | variable "," functionCall
+
+  204 cell: "{" matrixOrCellLines "}"
+  205     | "{" "end of line" matrixOrCellLines "}"
+  206     | "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | "{" matrixOrCellColumns "}"
+  209     | "{" "end of line" matrixOrCellColumns "}"
+  210     | "{" "end of line" "}"
+  211     | "{" "}"
+
+  212 matrix: "[" matrixOrCellLines "]"
+  213       | "[" "end of line" matrixOrCellLines "]"
+  214       | "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | "[" matrixOrCellColumns "]"
+  217       | "[" "end of line" matrixOrCellColumns "]"
+  218       | "[" "end of line" "]"
+  219       | "[" "]"
+
+  220 matrixOrCellLines: matrixOrCellLines matrixOrCellLine
+  221                  | matrixOrCellLine
+
+  222 matrixOrCellLineBreak: ";"
+  223                      | "end of line"
+  224                      | matrixOrCellLineBreak "end of line"
+  225                      | matrixOrCellLineBreak ";"
+
+  226 matrixOrCellLine: matrixOrCellColumns matrixOrCellLineBreak
+  227                 | matrixOrCellColumns matrixOrCellColumnsBreak matrixOrCellLineBreak
+
+  228 matrixOrCellColumns: matrixOrCellColumns matrixOrCellColumnsBreak variable
+  229                    | matrixOrCellColumns matrixOrCellColumnsBreak functionCall
+  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 elseBody: expressions
-  264         | %empty
-
-  265 ifConditionBreak: ";"
-  266                 | ";" "end of line"
-  267                 | ","
-  268                 | "," "end of line"
-  269                 | "end of line"
-
-  270 then: "then"
-  271     | ifConditionBreak "then"
-  272     | ifConditionBreak "then" "end of line"
-  273     | "then" ifConditionBreak
-  274     | ifConditionBreak
-  275     | %empty
-
-  276 else: "else"
-  277     | "else" ","
-  278     | "else" ";"
-  279     | "else" "end of line"
-  280     | "else" "," "end of line"
-  281     | "else" ";" "end of line"
-
-  282 elseIfControl: "elseif" condition then thenBody
-  283              | "elseif" condition then thenBody else elseBody
-  284              | "elseif" condition then thenBody elseIfControl
-
-  285 selectControl: select selectable selectConditionBreak casesControl "end"
-  286              | select selectable selectConditionBreak casesControl defaultCase elseBody "end"
-  287              | select selectable "line comment" selectConditionBreak casesControl "end"
-  288              | select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
-
-  289 select: "select"
-  290       | "switch"
-
-  291 defaultCase: else
-  292            | "otherwise"
-  293            | "otherwise" ","
-  294            | "otherwise" ";"
-  295            | "otherwise" "end of line"
-  296            | "otherwise" "," "end of line"
-  297            | "otherwise" ";" "end of line"
-
-  298 selectable: variable
-  299           | functionCall
-
-  300 selectConditionBreak: "end of line"
-  301                     | "," "end of line"
-  302                     | ";" "end of line"
-  303                     | ","
-  304                     | ";"
-
-  305 casesControl: "case" variable caseControlBreak caseBody
-  306             | "case" functionCall caseControlBreak caseBody
-  307             | comments "case" variable caseControlBreak caseBody
-  308             | comments "case" functionCall caseControlBreak caseBody
-  309             | casesControl "case" variable caseControlBreak caseBody
-  310             | casesControl "case" functionCall caseControlBreak caseBody
-
-  311 caseBody: expressions
-  312         | %empty
-
-  313 caseControlBreak: "then"
-  314                 | ","
-  315                 | ";"
-  316                 | "end of line"
-  317                 | "then" "end of line"
-  318                 | "," "end of line"
-  319                 | ";" "end of line"
-  320                 | "then" ","
-  321                 | "then" "," "end of line"
-  322                 | "then" ";"
-  323                 | "then" ";" "end of line"
-  324                 | %empty
-
-  325 forControl: "for" "identifier" "=" forIterator forConditionBreak forBody "end"
-  326           | "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
-
-  327 forIterator: functionCall
-  328            | variable
-
-  329 forConditionBreak: "end of line"
-  330                  | ";"
-  331                  | ";" "end of line"
-  332                  | ","
-  333                  | "," "end of line"
-  334                  | "do"
-  335                  | "do" "end of line"
-  336                  | %empty
-
-  337 forBody: expressions
-  338        | %empty
-
-  339 whileControl: "while" condition whileConditionBreak whileBody "end"
-
-  340 whileBody: expressions
-  341          | %empty
-
-  342 whileConditionBreak: ","
-  343                    | ";"
-  344                    | "do"
-  345                    | "do" ","
-  346                    | "do" ";"
-  347                    | "then"
-  348                    | "then" ","
-  349                    | "then" ";"
-  350                    | "line comment" "end of line"
-  351                    | "end of line"
-  352                    | "," "end of line"
-  353                    | ";" "end of line"
-  354                    | "do" "end of line"
-  355                    | "do" "," "end of line"
-  356                    | "do" ";" "end of line"
-  357                    | "then" "end of line"
-  358                    | "then" "," "end of line"
-  359                    | "then" ";" "end of line"
-
-  360 tryControl: "try" catchBody "catch" catchBody "end"
-  361           | "try" catchBody "end"
-
-  362 catchBody: expressions
-  363          | "end of line" expressions
-  364          | ";" expressions
-  365          | "," expressions
-  366          | "end of line"
-  367          | %empty
-
-  368 returnControl: "return"
-  369              | "return" variable
-  370              | "return" functionCall
-
-  371 comments: "line comment" "end of line"
-  372         | comments "line comment" "end of line"
-
-  373 lineEnd: "end of line"
-  374        | "line comment" "end of line"
-
-  375 keywords: "if"
-  376         | "then"
-  377         | "else"
-  378         | "elseif"
-  379         | "end"
-  380         | "select"
-  381         | "switch"
-  382         | "otherwise"
-  383         | "case"
-  384         | "function"
-  385         | "endfunction"
-  386         | "for"
-  387         | "while"
-  388         | "do"
-  389         | "break"
-  390         | "try"
-  391         | "catch"
-  392         | "return"
+  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"
 
 
 Terminals, with rules where they appear
@@ -472,30 +470,30 @@ Terminals, with rules where they appear
 "end of file" (0) 0
 error (256) 34
 "line break" (258)
-"end of line" (259) 2 16 19 83 85 206 208 210 211 214 216 218 219 224
-    225 266 268 269 272 279 280 281 295 296 297 300 301 302 316 317
-    318 319 321 323 329 331 333 335 350 351 352 353 354 355 356 357
-    358 359 363 366 371 372 373 374
+"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
 "spaces" (260)
-"%t or %T" (261) 43 192
-"%f or %F" (262) 44 193
+"%t or %T" (261) 43 191
+"%f or %F" (262) 44 192
 "'" (263) 136 138
 "~ or @" (264) 173 174
-"$" (265) 42 191
-"," (266) 15 18 57 58 59 60 61 62 63 64 65 66 79 84 85 199 200 201
-    202 203 204 237 238 267 268 277 280 293 296 301 303 314 318 320
-    321 332 333 342 345 348 352 355 358 365
+"$" (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
 ":" (267) 55 60 65 94 97 100 103 106 109 112 115 118 121 168 169 170
-    171 243 244
-";" (268) 14 17 82 83 223 226 265 266 278 281 294 297 302 304 315 319
-    322 323 330 331 343 346 349 353 356 359 364
-"(" (269) 48 49 51 76 77 194 195 197 198 255 256 326
-")" (270) 48 49 51 76 77 194 195 197 198 255 256 326
-"[" (271) 68 69 72 73 213 214 215 216 217 218 219 220 257
-"]" (272) 68 69 72 73 213 214 215 216 217 218 219 220 257
-"{" (273) 50 52 205 206 207 208 209 210 211 212
-"}" (274) 50 52 205 206 207 208 209 210 211 212
-"." (275) 45 175 176 177 178 179 180 247 248 249 250 251 252
+    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
+"{" (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
 ".'" (276) 137 139
 "+" (277) 126 127 140 141
 "-" (278) 124 125 142 143
@@ -523,37 +521,37 @@ error (256) 34
 "&&" (300) 95 96 97
 "|" (301) 98 99 100
 "||" (302) 101 102 103
-"=" (303) 67 68 69 71 72 73 239 240 241 242 243 244 245 246 325 326
-"if" (304) 258 259 260 375
-"then" (305) 270 271 272 273 313 317 320 321 322 323 347 348 349 357
-    358 359 376
-"else" (306) 276 277 278 279 280 281 377
-"elseif" (307) 282 283 284 378
-"end" (308) 71 72 73 74 258 259 260 285 286 287 288 325 326 339 360
-    361 379
-"select" (309) 289 380
-"switch" (310) 290 381
-"case" (311) 305 306 307 308 309 310 383
-"otherwise" (312) 292 293 294 295 296 297 382
-"function" (313) 67 68 69 70 71 72 73 74 384
-"endfunction" (314) 67 68 69 70 385
-"for" (315) 325 326 386
-"while" (316) 339 387
-"do" (317) 334 335 344 345 346 354 355 356 388
-"break" (318) 30 389
+"=" (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
 "continue" (319) 31
-"try" (320) 360 361 390
-"catch" (321) 360 391
-"return" (322) 368 369 370 392
+"try" (320) 358 359 388
+"catch" (321) 358 389
+"return" (322) 366 367 368 390
 FLEX_ERROR (323)
-"string" (324) 41 190
+"string" (324) 41 189
 "identifier" (325) 36 37 45 49 50 51 52 67 68 69 70 71 72 73 74 79
-    80 175 186 247 253 325 326
-"integer" (326) 38 187
-"float" (327) 40 189
-"number" (328) 39 188
+    80 175 178 185 246 249 251 323 324
+"integer" (326) 38 186
+"float" (327) 40 188
+"number" (328) 39 187
 "path" (329) 46
-"line comment" (330) 7 9 11 12 33 233 236 287 288 350 371 372 374
+"line comment" (330) 7 9 11 12 33 232 235 285 286 348 369 370 372
 "block comment" (331)
 TOPLEVEL (332)
 HIGHLEVEL (333)
@@ -571,8 +569,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 261 263 311 337 340 362 363
-    364 365
+    on left: 5 6 7 8 9, on right: 1 2 86 259 261 309 335 338 360 361
+    362 363
 recursiveExpression (87)
     on left: 10 11 12 13, on right: 5 6 7 10 11
 expressionLineBreak (88)
@@ -588,13 +586,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 180 182 198 200 202 203 204 230 232 235 240 241
-    242 244 246 249 250 251 252 256 299 306 308 310 327 370
+    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
 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 197 198 255 256
+    50 62 63 64 65 66 196 197 253 254
 functionDeclaration (95)
     on left: 67 68 69 70 71 72 73 74, on right: 20
 functionDeclarationReturns (96)
@@ -608,16 +606,16 @@ 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: 258 259 260 282 283 284 339
+    on left: 88 89, on right: 256 257 258 280 281 282 337
 comparison (102)
-    on left: 90 91, on right: 196
+    on left: 90 91, on right: 195
 rightComparable (103)
     on left: 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
     108 109 110 111 112 113 114 115 116 117 118 119 120 121, on right:
     90 91
 operation (104)
     on left: 122 123 124 125 126 127 128 129 130 131 132 133 134 135
-    136 137 138 139, on right: 185
+    136 137 138 139, on right: 184
 rightOperand (105)
     on left: 140 141 142 143 144 145 146 147 148 149 150 151 152 153
     154 155 156 157 158 159 160 161 162 163 164 165 166 167, on right:
@@ -625,100 +623,99 @@ rightOperand (105)
 listableBegin (106)
     on left: 168 169, on right: 170 171 172
 listableEnd (107)
-    on left: 170 171 172, on right: 181 182
+    on left: 170 171 172, on right: 180 181
 variable (108)
     on left: 173 174 175 176 177 178 179 180 181 182 183 184 185 186
-    187 188 189 190 191 192 193 194 195 196 197 198, on right: 28 53
-    58 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 178 181 194 197 199
-    201 203 204 229 231 234 239 241 247 248 249 250 255 298 305 307
-    309 328 369
+    187 188 189 190 191 192 193 194 195 196 197, on right: 28 53 58
+    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
 variableFields (109)
-    on left: 199 200 201 202 203 204, on right: 195 199 200
+    on left: 198 199 200 201 202 203, on right: 194 198 199
 cell (110)
-    on left: 205 206 207 208 209 210 211 212, on right: 184
+    on left: 204 205 206 207 208 209 210 211, on right: 183
 matrix (111)
-    on left: 213 214 215 216 217 218 219 220, on right: 183
+    on left: 212 213 214 215 216 217 218 219, on right: 182
 matrixOrCellLines (112)
-    on left: 221 222, on right: 205 206 207 208 213 214 215 216 221
+    on left: 220 221, on right: 204 205 206 207 212 213 214 215 220
 matrixOrCellLineBreak (113)
-    on left: 223 224 225 226, on right: 225 226 227 228
+    on left: 222 223 224 225, on right: 224 225 226 227
 matrixOrCellLine (114)
-    on left: 227 228, on right: 221 222
+    on left: 226 227, on right: 220 221
 matrixOrCellColumns (115)
-    on left: 229 230 231 232 233 234 235 236, on right: 207 208 209
-    210 215 216 217 218 227 228 229 230 231 232 233 257
+    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
 matrixOrCellColumnsBreak (116)
-    on left: 237 238, on right: 228 229 230 237
+    on left: 236 237, on right: 227 228 229 236
 variableDeclaration (117)
-    on left: 239 240 241 242 243 244 245 246, on right: 22 56 61 66
+    on left: 238 239 240 241 242 243 244 245, on right: 22 56 61 66
 assignable (118)
-    on left: 247 248 249 250 251 252 253 254 255 256, on right: 239
-    240 243 245
+    on left: 246 247 248 249 250 251 252 253 254, on right: 238 239
+    242 244
 multipleResults (119)
-    on left: 257, on right: 254
+    on left: 255, on right: 252
 ifControl (120)
-    on left: 258 259 260, on right: 23
+    on left: 256 257 258, on right: 23
 thenBody (121)
-    on left: 261 262, on right: 258 259 260 282 283 284
+    on left: 259 260, on right: 256 257 258 280 281 282
 elseBody (122)
-    on left: 263 264, on right: 259 283 286 288
+    on left: 261 262, on right: 257 281 284 286
 ifConditionBreak (123)
-    on left: 265 266 267 268 269, on right: 271 272 273 274
+    on left: 263 264 265 266 267, on right: 269 270 271 272
 then (124)
-    on left: 270 271 272 273 274 275, on right: 258 259 260 282 283
-    284
+    on left: 268 269 270 271 272 273, on right: 256 257 258 280 281
+    282
 else (125)
-    on left: 276 277 278 279 280 281, on right: 259 283 291
+    on left: 274 275 276 277 278 279, on right: 257 281 289
 elseIfControl (126)
-    on left: 282 283 284, on right: 260 284
+    on left: 280 281 282, on right: 258 282
 selectControl (127)
-    on left: 285 286 287 288, on right: 24
+    on left: 283 284 285 286, on right: 24
 select (128)
-    on left: 289 290, on right: 285 286 287 288
+    on left: 287 288, on right: 283 284 285 286
 defaultCase (129)
-    on left: 291 292 293 294 295 296 297, on right: 286 288
+    on left: 289 290 291 292 293 294 295, on right: 284 286
 selectable (130)
-    on left: 298 299, on right: 285 286 287 288
+    on left: 296 297, on right: 283 284 285 286
 selectConditionBreak (131)
-    on left: 300 301 302 303 304, on right: 285 286 287 288
+    on left: 298 299 300 301 302, on right: 283 284 285 286
 casesControl (132)
-    on left: 305 306 307 308 309 310, on right: 285 286 287 288 309
-    310
+    on left: 303 304 305 306 307 308, on right: 283 284 285 286 307
+    308
 caseBody (133)
-    on left: 311 312, on right: 305 306 307 308 309 310
+    on left: 309 310, on right: 303 304 305 306 307 308
 caseControlBreak (134)
-    on left: 313 314 315 316 317 318 319 320 321 322 323 324, on right:
-    305 306 307 308 309 310
+    on left: 311 312 313 314 315 316 317 318 319 320 321 322, on right:
+    303 304 305 306 307 308
 forControl (135)
-    on left: 325 326, on right: 25
+    on left: 323 324, on right: 25
 forIterator (136)
-    on left: 327 328, on right: 325 326
+    on left: 325 326, on right: 323 324
 forConditionBreak (137)
-    on left: 329 330 331 332 333 334 335 336, on right: 325 326
+    on left: 327 328 329 330 331 332 333 334, on right: 323 324
 forBody (138)
-    on left: 337 338, on right: 325 326
+    on left: 335 336, on right: 323 324
 whileControl (139)
-    on left: 339, on right: 26
+    on left: 337, on right: 26
 whileBody (140)
-    on left: 340 341, on right: 339
+    on left: 338 339, on right: 337
 whileConditionBreak (141)
-    on left: 342 343 344 345 346 347 348 349 350 351 352 353 354 355
-    356 357 358 359, on right: 339
+    on left: 340 341 342 343 344 345 346 347 348 349 350 351 352 353
+    354 355 356 357, on right: 337
 tryControl (142)
-    on left: 360 361, on right: 27
+    on left: 358 359, on right: 27
 catchBody (143)
-    on left: 362 363 364 365 366 367, on right: 360 361
+    on left: 360 361 362 363 364 365, on right: 358 359
 returnControl (144)
-    on left: 368 369 370, on right: 32 245 246
+    on left: 366 367 368, on right: 32 244 245
 comments (145)
-    on left: 371 372, on right: 307 308 372
+    on left: 369 370, on right: 305 306 370
 lineEnd (146)
-    on left: 373 374, on right: 81
+    on left: 371 372, on right: 81
 keywords (147)
-    on left: 375 376 377 378 379 380 381 382 383 384 385 386 387 388
-    389 390 391 392, on right: 176 179 248 251
+    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
 
 
 State 0
@@ -799,79 +796,77 @@ State 0
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
-  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 "." variable
-  251           | . functionCall "." keywords
-  252           | . functionCall "." functionCall
-  253           | . "identifier"
-  254           | . multipleResults
-  255           | . variable "(" functionArgs ")"
-  256           | . functionCall "(" functionArgs ")"
-  257 multipleResults: . "[" matrixOrCellColumns "]"
-  258 ifControl: . "if" condition then thenBody "end"
-  259          | . "if" condition then thenBody else elseBody "end"
-  260          | . "if" condition then thenBody elseIfControl "end"
-  285 selectControl: . select selectable selectConditionBreak casesControl "end"
-  286              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
-  287              | . select selectable "line comment" selectConditionBreak casesControl "end"
-  288              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
-  289 select: . "select"
-  290       | . "switch"
-  325 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
-  326           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
-  339 whileControl: . "while" condition whileConditionBreak whileBody "end"
-  360 tryControl: . "try" catchBody "catch" catchBody "end"
-  361           | . "try" catchBody "end"
-  368 returnControl: . "return"
-  369              | . "return" variable
-  370              | . "return" functionCall
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  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
 
     error           shift, and go to state 1
     "end of line"   shift, and go to state 2
@@ -1007,79 +1002,77 @@ State 2
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
-  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 "." variable
-  251           | . functionCall "." keywords
-  252           | . functionCall "." functionCall
-  253           | . "identifier"
-  254           | . multipleResults
-  255           | . variable "(" functionArgs ")"
-  256           | . functionCall "(" functionArgs ")"
-  257 multipleResults: . "[" matrixOrCellColumns "]"
-  258 ifControl: . "if" condition then thenBody "end"
-  259          | . "if" condition then thenBody else elseBody "end"
-  260          | . "if" condition then thenBody elseIfControl "end"
-  285 selectControl: . select selectable selectConditionBreak casesControl "end"
-  286              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
-  287              | . select selectable "line comment" selectConditionBreak casesControl "end"
-  288              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
-  289 select: . "select"
-  290       | . "switch"
-  325 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
-  326           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
-  339 whileControl: . "while" condition whileConditionBreak whileBody "end"
-  360 tryControl: . "try" catchBody "catch" catchBody "end"
-  361           | . "try" catchBody "end"
-  368 returnControl: . "return"
-  369              | . "return" variable
-  370              | . "return" functionCall
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  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
 
     error           shift, and go to state 1
     "%t or %T"      shift, and go to state 3
@@ -1139,16 +1132,16 @@ State 2
 
 State 3
 
-  192 variable: "%t or %T" .
+  191 variable: "%t or %T" .
 
-    $default  reduce using rule 192 (variable)
+    $default  reduce using rule 191 (variable)
 
 
 State 4
 
-  193 variable: "%f or %F" .
+  192 variable: "%f or %F" .
 
-    $default  reduce using rule 193 (variable)
+    $default  reduce using rule 192 (variable)
 
 
 State 5
@@ -1186,43 +1179,42 @@ State 5
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  217       | . "[" "end of line" matrixOrCellColumns "]"
+  218       | . "[" "end of line" "]"
+  219       | . "[" "]"
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -1250,9 +1242,9 @@ State 5
 
 State 6
 
-  191 variable: "$" .
+  190 variable: "$" .
 
-    $default  reduce using rule 191 (variable)
+    $default  reduce using rule 190 (variable)
 
 
 State 7
@@ -1303,51 +1295,50 @@ State 9
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  194         | "(" . variable ")"
-  195         | . "(" variableFields ")"
-  195         | "(" . variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  199 variableFields: . variableFields "," variable
-  200               | . variableFields "," functionCall
-  201               | . variable "," variable
-  202               | . functionCall "," functionCall
-  203               | . functionCall "," variable
-  204               | . variable "," functionCall
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  193         | "(" . variable ")"
+  194         | . "(" variableFields ")"
+  194         | "(" . variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  198 variableFields: . variableFields "," variable
+  199               | . variableFields "," functionCall
+  200               | . variable "," variable
+  201               | . functionCall "," functionCall
+  202               | . functionCall "," variable
+  203               | . variable "," functionCall
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  217       | . "[" "end of line" matrixOrCellColumns "]"
+  218       | . "[" "end of line" "]"
+  219       | . "[" "]"
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -1407,64 +1398,63 @@ State 10
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  213       | "[" . matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  214       | "[" . "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  215       | "[" . matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  216       | "[" . "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  217       | "[" . matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  218       | "[" . "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  219       | "[" . "end of line" "]"
-  220       | . "[" "]"
-  220       | "[" . "]"
-  221 matrixOrCellLines: . matrixOrCellLines matrixOrCellLine
-  222                  | . matrixOrCellLine
-  227 matrixOrCellLine: . matrixOrCellColumns matrixOrCellLineBreak
-  228                 | . matrixOrCellColumns matrixOrCellColumnsBreak matrixOrCellLineBreak
-  229 matrixOrCellColumns: . matrixOrCellColumns matrixOrCellColumnsBreak variable
-  230                    | . matrixOrCellColumns matrixOrCellColumnsBreak functionCall
-  231                    | . matrixOrCellColumns variable
-  232                    | . matrixOrCellColumns functionCall
-  233                    | . matrixOrCellColumns "line comment"
-  234                    | . variable
-  235                    | . functionCall
-  236                    | . "line comment"
-  257 multipleResults: "[" . matrixOrCellColumns "]"
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  212       | "[" . matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  213       | "[" . "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  214       | "[" . matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  215       | "[" . "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  216       | "[" . matrixOrCellColumns "]"
+  217       | . "[" "end of line" matrixOrCellColumns "]"
+  217       | "[" . "end of line" matrixOrCellColumns "]"
+  218       | . "[" "end of line" "]"
+  218       | "[" . "end of line" "]"
+  219       | . "[" "]"
+  219       | "[" . "]"
+  220 matrixOrCellLines: . matrixOrCellLines matrixOrCellLine
+  221                  | . matrixOrCellLine
+  226 matrixOrCellLine: . matrixOrCellColumns matrixOrCellLineBreak
+  227                 | . matrixOrCellColumns matrixOrCellColumnsBreak matrixOrCellLineBreak
+  228 matrixOrCellColumns: . matrixOrCellColumns matrixOrCellColumnsBreak variable
+  229                    | . matrixOrCellColumns matrixOrCellColumnsBreak functionCall
+  230                    | . matrixOrCellColumns variable
+  231                    | . matrixOrCellColumns functionCall
+  232                    | . matrixOrCellColumns "line comment"
+  233                    | . variable
+  234                    | . functionCall
+  235                    | . "line comment"
+  255 multipleResults: "[" . matrixOrCellColumns "]"
 
     "end of line"   shift, and go to state 62
     "%t or %T"      shift, and go to state 3
@@ -1529,63 +1519,62 @@ State 11
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  205     | "{" . matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  206     | "{" . "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  207     | "{" . matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  208     | "{" . "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  209     | "{" . matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  210     | "{" . "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  211     | "{" . "end of line" "}"
-  212     | . "{" "}"
-  212     | "{" . "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
-  221 matrixOrCellLines: . matrixOrCellLines matrixOrCellLine
-  222                  | . matrixOrCellLine
-  227 matrixOrCellLine: . matrixOrCellColumns matrixOrCellLineBreak
-  228                 | . matrixOrCellColumns matrixOrCellColumnsBreak matrixOrCellLineBreak
-  229 matrixOrCellColumns: . matrixOrCellColumns matrixOrCellColumnsBreak variable
-  230                    | . matrixOrCellColumns matrixOrCellColumnsBreak functionCall
-  231                    | . matrixOrCellColumns variable
-  232                    | . matrixOrCellColumns functionCall
-  233                    | . matrixOrCellColumns "line comment"
-  234                    | . variable
-  235                    | . functionCall
-  236                    | . "line comment"
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  204     | "{" . matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  205     | "{" . "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  206     | "{" . matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  207     | "{" . "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  208     | "{" . matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  209     | "{" . "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  210     | "{" . "end of line" "}"
+  211     | . "{" "}"
+  211     | "{" . "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  217       | . "[" "end of line" matrixOrCellColumns "]"
+  218       | . "[" "end of line" "]"
+  219       | . "[" "]"
+  220 matrixOrCellLines: . matrixOrCellLines matrixOrCellLine
+  221                  | . matrixOrCellLine
+  226 matrixOrCellLine: . matrixOrCellColumns matrixOrCellLineBreak
+  227                 | . matrixOrCellColumns matrixOrCellColumnsBreak matrixOrCellLineBreak
+  228 matrixOrCellColumns: . matrixOrCellColumns matrixOrCellColumnsBreak variable
+  229                    | . matrixOrCellColumns matrixOrCellColumnsBreak functionCall
+  230                    | . matrixOrCellColumns variable
+  231                    | . matrixOrCellColumns functionCall
+  232                    | . matrixOrCellColumns "line comment"
+  233                    | . variable
+  234                    | . functionCall
+  235                    | . "line comment"
 
     "end of line"   shift, and go to state 70
     "%t or %T"      shift, and go to state 3
@@ -1652,43 +1641,42 @@ State 12
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  217       | . "[" "end of line" matrixOrCellColumns "]"
+  218       | . "[" "end of line" "]"
+  219       | . "[" "]"
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -1749,43 +1737,42 @@ State 13
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  217       | . "[" "end of line" matrixOrCellColumns "]"
+  218       | . "[" "end of line" "]"
+  219       | . "[" "]"
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -1846,46 +1833,45 @@ State 14
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
-  258 ifControl: "if" . condition then thenBody "end"
-  259          | "if" . condition then thenBody else elseBody "end"
-  260          | "if" . condition then thenBody elseIfControl "end"
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  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"
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -1914,16 +1900,16 @@ State 14
 
 State 15
 
-  289 select: "select" .
+  287 select: "select" .
 
-    $default  reduce using rule 289 (select)
+    $default  reduce using rule 287 (select)
 
 
 State 16
 
-  290 select: "switch" .
+  288 select: "switch" .
 
-    $default  reduce using rule 290 (select)
+    $default  reduce using rule 288 (select)
 
 
 State 17
@@ -1943,8 +1929,8 @@ State 17
 
 State 18
 
-  325 forControl: "for" . "identifier" "=" forIterator forConditionBreak forBody "end"
-  326           | "for" . "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
+  323 forControl: "for" . "identifier" "=" forIterator forConditionBreak forBody "end"
+  324           | "for" . "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
 
     "("           shift, and go to state 83
     "identifier"  shift, and go to state 84
@@ -1985,44 +1971,43 @@ State 19
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
-  339 whileControl: "while" . condition whileConditionBreak whileBody "end"
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  217       | . "[" "end of line" matrixOrCellColumns "]"
+  218       | . "[" "end of line" "]"
+  219       | . "[" "]"
+  337 whileControl: "while" . condition whileConditionBreak whileBody "end"
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -2130,87 +2115,85 @@ State 22
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
-  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 "." variable
-  251           | . functionCall "." keywords
-  252           | . functionCall "." functionCall
-  253           | . "identifier"
-  254           | . multipleResults
-  255           | . variable "(" functionArgs ")"
-  256           | . functionCall "(" functionArgs ")"
-  257 multipleResults: . "[" matrixOrCellColumns "]"
-  258 ifControl: . "if" condition then thenBody "end"
-  259          | . "if" condition then thenBody else elseBody "end"
-  260          | . "if" condition then thenBody elseIfControl "end"
-  285 selectControl: . select selectable selectConditionBreak casesControl "end"
-  286              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
-  287              | . select selectable "line comment" selectConditionBreak casesControl "end"
-  288              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
-  289 select: . "select"
-  290       | . "switch"
-  325 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
-  326           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
-  339 whileControl: . "while" condition whileConditionBreak whileBody "end"
-  360 tryControl: . "try" catchBody "catch" catchBody "end"
-  360           | "try" . catchBody "catch" catchBody "end"
-  361           | . "try" catchBody "end"
-  361           | "try" . catchBody "end"
-  362 catchBody: . expressions
-  363          | . "end of line" expressions
-  364          | . ";" expressions
-  365          | . "," expressions
-  366          | . "end of line"
-  367          | . %empty  ["end", "catch"]
-  368 returnControl: . "return"
-  369              | . "return" variable
-  370              | . "return" functionCall
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  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
 
     error           shift, and go to state 1
     "end of line"   shift, and go to state 86
@@ -2242,8 +2225,8 @@ State 22
     "number"        shift, and go to state 28
     "line comment"  shift, and go to state 29
 
-    "end"    reduce using rule 367 (catchBody)
-    "catch"  reduce using rule 367 (catchBody)
+    "end"    reduce using rule 365 (catchBody)
+    "catch"  reduce using rule 365 (catchBody)
 
     expressions           go to state 89
     recursiveExpression   go to state 32
@@ -2303,46 +2286,45 @@ State 23
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
-  368 returnControl: "return" .  ["end of file", "end of line", ",", ";", ")", "}", "else", "elseif", "end", "case", "otherwise", "endfunction", "catch", "line comment"]
-  369              | "return" . variable
-  370              | "return" . functionCall
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  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
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -2359,7 +2341,7 @@ State 23
     "float"       shift, and go to state 27
     "number"      shift, and go to state 28
 
-    $default  reduce using rule 368 (returnControl)
+    $default  reduce using rule 366 (returnControl)
 
     functionCall        go to state 91
     simpleFunctionCall  go to state 37
@@ -2372,9 +2354,9 @@ State 23
 
 State 24
 
-  190 variable: "string" .
+  189 variable: "string" .
 
-    $default  reduce using rule 190 (variable)
+    $default  reduce using rule 189 (variable)
 
 
 State 25
@@ -2394,8 +2376,8 @@ State 25
    50                   | "identifier" . "{" functionArgs "}"
    51                   | "identifier" . "(" ")"
    52                   | "identifier" . "{" "}"
-  186 variable: "identifier" .  ["end of file", "end of line", "'", ",", ":", ";", ".", ".'", "+", "-", "*", ".*", ".*.", "*.", "/", "./", "/.", "./.", "\\", ".\\", "\\.", ".\\.", "** or ^", ".^", "==", "<> or ~=", "<", "<=", ">", ">=", "&", "&&", "|", "||", "else", "elseif", "end", "case", "otherwise", "endfunction", "catch", "line comment"]
-  253 assignable: "identifier" .  ["="]
+  185 variable: "identifier" .  ["end of file", "end of line", "'", ",", ":", ";", ".", ".'", "+", "-", "*", ".*", ".*.", "*.", "/", "./", "/.", "./.", "\\", ".\\", "\\.", ".\\.", "** or ^", ".^", "==", "<> or ~=", "<", "<=", ">", ">=", "&", "&&", "|", "||", "else", "elseif", "end", "case", "otherwise", "endfunction", "catch", "line comment"]
+  251 assignable: "identifier" .  ["="]
 
     "%t or %T"    shift, and go to state 93
     "%f or %F"    shift, and go to state 94
@@ -2409,33 +2391,33 @@ State 25
     "number"      shift, and go to state 102
     "path"        shift, and go to state 103
 
-    "="       reduce using rule 253 (assignable)
-    $default  reduce using rule 186 (variable)
+    "="       reduce using rule 251 (assignable)
+    $default  reduce using rule 185 (variable)
 
     implicitCallable  go to state 104
 
-    Conflict between rule 186 and token "(" resolved as shift (LISTABLE < "(").
+    Conflict between rule 185 and token "(" resolved as shift (LISTABLE < "(").
 
 
 State 26
 
-  187 variable: "integer" .
+  186 variable: "integer" .
 
-    $default  reduce using rule 187 (variable)
+    $default  reduce using rule 186 (variable)
 
 
 State 27
 
-  189 variable: "float" .
+  188 variable: "float" .
 
-    $default  reduce using rule 189 (variable)
+    $default  reduce using rule 188 (variable)
 
 
 State 28
 
-  188 variable: "number" .
+  187 variable: "number" .
 
-    $default  reduce using rule 188 (variable)
+    $default  reduce using rule 187 (variable)
 
 
 State 29
@@ -2522,79 +2504,77 @@ State 32
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
-  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 "." variable
-  251           | . functionCall "." keywords
-  252           | . functionCall "." functionCall
-  253           | . "identifier"
-  254           | . multipleResults
-  255           | . variable "(" functionArgs ")"
-  256           | . functionCall "(" functionArgs ")"
-  257 multipleResults: . "[" matrixOrCellColumns "]"
-  258 ifControl: . "if" condition then thenBody "end"
-  259          | . "if" condition then thenBody else elseBody "end"
-  260          | . "if" condition then thenBody elseIfControl "end"
-  285 selectControl: . select selectable selectConditionBreak casesControl "end"
-  286              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
-  287              | . select selectable "line comment" selectConditionBreak casesControl "end"
-  288              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
-  289 select: . "select"
-  290       | . "switch"
-  325 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
-  326           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
-  339 whileControl: . "while" condition whileConditionBreak whileBody "end"
-  360 tryControl: . "try" catchBody "catch" catchBody "end"
-  361           | . "try" catchBody "end"
-  368 returnControl: . "return"
-  369              | . "return" variable
-  370              | . "return" functionCall
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  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
 
     error           shift, and go to state 1
     "%t or %T"      shift, and go to state 3
@@ -2795,19 +2775,17 @@ State 36
   170 listableEnd: . listableBegin ":" variable
   171            | . listableBegin ":" functionCall
   172            | . listableBegin
-  178 variable: functionCall . "." variable
+  178 variable: functionCall . "." "identifier"
   179         | functionCall . "." keywords
-  180         | functionCall . "." functionCall
-  182         | functionCall . listableEnd
-  198         | functionCall . "(" functionArgs ")"
-  241 variableDeclaration: functionCall . "=" variable
-  242                    | functionCall . "=" functionCall
-  244                    | functionCall . "=" ":"
-  246                    | functionCall . "=" returnControl
-  250 assignable: functionCall . "." variable
-  251           | functionCall . "." keywords
-  252           | functionCall . "." functionCall
-  256           | functionCall . "(" functionArgs ")"
+  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 ")"
 
     "'"         shift, and go to state 114
     ":"         shift, and go to state 115
@@ -2866,16 +2844,16 @@ State 38
 
 State 39
 
-  196 variable: comparison .
+  195 variable: comparison .
 
-    $default  reduce using rule 196 (variable)
+    $default  reduce using rule 195 (variable)
 
 
 State 40
 
-  185 variable: operation .
+  184 variable: operation .
 
-    $default  reduce using rule 185 (variable)
+    $default  reduce using rule 184 (variable)
 
 
 State 41
@@ -2955,12 +2933,12 @@ State 41
   175 variable: variable . "." "identifier"
   176         | variable . "." keywords
   177         | variable . "." functionCall
-  181         | variable . listableEnd
-  197         | variable . "(" functionArgs ")"
-  247 assignable: variable . "." "identifier"
-  248           | variable . "." keywords
-  249           | variable . "." functionCall
-  255           | variable . "(" functionArgs ")"
+  180         | variable . listableEnd
+  196         | variable . "(" functionArgs ")"
+  246 assignable: variable . "." "identifier"
+  247           | variable . "." keywords
+  248           | variable . "." functionCall
+  253           | variable . "(" functionArgs ")"
 
     "'"         shift, and go to state 150
     ":"         shift, and go to state 115
@@ -3004,16 +2982,16 @@ State 41
 
 State 42
 
-  184 variable: cell .
+  183 variable: cell .
 
-    $default  reduce using rule 184 (variable)
+    $default  reduce using rule 183 (variable)
 
 
 State 43
 
-  183 variable: matrix .
+  182 variable: matrix .
 
-    $default  reduce using rule 183 (variable)
+    $default  reduce using rule 182 (variable)
 
 
 State 44
@@ -3025,19 +3003,19 @@ State 44
 
 State 45
 
-  239 variableDeclaration: assignable . "=" variable
-  240                    | assignable . "=" functionCall
-  243                    | assignable . "=" ":"
-  245                    | assignable . "=" returnControl
+  238 variableDeclaration: assignable . "=" variable
+  239                    | assignable . "=" functionCall
+  242                    | assignable . "=" ":"
+  244                    | assignable . "=" returnControl
 
     "="  shift, and go to state 159
 
 
 State 46
 
-  254 assignable: multipleResults .
+  252 assignable: multipleResults .
 
-    $default  reduce using rule 254 (assignable)
+    $default  reduce using rule 252 (assignable)
 
 
 State 47
@@ -3087,49 +3065,48 @@ State 49
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
-  285 selectControl: select . selectable selectConditionBreak casesControl "end"
-  286              | select . selectable selectConditionBreak casesControl defaultCase elseBody "end"
-  287              | select . selectable "line comment" selectConditionBreak casesControl "end"
-  288              | select . selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
-  298 selectable: . variable
-  299           | . functionCall
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  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
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -3224,63 +3201,62 @@ State 55
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  213       | "[" . matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  214       | "[" . "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  215       | "[" . matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  216       | "[" . "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  217       | "[" . matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  218       | "[" . "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  219       | "[" . "end of line" "]"
-  220       | . "[" "]"
-  220       | "[" . "]"
-  221 matrixOrCellLines: . matrixOrCellLines matrixOrCellLine
-  222                  | . matrixOrCellLine
-  227 matrixOrCellLine: . matrixOrCellColumns matrixOrCellLineBreak
-  228                 | . matrixOrCellColumns matrixOrCellColumnsBreak matrixOrCellLineBreak
-  229 matrixOrCellColumns: . matrixOrCellColumns matrixOrCellColumnsBreak variable
-  230                    | . matrixOrCellColumns matrixOrCellColumnsBreak functionCall
-  231                    | . matrixOrCellColumns variable
-  232                    | . matrixOrCellColumns functionCall
-  233                    | . matrixOrCellColumns "line comment"
-  234                    | . variable
-  235                    | . functionCall
-  236                    | . "line comment"
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  212       | "[" . matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  213       | "[" . "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  214       | "[" . matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  215       | "[" . "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  216       | "[" . matrixOrCellColumns "]"
+  217       | . "[" "end of line" matrixOrCellColumns "]"
+  217       | "[" . "end of line" matrixOrCellColumns "]"
+  218       | . "[" "end of line" "]"
+  218       | "[" . "end of line" "]"
+  219       | . "[" "]"
+  219       | "[" . "]"
+  220 matrixOrCellLines: . matrixOrCellLines matrixOrCellLine
+  221                  | . matrixOrCellLine
+  226 matrixOrCellLine: . matrixOrCellColumns matrixOrCellLineBreak
+  227                 | . matrixOrCellColumns matrixOrCellColumnsBreak matrixOrCellLineBreak
+  228 matrixOrCellColumns: . matrixOrCellColumns matrixOrCellColumnsBreak variable
+  229                    | . matrixOrCellColumns matrixOrCellColumnsBreak functionCall
+  230                    | . matrixOrCellColumns variable
+  231                    | . matrixOrCellColumns functionCall
+  232                    | . matrixOrCellColumns "line comment"
+  233                    | . variable
+  234                    | . functionCall
+  235                    | . "line comment"
 
     "end of line"   shift, and go to state 62
     "%t or %T"      shift, and go to state 3
@@ -3318,15 +3294,15 @@ State 56
    50                   | "identifier" . "{" functionArgs "}"
    51                   | "identifier" . "(" ")"
    52                   | "identifier" . "{" "}"
-  186 variable: "identifier" .  ["end of file", error, "end of line", "%t or %T", "%f or %F", "'", "~ or @", "$", ",", ":", ";", ")", "[", "]", "}", ".", ".'", "+", "-", "*", ".*", ".*.", "*.", "/", "./", "/.", "./.", "\\", ".\\", "\\.", ".\\.", "** or ^", ".^", "==", "<> or ~=", "<", "<=", ">", ">=", "&", "&&", "|", "||", "=", "if", "then", "else", "elseif", "end", "select", "switch", "case", "otherwise", "function", "endfunction", "for", "while", "do", "break", "continue", "try", "catch", "return", "string", "identifier", "integer", "float", "number", "line comment"]
+  185 variable: "identifier" .  ["end of file", error, "end of line", "%t or %T", "%f or %F", "'", "~ or @", "$", ",", ":", ";", ")", "[", "]", "}", ".", ".'", "+", "-", "*", ".*", ".*.", "*.", "/", "./", "/.", "./.", "\\", ".\\", "\\.", ".\\.", "** or ^", ".^", "==", "<> or ~=", "<", "<=", ">", ">=", "&", "&&", "|", "||", "if", "then", "else", "elseif", "end", "select", "switch", "case", "otherwise", "function", "endfunction", "for", "while", "do", "break", "continue", "try", "catch", "return", "string", "identifier", "integer", "float", "number", "line comment"]
 
     "("  shift, and go to state 96
     "{"  shift, and go to state 97
 
-    $default  reduce using rule 186 (variable)
+    $default  reduce using rule 185 (variable)
 
-    Conflict between rule 186 and token "(" resolved as shift (LISTABLE < "(").
-    Conflict between rule 186 and token "{" resolved as shift (LISTABLE < "{").
+    Conflict between rule 185 and token "(" resolved as shift (LISTABLE < "(").
+    Conflict between rule 185 and token "{" resolved as shift (LISTABLE < "{").
 
 
 State 57
@@ -3402,12 +3378,11 @@ State 57
   170 listableEnd: . listableBegin ":" variable
   171            | . listableBegin ":" functionCall
   172            | . listableBegin
-  174 variable: "~ or @" functionCall .  ["end of file", error, "end of line", "%t or %T", "%f or %F", "'", "~ or @", "$", ",", ":", ";", ")", "[", "]", "{", "}", ".'", "+", "-", "*", ".*", ".*.", "*.", "/", "./", "/.", "./.", "\\", ".\\", "\\.", ".\\.", "** or ^", ".^", "==", "<> or ~=", "<", "<=", ">", ">=", "&", "&&", "|", "||", "=", "if", "then", "else", "elseif", "end", "select", "switch", "case", "otherwise", "function", "endfunction", "for", "while", "do", "break", "continue", "try", "catch", "return", "string", "identifier", "integer", "float", "number", "line comment"]
-  178         | functionCall . "." variable
+  174 variable: "~ or @" functionCall .  ["end of file", error, "end of line", "%t or %T", "%f or %F", "'", "~ or @", "$", ",", ":", ";", ")", "[", "]", "{", "}", ".'", "+", "-", "*", ".*", ".*.", "*.", "/", "./", "/.", "./.", "\\", ".\\", "\\.", ".\\.", "** or ^", ".^", "==", "<> or ~=", "<", "<=", ">", ">=", "&", "&&", "|", "||", "if", "then", "else", "elseif", "end", "select", "switch", "case", "otherwise", "function", "endfunction", "for", "while", "do", "break", "continue", "try", "catch", "return", "string", "identifier", "integer", "float", "number", "line comment"]
+  178         | functionCall . "." "identifier"
   179         | functionCall . "." keywords
-  180         | functionCall . "." functionCall
-  182         | functionCall . listableEnd
-  198         | functionCall . "(" functionArgs ")"
+  181         | functionCall . listableEnd
+  197         | functionCall . "(" functionArgs ")"
 
     "("  shift, and go to state 164
     "."  shift, and go to state 165
@@ -3525,12 +3500,12 @@ State 58
   170 listableEnd: . listableBegin ":" variable
   171            | . listableBegin ":" functionCall
   172            | . listableBegin
-  173 variable: "~ or @" variable .  ["end of file", error, "end of line", "%t or %T", "%f or %F", "'", "~ or @", "$", ",", ":", ";", ")", "[", "]", "{", "}", ".'", "+", "-", "*", ".*", ".*.", "*.", "/", "./", "/.", "./.", "\\", ".\\", "\\.", ".\\.", "** or ^", ".^", "==", "<> or ~=", "<", "<=", ">", ">=", "&", "&&", "|", "||", "=", "if", "then", "else", "elseif", "end", "select", "switch", "case", "otherwise", "function", "endfunction", "for", "while", "do", "break", "continue", "try", "catch", "return", "string", "identifier", "integer", "float", "number", "line comment"]
+  173 variable: "~ or @" variable .  ["end of file", error, "end of line", "%t or %T", "%f or %F", "'", "~ or @", "$", ",", ":", ";", ")", "[", "]", "{", "}", ".'", "+", "-", "*", ".*", ".*.", "*.", "/", "./", "/.", "./.", "\\", ".\\", "\\.", ".\\.", "** or ^", ".^", "==", "<> or ~=", "<", "<=", ">", ">=", "&", "&&", "|", "||", "if", "then", "else", "elseif", "end", "select", "switch", "case", "otherwise", "function", "endfunction", "for", "while", "do", "break", "continue", "try", "catch", "return", "string", "identifier", "integer", "float", "number", "line comment"]
   175         | variable . "." "identifier"
   176         | variable . "." keywords
   177         | variable . "." functionCall
-  181         | variable . listableEnd
-  197         | variable . "(" functionArgs ")"
+  180         | variable . listableEnd
+  196         | variable . "(" functionArgs ")"
 
     "("  shift, and go to state 166
     "."  shift, and go to state 167
@@ -3649,13 +3624,12 @@ State 59
   170 listableEnd: . listableBegin ":" variable
   171            | . listableBegin ":" functionCall
   172            | . listableBegin
-  178 variable: functionCall . "." variable
+  178 variable: functionCall . "." "identifier"
   179         | functionCall . "." keywords
-  180         | functionCall . "." functionCall
-  182         | functionCall . listableEnd
-  198         | functionCall . "(" functionArgs ")"
-  202 variableFields: functionCall . "," functionCall
-  203               | functionCall . "," variable
+  181         | functionCall . listableEnd
+  197         | functionCall . "(" functionArgs ")"
+  201 variableFields: functionCall . "," functionCall
+  202               | functionCall . "," variable
 
     "'"         shift, and go to state 114
     ","         shift, and go to state 168
@@ -3773,11 +3747,11 @@ State 60
   175 variable: variable . "." "identifier"
   176         | variable . "." keywords
   177         | variable . "." functionCall
-  181         | variable . listableEnd
-  194         | "(" variable . ")"
-  197         | variable . "(" functionArgs ")"
-  201 variableFields: variable . "," variable
-  204               | variable . "," functionCall
+  180         | variable . listableEnd
+  193         | "(" variable . ")"
+  196         | variable . "(" functionArgs ")"
+  200 variableFields: variable . "," variable
+  203               | variable . "," functionCall
 
     "'"         shift, and go to state 150
     ","         shift, and go to state 170
@@ -3821,9 +3795,9 @@ State 60
 
 State 61
 
-  195 variable: "(" variableFields . ")"
-  199 variableFields: variableFields . "," variable
-  200               | variableFields . "," functionCall
+  194 variable: "(" variableFields . ")"
+  198 variableFields: variableFields . "," variable
+  199               | variableFields . "," functionCall
 
     ","  shift, and go to state 172
     ")"  shift, and go to state 173
@@ -3862,59 +3836,58 @@ State 62
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  214       | "[" "end of line" . matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  216       | "[" "end of line" . matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  218       | "[" "end of line" . matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  219       | "[" "end of line" . "]"
-  220       | . "[" "]"
-  221 matrixOrCellLines: . matrixOrCellLines matrixOrCellLine
-  222                  | . matrixOrCellLine
-  227 matrixOrCellLine: . matrixOrCellColumns matrixOrCellLineBreak
-  228                 | . matrixOrCellColumns matrixOrCellColumnsBreak matrixOrCellLineBreak
-  229 matrixOrCellColumns: . matrixOrCellColumns matrixOrCellColumnsBreak variable
-  230                    | . matrixOrCellColumns matrixOrCellColumnsBreak functionCall
-  231                    | . matrixOrCellColumns variable
-  232                    | . matrixOrCellColumns functionCall
-  233                    | . matrixOrCellColumns "line comment"
-  234                    | . variable
-  235                    | . functionCall
-  236                    | . "line comment"
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  213       | "[" "end of line" . matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  215       | "[" "end of line" . matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  217       | . "[" "end of line" matrixOrCellColumns "]"
+  217       | "[" "end of line" . matrixOrCellColumns "]"
+  218       | . "[" "end of line" "]"
+  218       | "[" "end of line" . "]"
+  219       | . "[" "]"
+  220 matrixOrCellLines: . matrixOrCellLines matrixOrCellLine
+  221                  | . matrixOrCellLine
+  226 matrixOrCellLine: . matrixOrCellColumns matrixOrCellLineBreak
+  227                 | . matrixOrCellColumns matrixOrCellColumnsBreak matrixOrCellLineBreak
+  228 matrixOrCellColumns: . matrixOrCellColumns matrixOrCellColumnsBreak variable
+  229                    | . matrixOrCellColumns matrixOrCellColumnsBreak functionCall
+  230                    | . matrixOrCellColumns variable
+  231                    | . matrixOrCellColumns functionCall
+  232                    | . matrixOrCellColumns "line comment"
+  233                    | . variable
+  234                    | . functionCall
+  235                    | . "line comment"
 
     "%t or %T"      shift, and go to state 3
     "%f or %F"      shift, and go to state 4
@@ -3947,16 +3920,16 @@ State 62
 
 State 63
 
-  220 matrix: "[" "]" .
+  219 matrix: "[" "]" .
 
-    $default  reduce using rule 220 (matrix)
+    $default  reduce using rule 219 (matrix)
 
 
 State 64
 
-  236 matrixOrCellColumns: "line comment" .
+  235 matrixOrCellColumns: "line comment" .
 
-    $default  reduce using rule 236 (matrixOrCellColumns)
+    $default  reduce using rule 235 (matrixOrCellColumns)
 
 
 State 65
@@ -4032,12 +4005,11 @@ State 65
   170 listableEnd: . listableBegin ":" variable
   171            | . listableBegin ":" functionCall
   172            | . listableBegin
-  178 variable: functionCall . "." variable
+  178 variable: functionCall . "." "identifier"
   179         | functionCall . "." keywords
-  180         | functionCall . "." functionCall
-  182         | functionCall . listableEnd
-  198         | functionCall . "(" functionArgs ")"
-  235 matrixOrCellColumns: functionCall .  ["end of line", "%t or %T", "%f or %F", "~ or @", "$", ",", ";", "[", "]", "{", "}", "string", "identifier", "integer", "float", "number", "line comment"]
+  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"]
 
     "'"         shift, and go to state 114
     ":"         shift, and go to state 115
@@ -4071,16 +4043,16 @@ State 65
     "|"         shift, and go to state 143
     "||"        shift, and go to state 144
 
-    $default  reduce using rule 235 (matrixOrCellColumns)
+    $default  reduce using rule 234 (matrixOrCellColumns)
 
     rightComparable  go to state 146
     rightOperand     go to state 147
     listableBegin    go to state 148
     listableEnd      go to state 149
 
-    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 < "-").
+    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 66
@@ -4159,9 +4131,9 @@ State 66
   175 variable: variable . "." "identifier"
   176         | variable . "." keywords
   177         | variable . "." functionCall
-  181         | variable . listableEnd
-  197         | variable . "(" functionArgs ")"
-  234 matrixOrCellColumns: variable .  ["end of line", "%t or %T", "%f or %F", "~ or @", "$", ",", ";", "[", "]", "{", "}", "string", "identifier", "integer", "float", "number", "line comment"]
+  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"]
 
     "'"         shift, and go to state 150
     ":"         shift, and go to state 115
@@ -4195,16 +4167,16 @@ State 66
     "|"         shift, and go to state 143
     "||"        shift, and go to state 144
 
-    $default  reduce using rule 234 (matrixOrCellColumns)
+    $default  reduce using rule 233 (matrixOrCellColumns)
 
     rightComparable  go to state 156
     rightOperand     go to state 157
     listableBegin    go to state 148
     listableEnd      go to state 158
 
-    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 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 < "-").
 
 
 State 67
@@ -4240,56 +4212,55 @@ State 67
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  213       | "[" matrixOrCellLines . "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  215       | "[" matrixOrCellLines . matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
-  221 matrixOrCellLines: matrixOrCellLines . matrixOrCellLine
-  227 matrixOrCellLine: . matrixOrCellColumns matrixOrCellLineBreak
-  228                 | . matrixOrCellColumns matrixOrCellColumnsBreak matrixOrCellLineBreak
-  229 matrixOrCellColumns: . matrixOrCellColumns matrixOrCellColumnsBreak variable
-  230                    | . matrixOrCellColumns matrixOrCellColumnsBreak functionCall
-  231                    | . matrixOrCellColumns variable
-  232                    | . matrixOrCellColumns functionCall
-  233                    | . matrixOrCellColumns "line comment"
-  234                    | . variable
-  235                    | . functionCall
-  236                    | . "line comment"
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  212       | "[" matrixOrCellLines . "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  214       | "[" matrixOrCellLines . matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  217       | . "[" "end of line" matrixOrCellColumns "]"
+  218       | . "[" "end of line" "]"
+  219       | . "[" "]"
+  220 matrixOrCellLines: matrixOrCellLines . matrixOrCellLine
+  226 matrixOrCellLine: . matrixOrCellColumns matrixOrCellLineBreak
+  227                 | . matrixOrCellColumns matrixOrCellColumnsBreak matrixOrCellLineBreak
+  228 matrixOrCellColumns: . matrixOrCellColumns matrixOrCellColumnsBreak variable
+  229                    | . matrixOrCellColumns matrixOrCellColumnsBreak functionCall
+  230                    | . matrixOrCellColumns variable
+  231                    | . matrixOrCellColumns functionCall
+  232                    | . matrixOrCellColumns "line comment"
+  233                    | . variable
+  234                    | . functionCall
+  235                    | . "line comment"
 
     "%t or %T"      shift, and go to state 3
     "%f or %F"      shift, and go to state 4
@@ -4321,9 +4292,9 @@ State 67
 
 State 68
 
-  222 matrixOrCellLines: matrixOrCellLine .
+  221 matrixOrCellLines: matrixOrCellLine .
 
-    $default  reduce using rule 222 (matrixOrCellLines)
+    $default  reduce using rule 221 (matrixOrCellLines)
 
 
 State 69
@@ -4359,58 +4330,57 @@ State 69
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  217       | "[" matrixOrCellColumns . "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
-  223 matrixOrCellLineBreak: . ";"
-  224                      | . "end of line"
-  225                      | . matrixOrCellLineBreak "end of line"
-  226                      | . matrixOrCellLineBreak ";"
-  227 matrixOrCellLine: matrixOrCellColumns . matrixOrCellLineBreak
-  228                 | matrixOrCellColumns . matrixOrCellColumnsBreak matrixOrCellLineBreak
-  229 matrixOrCellColumns: matrixOrCellColumns . matrixOrCellColumnsBreak variable
-  230                    | matrixOrCellColumns . matrixOrCellColumnsBreak functionCall
-  231                    | matrixOrCellColumns . variable
-  232                    | matrixOrCellColumns . functionCall
-  233                    | matrixOrCellColumns . "line comment"
-  237 matrixOrCellColumnsBreak: . matrixOrCellColumnsBreak ","
-  238                         | . ","
-  257 multipleResults: "[" matrixOrCellColumns . "]"
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  216       | "[" matrixOrCellColumns . "]"
+  217       | . "[" "end of line" matrixOrCellColumns "]"
+  218       | . "[" "end of line" "]"
+  219       | . "[" "]"
+  222 matrixOrCellLineBreak: . ";"
+  223                      | . "end of line"
+  224                      | . matrixOrCellLineBreak "end of line"
+  225                      | . matrixOrCellLineBreak ";"
+  226 matrixOrCellLine: matrixOrCellColumns . matrixOrCellLineBreak
+  227                 | matrixOrCellColumns . matrixOrCellColumnsBreak matrixOrCellLineBreak
+  228 matrixOrCellColumns: matrixOrCellColumns . matrixOrCellColumnsBreak variable
+  229                    | matrixOrCellColumns . matrixOrCellColumnsBreak functionCall
+  230                    | matrixOrCellColumns . variable
+  231                    | matrixOrCellColumns . functionCall
+  232                    | matrixOrCellColumns . "line comment"
+  236 matrixOrCellColumnsBreak: . matrixOrCellColumnsBreak ","
+  237                         | . ","
+  255 multipleResults: "[" matrixOrCellColumns . "]"
 
     "end of line"   shift, and go to state 180
     "%t or %T"      shift, and go to state 3
@@ -4476,59 +4446,58 @@ State 70
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  206     | "{" "end of line" . matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  208     | "{" "end of line" . matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  210     | "{" "end of line" . matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  211     | "{" "end of line" . "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
-  221 matrixOrCellLines: . matrixOrCellLines matrixOrCellLine
-  222                  | . matrixOrCellLine
-  227 matrixOrCellLine: . matrixOrCellColumns matrixOrCellLineBreak
-  228                 | . matrixOrCellColumns matrixOrCellColumnsBreak matrixOrCellLineBreak
-  229 matrixOrCellColumns: . matrixOrCellColumns matrixOrCellColumnsBreak variable
-  230                    | . matrixOrCellColumns matrixOrCellColumnsBreak functionCall
-  231                    | . matrixOrCellColumns variable
-  232                    | . matrixOrCellColumns functionCall
-  233                    | . matrixOrCellColumns "line comment"
-  234                    | . variable
-  235                    | . functionCall
-  236                    | . "line comment"
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  205     | "{" "end of line" . matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  207     | "{" "end of line" . matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  209     | "{" "end of line" . matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  210     | "{" "end of line" . "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  217       | . "[" "end of line" matrixOrCellColumns "]"
+  218       | . "[" "end of line" "]"
+  219       | . "[" "]"
+  220 matrixOrCellLines: . matrixOrCellLines matrixOrCellLine
+  221                  | . matrixOrCellLine
+  226 matrixOrCellLine: . matrixOrCellColumns matrixOrCellLineBreak
+  227                 | . matrixOrCellColumns matrixOrCellColumnsBreak matrixOrCellLineBreak
+  228 matrixOrCellColumns: . matrixOrCellColumns matrixOrCellColumnsBreak variable
+  229                    | . matrixOrCellColumns matrixOrCellColumnsBreak functionCall
+  230                    | . matrixOrCellColumns variable
+  231                    | . matrixOrCellColumns functionCall
+  232                    | . matrixOrCellColumns "line comment"
+  233                    | . variable
+  234                    | . functionCall
+  235                    | . "line comment"
 
     "%t or %T"      shift, and go to state 3
     "%f or %F"      shift, and go to state 4
@@ -4561,9 +4530,9 @@ State 70
 
 State 71
 
-  212 cell: "{" "}" .
+  211 cell: "{" "}" .
 
-    $default  reduce using rule 212 (cell)
+    $default  reduce using rule 211 (cell)
 
 
 State 72
@@ -4599,56 +4568,55 @@ State 72
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  205     | "{" matrixOrCellLines . "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  207     | "{" matrixOrCellLines . matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
-  221 matrixOrCellLines: matrixOrCellLines . matrixOrCellLine
-  227 matrixOrCellLine: . matrixOrCellColumns matrixOrCellLineBreak
-  228                 | . matrixOrCellColumns matrixOrCellColumnsBreak matrixOrCellLineBreak
-  229 matrixOrCellColumns: . matrixOrCellColumns matrixOrCellColumnsBreak variable
-  230                    | . matrixOrCellColumns matrixOrCellColumnsBreak functionCall
-  231                    | . matrixOrCellColumns variable
-  232                    | . matrixOrCellColumns functionCall
-  233                    | . matrixOrCellColumns "line comment"
-  234                    | . variable
-  235                    | . functionCall
-  236                    | . "line comment"
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  204     | "{" matrixOrCellLines . "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  206     | "{" matrixOrCellLines . matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  217       | . "[" "end of line" matrixOrCellColumns "]"
+  218       | . "[" "end of line" "]"
+  219       | . "[" "]"
+  220 matrixOrCellLines: matrixOrCellLines . matrixOrCellLine
+  226 matrixOrCellLine: . matrixOrCellColumns matrixOrCellLineBreak
+  227                 | . matrixOrCellColumns matrixOrCellColumnsBreak matrixOrCellLineBreak
+  228 matrixOrCellColumns: . matrixOrCellColumns matrixOrCellColumnsBreak variable
+  229                    | . matrixOrCellColumns matrixOrCellColumnsBreak functionCall
+  230                    | . matrixOrCellColumns variable
+  231                    | . matrixOrCellColumns functionCall
+  232                    | . matrixOrCellColumns "line comment"
+  233                    | . variable
+  234                    | . functionCall
+  235                    | . "line comment"
 
     "%t or %T"      shift, and go to state 3
     "%f or %F"      shift, and go to state 4
@@ -4711,57 +4679,56 @@ State 73
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  209     | "{" matrixOrCellColumns . "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
-  223 matrixOrCellLineBreak: . ";"
-  224                      | . "end of line"
-  225                      | . matrixOrCellLineBreak "end of line"
-  226                      | . matrixOrCellLineBreak ";"
-  227 matrixOrCellLine: matrixOrCellColumns . matrixOrCellLineBreak
-  228                 | matrixOrCellColumns . matrixOrCellColumnsBreak matrixOrCellLineBreak
-  229 matrixOrCellColumns: matrixOrCellColumns . matrixOrCellColumnsBreak variable
-  230                    | matrixOrCellColumns . matrixOrCellColumnsBreak functionCall
-  231                    | matrixOrCellColumns . variable
-  232                    | matrixOrCellColumns . functionCall
-  233                    | matrixOrCellColumns . "line comment"
-  237 matrixOrCellColumnsBreak: . matrixOrCellColumnsBreak ","
-  238                         | . ","
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  208     | "{" matrixOrCellColumns . "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  217       | . "[" "end of line" matrixOrCellColumns "]"
+  218       | . "[" "end of line" "]"
+  219       | . "[" "]"
+  222 matrixOrCellLineBreak: . ";"
+  223                      | . "end of line"
+  224                      | . matrixOrCellLineBreak "end of line"
+  225                      | . matrixOrCellLineBreak ";"
+  226 matrixOrCellLine: matrixOrCellColumns . matrixOrCellLineBreak
+  227                 | matrixOrCellColumns . matrixOrCellColumnsBreak matrixOrCellLineBreak
+  228 matrixOrCellColumns: matrixOrCellColumns . matrixOrCellColumnsBreak variable
+  229                    | matrixOrCellColumns . matrixOrCellColumnsBreak functionCall
+  230                    | matrixOrCellColumns . variable
+  231                    | matrixOrCellColumns . functionCall
+  232                    | matrixOrCellColumns . "line comment"
+  236 matrixOrCellColumnsBreak: . matrixOrCellColumnsBreak ","
+  237                         | . ","
 
     "end of line"   shift, and go to state 180
     "%t or %T"      shift, and go to state 3
@@ -4828,7 +4795,7 @@ State 74
   120                | . "<=" functionCall
   121                | . "<=" ":"
   123 operation: functionCall . rightOperand
-  127          | "+" functionCall .  ["end of file", error, "end of line", "%t or %T", "%f or %F", "~ or @", "$", ",", ":", ";", ")", "[", "]", "{", "}", "+", "-", "==", "<> or ~=", "<", "<=", ">", ">=", "&", "&&", "|", "||", "=", "if", "then", "else", "elseif", "end", "select", "switch", "case", "otherwise", "function", "endfunction", "for", "while", "do", "break", "continue", "try", "catch", "return", "string", "identifier", "integer", "float", "number", "line comment"]
+  127          | "+" functionCall .  ["end of file", error, "end of line", "%t or %T", "%f or %F", "~ or @", "$", ",", ":", ";", ")", "[", "]", "{", "}", "+", "-", "==", "<> or ~=", "<", "<=", ">", ">=", "&", "&&", "|", "||", "if", "then", "else", "elseif", "end", "select", "switch", "case", "otherwise", "function", "endfunction", "for", "while", "do", "break", "continue", "try", "catch", "return", "string", "identifier", "integer", "float", "number", "line comment"]
   130          | functionCall . "** or ^" variable
   131          | functionCall . "** or ^" functionCall
   134          | functionCall . ".^" variable
@@ -4868,11 +4835,10 @@ State 74
   170 listableEnd: . listableBegin ":" variable
   171            | . listableBegin ":" functionCall
   172            | . listableBegin
-  178 variable: functionCall . "." variable
+  178 variable: functionCall . "." "identifier"
   179         | functionCall . "." keywords
-  180         | functionCall . "." functionCall
-  182         | functionCall . listableEnd
-  198         | functionCall . "(" functionArgs ")"
+  181         | functionCall . listableEnd
+  197         | functionCall . "(" functionArgs ")"
 
     "'"        shift, and go to state 114
     "("        shift, and go to state 164
@@ -4967,7 +4933,7 @@ State 75
   120                | . "<=" functionCall
   121                | . "<=" ":"
   122 operation: variable . rightOperand
-  126          | "+" variable .  ["end of file", error, "end of line", "%t or %T", "%f or %F", "~ or @", "$", ",", ":", ";", ")", "[", "]", "{", "}", "+", "-", "==", "<> or ~=", "<", "<=", ">", ">=", "&", "&&", "|", "||", "=", "if", "then", "else", "elseif", "end", "select", "switch", "case", "otherwise", "function", "endfunction", "for", "while", "do", "break", "continue", "try", "catch", "return", "string", "identifier", "integer", "float", "number", "line comment"]
+  126          | "+" variable .  ["end of file", error, "end of line", "%t or %T", "%f or %F", "~ or @", "$", ",", ":", ";", ")", "[", "]", "{", "}", "+", "-", "==", "<> or ~=", "<", "<=", ">", ">=", "&", "&&", "|", "||", "if", "then", "else", "elseif", "end", "select", "switch", "case", "otherwise", "function", "endfunction", "for", "while", "do", "break", "continue", "try", "catch", "return", "string", "identifier", "integer", "float", "number", "line comment"]
   128          | variable . "** or ^" variable
   129          | variable . "** or ^" functionCall
   132          | variable . ".^" variable
@@ -5010,8 +4976,8 @@ State 75
   175 variable: variable . "." "identifier"
   176         | variable . "." keywords
   177         | variable . "." functionCall
-  181         | variable . listableEnd
-  197         | variable . "(" functionArgs ")"
+  180         | variable . listableEnd
+  196         | variable . "(" functionArgs ")"
 
     "'"        shift, and go to state 150
     "("        shift, and go to state 166
@@ -5106,7 +5072,7 @@ State 76
   120                | . "<=" functionCall
   121                | . "<=" ":"
   123 operation: functionCall . rightOperand
-  125          | "-" functionCall .  ["end of file", error, "end of line", "%t or %T", "%f or %F", "~ or @", "$", ",", ":", ";", ")", "[", "]", "{", "}", "+", "-", "*", ".*", ".*.", "*.", "/", "./", "/.", "./.", "\\", ".\\", "\\.", ".\\.", "==", "<> or ~=", "<", "<=", ">", ">=", "&", "&&", "|", "||", "=", "if", "then", "else", "elseif", "end", "select", "switch", "case", "otherwise", "function", "endfunction", "for", "while", "do", "break", "continue", "try", "catch", "return", "string", "identifier", "integer", "float", "number", "line comment"]
+  125          | "-" functionCall .  ["end of file", error, "end of line", "%t or %T", "%f or %F", "~ or @", "$", ",", ":", ";", ")", "[", "]", "{", "}", "+", "-", "*", ".*", ".*.", "*.", "/", "./", "/.", "./.", "\\", ".\\", "\\.", ".\\.", "==", "<> or ~=", "<", "<=", ">", ">=", "&", "&&", "|", "||", "if", "then", "else", "elseif", "end", "select", "switch", "case", "otherwise", "function", "endfunction", "for", "while", "do", "break", "continue", "try", "catch", "return", "string", "identifier", "integer", "float", "number", "line comment"]
   130          | functionCall . "** or ^" variable
   131          | functionCall . "** or ^" functionCall
   134          | functionCall . ".^" variable
@@ -5146,11 +5112,10 @@ State 76
   170 listableEnd: . listableBegin ":" variable
   171            | . listableBegin ":" functionCall
   172            | . listableBegin
-  178 variable: functionCall . "." variable
+  178 variable: functionCall . "." "identifier"
   179         | functionCall . "." keywords
-  180         | functionCall . "." functionCall
-  182         | functionCall . listableEnd
-  198         | functionCall . "(" functionArgs ")"
+  181         | functionCall . listableEnd
+  197         | functionCall . "(" functionArgs ")"
 
     "'"        shift, and go to state 114
     "("        shift, and go to state 164
@@ -5233,7 +5198,7 @@ State 77
   120                | . "<=" functionCall
   121                | . "<=" ":"
   122 operation: variable . rightOperand
-  124          | "-" variable .  ["end of file", error, "end of line", "%t or %T", "%f or %F", "~ or @", "$", ",", ":", ";", ")", "[", "]", "{", "}", "+", "-", "*", ".*", ".*.", "*.", "/", "./", "/.", "./.", "\\", ".\\", "\\.", ".\\.", "==", "<> or ~=", "<", "<=", ">", ">=", "&", "&&", "|", "||", "=", "if", "then", "else", "elseif", "end", "select", "switch", "case", "otherwise", "function", "endfunction", "for", "while", "do", "break", "continue", "try", "catch", "return", "string", "identifier", "integer", "float", "number", "line comment"]
+  124          | "-" variable .  ["end of file", error, "end of line", "%t or %T", "%f or %F", "~ or @", "$", ",", ":", ";", ")", "[", "]", "{", "}", "+", "-", "*", ".*", ".*.", "*.", "/", "./", "/.", "./.", "\\", ".\\", "\\.", ".\\.", "==", "<> or ~=", "<", "<=", ">", ">=", "&", "&&", "|", "||", "if", "then", "else", "elseif", "end", "select", "switch", "case", "otherwise", "function", "endfunction", "for", "while", "do", "break", "continue", "try", "catch", "return", "string", "identifier", "integer", "float", "number", "line comment"]
   128          | variable . "** or ^" variable
   129          | variable . "** or ^" functionCall
   132          | variable . ".^" variable
@@ -5276,8 +5241,8 @@ State 77
   175 variable: variable . "." "identifier"
   176         | variable . "." keywords
   177         | variable . "." functionCall
-  181         | variable . listableEnd
-  197         | variable . "(" functionArgs ")"
+  180         | variable . listableEnd
+  196         | variable . "(" functionArgs ")"
 
     "'"        shift, and go to state 150
     "("        shift, and go to state 166
@@ -5400,11 +5365,10 @@ State 78
   170 listableEnd: . listableBegin ":" variable
   171            | . listableBegin ":" functionCall
   172            | . listableBegin
-  178 variable: functionCall . "." variable
+  178 variable: functionCall . "." "identifier"
   179         | functionCall . "." keywords
-  180         | functionCall . "." functionCall
-  182         | functionCall . listableEnd
-  198         | functionCall . "(" functionArgs ")"
+  181         | functionCall . listableEnd
+  197         | functionCall . "(" functionArgs ")"
 
     "'"         shift, and go to state 114
     ":"         shift, and go to state 115
@@ -5452,27 +5416,27 @@ State 78
 
 State 79
 
-  258 ifControl: "if" condition . then thenBody "end"
-  259          | "if" condition . then thenBody else elseBody "end"
-  260          | "if" condition . then thenBody elseIfControl "end"
-  265 ifConditionBreak: . ";"
-  266                 | . ";" "end of line"
-  267                 | . ","
-  268                 | . "," "end of line"
-  269                 | . "end of line"
-  270 then: . "then"
-  271     | . ifConditionBreak "then"
-  272     | . ifConditionBreak "then" "end of line"
-  273     | . "then" ifConditionBreak
-  274     | . ifConditionBreak
-  275     | . %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"]
+  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"]
 
     "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 275 (then)
+    $default  reduce using rule 273 (then)
 
     ifConditionBreak  go to state 199
     then              go to state 200
@@ -5555,8 +5519,8 @@ State 80
   175 variable: variable . "." "identifier"
   176         | variable . "." keywords
   177         | variable . "." functionCall
-  181         | variable . listableEnd
-  197         | variable . "(" functionArgs ")"
+  180         | variable . listableEnd
+  196         | variable . "(" functionArgs ")"
 
     "'"         shift, and go to state 150
     ":"         shift, and go to state 115
@@ -5639,39 +5603,39 @@ State 82
 
 State 83
 
-  326 forControl: "for" "(" . "identifier" "=" forIterator ")" forConditionBreak forBody "end"
+  324 forControl: "for" "(" . "identifier" "=" forIterator ")" forConditionBreak forBody "end"
 
     "identifier"  shift, and go to state 208
 
 
 State 84
 
-  325 forControl: "for" "identifier" . "=" forIterator forConditionBreak forBody "end"
+  323 forControl: "for" "identifier" . "=" forIterator forConditionBreak forBody "end"
 
     "="  shift, and go to state 209
 
 
 State 85
 
-  339 whileControl: "while" condition . whileConditionBreak whileBody "end"
-  342 whileConditionBreak: . ","
-  343                    | . ";"
-  344                    | . "do"
-  345                    | . "do" ","
-  346                    | . "do" ";"
-  347                    | . "then"
-  348                    | . "then" ","
-  349                    | . "then" ";"
-  350                    | . "line comment" "end of line"
-  351                    | . "end of line"
-  352                    | . "," "end of line"
-  353                    | . ";" "end of line"
-  354                    | . "do" "end of line"
-  355                    | . "do" "," "end of line"
-  356                    | . "do" ";" "end of line"
-  357                    | . "then" "end of line"
-  358                    | . "then" "," "end of line"
-  359                    | . "then" ";" "end of line"
+  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"
 
     "end of line"   shift, and go to state 210
     ","             shift, and go to state 211
@@ -5750,81 +5714,79 @@ State 86
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
-  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 "." variable
-  251           | . functionCall "." keywords
-  252           | . functionCall "." functionCall
-  253           | . "identifier"
-  254           | . multipleResults
-  255           | . variable "(" functionArgs ")"
-  256           | . functionCall "(" functionArgs ")"
-  257 multipleResults: . "[" matrixOrCellColumns "]"
-  258 ifControl: . "if" condition then thenBody "end"
-  259          | . "if" condition then thenBody else elseBody "end"
-  260          | . "if" condition then thenBody elseIfControl "end"
-  285 selectControl: . select selectable selectConditionBreak casesControl "end"
-  286              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
-  287              | . select selectable "line comment" selectConditionBreak casesControl "end"
-  288              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
-  289 select: . "select"
-  290       | . "switch"
-  325 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
-  326           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
-  339 whileControl: . "while" condition whileConditionBreak whileBody "end"
-  360 tryControl: . "try" catchBody "catch" catchBody "end"
-  361           | . "try" catchBody "end"
-  363 catchBody: "end of line" . expressions
-  366          | "end of line" .  ["end", "catch"]
-  368 returnControl: . "return"
-  369              | . "return" variable
-  370              | . "return" functionCall
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  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
 
     error           shift, and go to state 1
     "%t or %T"      shift, and go to state 3
@@ -5853,8 +5815,8 @@ State 86
     "number"        shift, and go to state 28
     "line comment"  shift, and go to state 29
 
-    "end"    reduce using rule 366 (catchBody)
-    "catch"  reduce using rule 366 (catchBody)
+    "end"    reduce using rule 364 (catchBody)
+    "catch"  reduce using rule 364 (catchBody)
 
     expressions           go to state 217
     recursiveExpression   go to state 32
@@ -5947,80 +5909,78 @@ State 87
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
-  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 "." variable
-  251           | . functionCall "." keywords
-  252           | . functionCall "." functionCall
-  253           | . "identifier"
-  254           | . multipleResults
-  255           | . variable "(" functionArgs ")"
-  256           | . functionCall "(" functionArgs ")"
-  257 multipleResults: . "[" matrixOrCellColumns "]"
-  258 ifControl: . "if" condition then thenBody "end"
-  259          | . "if" condition then thenBody else elseBody "end"
-  260          | . "if" condition then thenBody elseIfControl "end"
-  285 selectControl: . select selectable selectConditionBreak casesControl "end"
-  286              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
-  287              | . select selectable "line comment" selectConditionBreak casesControl "end"
-  288              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
-  289 select: . "select"
-  290       | . "switch"
-  325 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
-  326           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
-  339 whileControl: . "while" condition whileConditionBreak whileBody "end"
-  360 tryControl: . "try" catchBody "catch" catchBody "end"
-  361           | . "try" catchBody "end"
-  365 catchBody: "," . expressions
-  368 returnControl: . "return"
-  369              | . "return" variable
-  370              | . "return" functionCall
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  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
 
     error           shift, and go to state 1
     "%t or %T"      shift, and go to state 3
@@ -6140,80 +6100,78 @@ State 88
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
-  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 "." variable
-  251           | . functionCall "." keywords
-  252           | . functionCall "." functionCall
-  253           | . "identifier"
-  254           | . multipleResults
-  255           | . variable "(" functionArgs ")"
-  256           | . functionCall "(" functionArgs ")"
-  257 multipleResults: . "[" matrixOrCellColumns "]"
-  258 ifControl: . "if" condition then thenBody "end"
-  259          | . "if" condition then thenBody else elseBody "end"
-  260          | . "if" condition then thenBody elseIfControl "end"
-  285 selectControl: . select selectable selectConditionBreak casesControl "end"
-  286              | . select selectable selectConditionBreak casesControl defaultCase elseBody "end"
-  287              | . select selectable "line comment" selectConditionBreak casesControl "end"
-  288              | . select selectable "line comment" selectConditionBreak casesControl defaultCase elseBody "end"
-  289 select: . "select"
-  290       | . "switch"
-  325 forControl: . "for" "identifier" "=" forIterator forConditionBreak forBody "end"
-  326           | . "for" "(" "identifier" "=" forIterator ")" forConditionBreak forBody "end"
-  339 whileControl: . "while" condition whileConditionBreak whileBody "end"
-  360 tryControl: . "try" catchBody "catch" catchBody "end"
-  361           | . "try" catchBody "end"
-  364 catchBody: ";" . expressions
-  368 returnControl: . "return"
-  369              | . "return" variable
-  370              | . "return" functionCall
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  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
 
     error           shift, and go to state 1
     "%t or %T"      shift, and go to state 3
@@ -6268,15 +6226,15 @@ State 88
 
 State 89
 
-  362 catchBody: expressions .
+  360 catchBody: expressions .
 
-    $default  reduce using rule 362 (catchBody)
+    $default  reduce using rule 360 (catchBody)
 
 
 State 90
 
-  360 tryControl: "try" catchBody . "catch" catchBody "end"
-  361           | "try" catchBody . "end"
+  358 tryControl: "try" catchBody . "catch" catchBody "end"
+  359           | "try" catchBody . "end"
 
     "end"    shift, and go to state 220
     "catch"  shift, and go to state 221
@@ -6355,12 +6313,11 @@ State 91
   170 listableEnd: . listableBegin ":" variable
   171            | . listableBegin ":" functionCall
   172            | . listableBegin
-  178 variable: functionCall . "." variable
+  178 variable: functionCall . "." "identifier"
   179         | functionCall . "." keywords
-  180         | functionCall . "." functionCall
-  182         | functionCall . listableEnd
-  198         | functionCall . "(" functionArgs ")"
-  370 returnControl: "return" functionCall .  ["end of file", "end of line", ",", ";", ")", "}", "else", "elseif", "end", "case", "otherwise", "endfunction", "catch", "line comment"]
+  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"]
 
     "'"         shift, and go to state 114
     ":"         shift, and go to state 115
@@ -6394,7 +6351,7 @@ State 91
     "|"         shift, and go to state 143
     "||"        shift, and go to state 144
 
-    $default  reduce using rule 370 (returnControl)
+    $default  reduce using rule 368 (returnControl)
 
     rightComparable  go to state 146
     rightOperand     go to state 147
@@ -6478,9 +6435,9 @@ State 92
   175 variable: variable . "." "identifier"
   176         | variable . "." keywords
   177         | variable . "." functionCall
-  181         | variable . listableEnd
-  197         | variable . "(" functionArgs ")"
-  369 returnControl: "return" variable .  ["end of file", "end of line", ",", ";", ")", "}", "else", "elseif", "end", "case", "otherwise", "endfunction", "catch", "line comment"]
+  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"]
 
     "'"         shift, and go to state 150
     ":"         shift, and go to state 115
@@ -6514,7 +6471,7 @@ State 92
     "|"         shift, and go to state 143
     "||"        shift, and go to state 144
 
-    $default  reduce using rule 369 (returnControl)
+    $default  reduce using rule 367 (returnControl)
 
     rightComparable  go to state 156
     rightOperand     go to state 157
@@ -6592,62 +6549,60 @@ State 96
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
-  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 "." variable
-  251           | . functionCall "." keywords
-  252           | . functionCall "." functionCall
-  253           | . "identifier"
-  254           | . multipleResults
-  255           | . variable "(" functionArgs ")"
-  256           | . functionCall "(" functionArgs ")"
-  257 multipleResults: . "[" matrixOrCellColumns "]"
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  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 "]"
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -6729,62 +6684,60 @@ State 97
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
-  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 "." variable
-  251           | . functionCall "." keywords
-  252           | . functionCall "." functionCall
-  253           | . "identifier"
-  254           | . multipleResults
-  255           | . variable "(" functionArgs ")"
-  256           | . functionCall "(" functionArgs ")"
-  257 multipleResults: . "[" matrixOrCellColumns "]"
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  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 "]"
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -7013,43 +6966,42 @@ State 115
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  217       | . "[" "end of line" matrixOrCellColumns "]"
+  218       | . "[" "end of line" "]"
+  219       | . "[" "]"
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -7122,64 +7074,62 @@ State 116
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  198         | functionCall "(" . functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
-  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 "." variable
-  251           | . functionCall "." keywords
-  252           | . functionCall "." functionCall
-  253           | . "identifier"
-  254           | . multipleResults
-  255           | . variable "(" functionArgs ")"
-  256           | . functionCall "(" functionArgs ")"
-  256           | functionCall "(" . functionArgs ")"
-  257 multipleResults: . "[" matrixOrCellColumns "]"
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  197         | functionCall "(" . functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  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 "]"
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -7213,108 +7163,29 @@ State 116
 
 State 117
 
-   47 functionCall: . simpleFunctionCall
-   48             | . "(" functionCall ")"
-   49 simpleFunctionCall: . "identifier" "(" functionArgs ")"
-   50                   | . "identifier" "{" functionArgs "}"
-   51                   | . "identifier" "(" ")"
-   52                   | . "identifier" "{" "}"
-   90 comparison: . variable rightComparable
-   91           | . functionCall rightComparable
-  122 operation: . variable rightOperand
-  123          | . functionCall rightOperand
-  124          | . "-" variable
-  125          | . "-" functionCall
-  126          | . "+" variable
-  127          | . "+" functionCall
-  128          | . variable "** or ^" variable
-  129          | . variable "** or ^" functionCall
-  130          | . functionCall "** or ^" variable
-  131          | . functionCall "** or ^" functionCall
-  132          | . variable ".^" variable
-  133          | . variable ".^" functionCall
-  134          | . functionCall ".^" variable
-  135          | . functionCall ".^" functionCall
-  136          | . variable "'"
-  137          | . variable ".'"
-  138          | . functionCall "'"
-  139          | . functionCall ".'"
-  173 variable: . "~ or @" variable
-  174         | . "~ or @" functionCall
-  175         | . variable "." "identifier"
-  176         | . variable "." keywords
-  177         | . variable "." functionCall
-  178         | . functionCall "." variable
-  178         | functionCall "." . variable
-  179         | . functionCall "." keywords
+  178 variable: functionCall "." . "identifier"
   179         | functionCall "." . keywords
-  180         | . functionCall "." functionCall
-  180         | functionCall "." . functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
-  250 assignable: functionCall "." . variable
-  251           | functionCall "." . keywords
-  252           | functionCall "." . functionCall
-  375 keywords: . "if"
-  376         | . "then"
-  377         | . "else"
-  378         | . "elseif"
-  379         | . "end"
-  380         | . "select"
-  381         | . "switch"
-  382         | . "otherwise"
-  383         | . "case"
-  384         | . "function"
-  385         | . "endfunction"
-  386         | . "for"
-  387         | . "while"
-  388         | . "do"
-  389         | . "break"
-  390         | . "try"
-  391         | . "catch"
-  392         | . "return"
+  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"
 
-    "%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 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
     "if"           shift, and go to state 239
     "then"         shift, and go to state 240
     "else"         shift, and go to state 241
@@ -7333,20 +7204,9 @@ State 117
     "try"          shift, and go to state 254
     "catch"        shift, and go to state 255
     "return"       shift, and go to state 256
-    "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
+    "identifier"   shift, and go to state 257
 
-    functionCall        go to state 257
-    simpleFunctionCall  go to state 37
-    comparison          go to state 39
-    operation           go to state 40
-    variable            go to state 258
-    cell                go to state 42
-    matrix              go to state 43
-    keywords            go to state 259
+    keywords  go to state 258
 
 
 State 118
@@ -7391,43 +7251,42 @@ State 119
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  217       | . "[" "end of line" matrixOrCellColumns "]"
+  218       | . "[" "end of line" "]"
+  219       | . "[" "]"
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -7444,11 +7303,11 @@ State 119
     "float"       shift, and go to state 27
     "number"      shift, and go to state 28
 
-    functionCall        go to state 260
+    functionCall        go to state 259
     simpleFunctionCall  go to state 37
     comparison          go to state 39
     operation           go to state 40
-    variable            go to state 261
+    variable            go to state 260
     cell                go to state 42
     matrix              go to state 43
 
@@ -7488,43 +7347,42 @@ State 120
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  217       | . "[" "end of line" matrixOrCellColumns "]"
+  218       | . "[" "end of line" "]"
+  219       | . "[" "]"
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -7541,11 +7399,11 @@ State 120
     "float"       shift, and go to state 27
     "number"      shift, and go to state 28
 
-    functionCall        go to state 262
+    functionCall        go to state 261
     simpleFunctionCall  go to state 37
     comparison          go to state 39
     operation           go to state 40
-    variable            go to state 263
+    variable            go to state 262
     cell                go to state 42
     matrix              go to state 43
 
@@ -7585,43 +7443,42 @@ State 121
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  217       | . "[" "end of line" matrixOrCellColumns "]"
+  218       | . "[" "end of line" "]"
+  219       | . "[" "]"
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -7638,11 +7495,11 @@ State 121
     "float"       shift, and go to state 27
     "number"      shift, and go to state 28
 
-    functionCall        go to state 264
+    functionCall        go to state 263
     simpleFunctionCall  go to state 37
     comparison          go to state 39
     operation           go to state 40
-    variable            go to state 265
+    variable            go to state 264
     cell                go to state 42
     matrix              go to state 43
 
@@ -7682,43 +7539,42 @@ State 122
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  217       | . "[" "end of line" matrixOrCellColumns "]"
+  218       | . "[" "end of line" "]"
+  219       | . "[" "]"
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -7735,11 +7591,11 @@ State 122
     "float"       shift, and go to state 27
     "number"      shift, and go to state 28
 
-    functionCall        go to state 266
+    functionCall        go to state 265
     simpleFunctionCall  go to state 37
     comparison          go to state 39
     operation           go to state 40
-    variable            go to state 267
+    variable            go to state 266
     cell                go to state 42
     matrix              go to state 43
 
@@ -7779,43 +7635,42 @@ State 123
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  217       | . "[" "end of line" matrixOrCellColumns "]"
+  218       | . "[" "end of line" "]"
+  219       | . "[" "]"
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -7832,11 +7687,11 @@ State 123
     "float"       shift, and go to state 27
     "number"      shift, and go to state 28
 
-    functionCall        go to state 268
+    functionCall        go to state 267
     simpleFunctionCall  go to state 37
     comparison          go to state 39
     operation           go to state 40
-    variable            go to state 269
+    variable            go to state 268
     cell                go to state 42
     matrix              go to state 43
 
@@ -7876,43 +7731,42 @@ State 124
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  217       | . "[" "end of line" matrixOrCellColumns "]"
+  218       | . "[" "end of line" "]"
+  219       | . "[" "]"
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -7929,11 +7783,11 @@ State 124
     "float"       shift, and go to state 27
     "number"      shift, and go to state 28
 
-    functionCall        go to state 270
+    functionCall        go to state 269
     simpleFunctionCall  go to state 37
     comparison          go to state 39
     operation           go to state 40
-    variable            go to state 271
+    variable            go to state 270
     cell                go to state 42
     matrix              go to state 43
 
@@ -7973,43 +7827,42 @@ State 125
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  217       | . "[" "end of line" matrixOrCellColumns "]"
+  218       | . "[" "end of line" "]"
+  219       | . "[" "]"
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -8026,11 +7879,11 @@ State 125
     "float"       shift, and go to state 27
     "number"      shift, and go to state 28
 
-    functionCall        go to state 272
+    functionCall        go to state 271
     simpleFunctionCall  go to state 37
     comparison          go to state 39
     operation           go to state 40
-    variable            go to state 273
+    variable            go to state 272
     cell                go to state 42
     matrix              go to state 43
 
@@ -8070,43 +7923,42 @@ State 126
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  217       | . "[" "end of line" matrixOrCellColumns "]"
+  218       | . "[" "end of line" "]"
+  219       | . "[" "]"
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -8123,11 +7975,11 @@ State 126
     "float"       shift, and go to state 27
     "number"      shift, and go to state 28
 
-    functionCall        go to state 274
+    functionCall        go to state 273
     simpleFunctionCall  go to state 37
     comparison          go to state 39
     operation           go to state 40
-    variable            go to state 275
+    variable            go to state 274
     cell                go to state 42
     matrix              go to state 43
 
@@ -8167,43 +8019,42 @@ State 127
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  217       | . "[" "end of line" matrixOrCellColumns "]"
+  218       | . "[" "end of line" "]"
+  219       | . "[" "]"
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -8220,11 +8071,11 @@ State 127
     "float"       shift, and go to state 27
     "number"      shift, and go to state 28
 
-    functionCall        go to state 276
+    functionCall        go to state 275
     simpleFunctionCall  go to state 37
     comparison          go to state 39
     operation           go to state 40
-    variable            go to state 277
+    variable            go to state 276
     cell                go to state 42
     matrix              go to state 43
 
@@ -8264,43 +8115,42 @@ State 128
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  217       | . "[" "end of line" matrixOrCellColumns "]"
+  218       | . "[" "end of line" "]"
+  219       | . "[" "]"
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -8317,11 +8167,11 @@ State 128
     "float"       shift, and go to state 27
     "number"      shift, and go to state 28
 
-    functionCall        go to state 278
+    functionCall        go to state 277
     simpleFunctionCall  go to state 37
     comparison          go to state 39
     operation           go to state 40
-    variable            go to state 279
+    variable            go to state 278
     cell                go to state 42
     matrix              go to state 43
 
@@ -8361,43 +8211,42 @@ State 129
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  217       | . "[" "end of line" matrixOrCellColumns "]"
+  218       | . "[" "end of line" "]"
+  219       | . "[" "]"
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -8414,11 +8263,11 @@ State 129
     "float"       shift, and go to state 27
     "number"      shift, and go to state 28
 
-    functionCall        go to state 280
+    functionCall        go to state 279
     simpleFunctionCall  go to state 37
     comparison          go to state 39
     operation           go to state 40
-    variable            go to state 281
+    variable            go to state 280
     cell                go to state 42
     matrix              go to state 43
 
@@ -8458,43 +8307,42 @@ State 130
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  217       | . "[" "end of line" matrixOrCellColumns "]"
+  218       | . "[" "end of line" "]"
+  219       | . "[" "]"
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -8511,11 +8359,11 @@ State 130
     "float"       shift, and go to state 27
     "number"      shift, and go to state 28
 
-    functionCall        go to state 282
+    functionCall        go to state 281
     simpleFunctionCall  go to state 37
     comparison          go to state 39
     operation           go to state 40
-    variable            go to state 283
+    variable            go to state 282
     cell                go to state 42
     matrix              go to state 43
 
@@ -8555,43 +8403,42 @@ State 131
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  217       | . "[" "end of line" matrixOrCellColumns "]"
+  218       | . "[" "end of line" "]"
+  219       | . "[" "]"
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -8608,11 +8455,11 @@ State 131
     "float"       shift, and go to state 27
     "number"      shift, and go to state 28
 
-    functionCall        go to state 284
+    functionCall        go to state 283
     simpleFunctionCall  go to state 37
     comparison          go to state 39
     operation           go to state 40
-    variable            go to state 285
+    variable            go to state 284
     cell                go to state 42
     matrix              go to state 43
 
@@ -8652,43 +8499,42 @@ State 132
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  217       | . "[" "end of line" matrixOrCellColumns "]"
+  218       | . "[" "end of line" "]"
+  219       | . "[" "]"
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -8705,11 +8551,11 @@ State 132
     "float"       shift, and go to state 27
     "number"      shift, and go to state 28
 
-    functionCall        go to state 286
+    functionCall        go to state 285
     simpleFunctionCall  go to state 37
     comparison          go to state 39
     operation           go to state 40
-    variable            go to state 287
+    variable            go to state 286
     cell                go to state 42
     matrix              go to state 43
 
@@ -8749,43 +8595,42 @@ State 133
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"
+  214       | . "[" matrixOrCellLines matrixOrCellColumns "]"
+  215       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
+  216       | . "[" matrixOrCellColumns "]"
+  217       | . "[" "end of line" matrixOrCellColumns "]"
+  218       | . "[" "end of line" "]"
+  219       | . "[" "]"
 
     "%t or %T"    shift, and go to state 3
     "%f or %F"    shift, and go to state 4
@@ -8802,11 +8647,11 @@ State 133
     "float"       shift, and go to state 27
     "number"      shift, and go to state 28
 
-    functionCall        go to state 288
+    functionCall        go to state 287
     simpleFunctionCall  go to state 37
     comparison          go to state 39
     operation           go to state 40
-    variable            go to state 289
+    variable            go to state 288
     cell                go to state 42
     matrix              go to state 43
 
@@ -8846,43 +8691,42 @@ State 134
   175         | . variable "." "identifier"
   176         | . variable "." keywords
   177         | . variable "." functionCall
-  178         | . functionCall "." variable
+  178         | . functionCall "." "identifier"
   179         | . functionCall "." keywords
-  180         | . functionCall "." functionCall
-  181         | . variable listableEnd
-  182         | . functionCall listableEnd
-  183         | . matrix
-  184         | . cell
-  185         | . operation
-  186         | . "identifier"
-  187         | . "integer"
-  188         | . "number"
-  189         | . "float"
-  190         | . "string"
-  191         | . "$"
-  192         | . "%t or %T"
-  193         | . "%f or %F"
-  194         | . "(" variable ")"
-  195         | . "(" variableFields ")"
-  196         | . comparison
-  197         | . variable "(" functionArgs ")"
-  198         | . functionCall "(" functionArgs ")"
-  205 cell: . "{" matrixOrCellLines "}"
-  206     | . "{" "end of line" matrixOrCellLines "}"
-  207     | . "{" matrixOrCellLines matrixOrCellColumns "}"
-  208     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
-  209     | . "{" matrixOrCellColumns "}"
-  210     | . "{" "end of line" matrixOrCellColumns "}"
-  211     | . "{" "end of line" "}"
-  212     | . "{" "}"
-  213 matrix: . "[" matrixOrCellLines "]"
-  214       | . "[" "end of line" matrixOrCellLines "]"
-  215       | . "[" matrixOrCellLines matrixOrCellColumns "]"
-  216       | . "[" "end of line" matrixOrCellLines matrixOrCellColumns "]"
-  217       | . "[" matrixOrCellColumns "]"
-  218       | . "[" "end of line" matrixOrCellColumns "]"
-  219       | . "[" "end of line" "]"
-  220       | . "[" "]"
+  180         | . variable listableEnd
+  181         | . functionCall listableEnd
+  182         | . matrix
+  183         | . cell
+  184         | . operation
+  185         | . "identifier"
+  186         | . "integer"
+  187         | . "number"
+  188         | . "float"
+  189         | . "string"
+  190         | . "$"
+  191         | . "%t or %T"
+  192         | . "%f or %F"
+  193         | . "(" variable ")"
+  194         | . "(" variableFields ")"
+  195         | . comparison
+  196         | . variable "(" functionArgs ")"
+  197         | . functionCall "(" functionArgs ")"
+  204 cell: . "{" matrixOrCellLines "}"
+  205     | . "{" "end of line" matrixOrCellLines "}"
+  206     | . "{" matrixOrCellLines matrixOrCellColumns "}"
+  207     | . "{" "end of line" matrixOrCellLines matrixOrCellColumns "}"
+  208     | . "{" matrixOrCellColumns "}"
+  209     | . "{" "end of line" matrixOrCellColumns "}"
+  210     | . "{" "end of line" "}"
+  211     | . "{" "}"
+  212 matrix: . "[" matrixOrCellLines "]"
+  213       | . "[" "end of line" matrixOrCellLines "]"