runtime(vim): Update base-syntax and generator, only match valid predefined variables
- Only match valid predefined and option variables.
- Match scope dictionaries.
- Highlight scope prefixed variables as a scope dictionary accessor. The
vimVarScope syntax group can be linked to vimVar to disable this.
- Include support for Neovim-only predefined and option variables.
Temporary collateral damage - scope dictionaries match instead of keys
in dictionary literals.
closes: #16727
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/runtime/syntax/generator/gen_syntax_vim.vim b/runtime/syntax/generator/gen_syntax_vim.vim
index a5376a8..750b5d8 100644
--- a/runtime/syntax/generator/gen_syntax_vim.vim
+++ b/runtime/syntax/generator/gen_syntax_vim.vim
@@ -1,7 +1,7 @@
" Vim syntax file generator
" Language: Vim script
" Maintainer: Hirohito Higashi (h_east)
-" Last Change: 2025 Feb 08
+" Last Change: 2025 Mar 09
let s:keepcpo= &cpo
set cpo&vim
@@ -582,6 +582,38 @@
endfunc
" ------------------------------------------------------------------------------
+function s:parse_vim_var(li)
+ try
+ let file_name = $VIM_SRCDIR . '/evalvars.c'
+ let item = {}
+
+ new
+ exec 'read ' . file_name
+ norm! gg
+ exec '/^} vimvars\[VV_LEN] =\n{$/+1;/^};$/-1yank'
+ %delete _
+
+ put
+ g!/^\s*{VV_NAME(/d
+
+ for line in getline(1, line('$'))
+ let list = matchlist(line, '^\s*{VV_NAME("\(\w\+\)"')
+ let item.name = list[1]
+ call add(a:li, copy(item))
+ endfor
+
+ quit!
+
+ if empty(a:li)
+ throw 'var is empty'
+ endif
+ catch /.*/
+ call s:err_gen('')
+ throw 'exit'
+ endtry
+endfunc
+
+" ------------------------------------------------------------------------------
function s:append_syn_any(lnum, str_info, li)
let ret_lnum = a:lnum
let str = a:str_info.start
@@ -665,6 +697,15 @@
let lnum = s:search_and_check(kword . ' term output code', base_fname, str_info)
let lnum = s:append_syn_any(lnum, str_info, li)
+ " vimOption - normal variable
+ let li = a:vim_info.opt
+ let lnum = s:search_and_check(kword . ' normal variable', base_fname, str_info)
+ let lnum = s:append_syn_vimopt(lnum, str_info, li, '', 0)
+ " vimOption - term output code variable
+ let li = a:vim_info.term_out_code
+ let lnum = s:search_and_check(kword . ' term output code variable', base_fname, str_info)
+ let lnum = s:append_syn_any(lnum, str_info, li)
+
" Missing vimOption
let li = a:vim_info.missing_opt
let lnum = s:search_and_check('Missing vimOption', base_fname, str_info)
@@ -687,6 +728,11 @@
let lnum = s:search_and_check('vimFuncName', base_fname, str_info)
let lnum = s:append_syn_any(lnum, str_info, li)
+ " vimVarName
+ let li = a:vim_info.var
+ let lnum = s:search_and_check('vimVarName', base_fname, str_info)
+ let lnum = s:append_syn_any(lnum, str_info, li)
+
" vimUserAttrbCmplt
let li = a:vim_info.compl_name
let lnum = s:search_and_check('vimUserCmdAttrCmplt', base_fname, str_info)
@@ -874,6 +920,7 @@
let s:vim_info.hlgroup = []
let s:vim_info.compl_name = []
let s:vim_info.addr_name = []
+ let s:vim_info.var = []
set lazyredraw
if !$CHECK_HELP_DOC
@@ -885,6 +932,7 @@
silent call s:parse_vim_hlgroup(s:vim_info.hlgroup)
silent call s:parse_vim_complete_name(s:vim_info.compl_name)
silent call s:parse_vim_addr_name(s:vim_info.addr_name)
+ silent call s:parse_vim_var(s:vim_info.var)
call s:update_syntax_vim_file(s:vim_info)
else
diff --git a/runtime/syntax/generator/vim.vim.base b/runtime/syntax/generator/vim.vim.base
index 01786ab..ae2d97a 100644
--- a/runtime/syntax/generator/vim.vim.base
+++ b/runtime/syntax/generator/vim.vim.base
@@ -2,24 +2,30 @@
" Language: Vim script
" Maintainer: Hirohito Higashi <h.east.727 ATMARK gmail.com>
" Doug Kearns <dougkearns@gmail.com>
-" Last Change: 2025 Mar 06
+" Last Change: 2025 Mar 09
" Former Maintainer: Charles E. Campbell
" DO NOT CHANGE DIRECTLY.
" THIS FILE PARTLY GENERATED BY gen_syntax_vim.vim.
" (Search string "GEN_SYN_VIM:" in this file)
-" Automatically generated keyword lists: {{{1
-
-" Quit when a syntax file was already loaded {{{2
+" Quit when a syntax file was already loaded {{{1
if exists("b:current_syntax")
finish
endif
let s:keepcpo= &cpo
set cpo&vim
+" Feature testing {{{1
+
let s:vim9script = "\n" .. getline(1, 32)->join("\n") =~# '\n\s*vim9\%[script]\>'
+function s:has(feature)
+ return has(a:feature) || index(get(g:, "vimsyn_vim_features", []), a:feature) != -1
+endfunction
+
+" Automatically generated keyword lists: {{{1
+
" vimTodo: contains common special-notices for comments {{{2
" Use the vimCommentGroup cluster to add your own.
syn keyword vimTodo contained COMBAK FIXME TODO XXX
@@ -41,7 +47,6 @@
" vimOptions: These are the invertible variants {{{2
" GEN_SYN_VIM: vimOption invertible, START_STR='syn keyword vimOption contained', END_STR=''
-
" termcap codes (which can also be set) {{{2
" GEN_SYN_VIM: vimOption term output code, START_STR='syn keyword vimOption contained', END_STR='skipwhite nextgroup=vimSetEqual,vimSetMod'
" term key codes
@@ -55,6 +60,19 @@
syn match vimOption contained "t_%i"
syn match vimOption contained "t_k;"
+" vimOptions: These are the variable names {{{2
+" GEN_SYN_VIM: vimOption normal variable, START_STR='syn keyword vimOptionVarName contained', END_STR=''
+" GEN_SYN_VIM: vimOption term output code variable, START_STR='syn keyword vimOptionVarName contained', END_STR=''
+syn keyword vimOptionVarName contained t_F1 t_F2 t_F3 t_F4 t_F5 t_F6 t_F7 t_F8 t_F9 t_k1 t_K1 t_k2 t_k3 t_K3 t_k4 t_K4 t_k5 t_K5 t_k6 t_K6 t_k7 t_K7 t_k8 t_K8 t_k9 t_K9 t_KA t_kb t_kB t_KB t_KC t_kd t_kD t_KD t_KE t_KF t_KG t_kh t_KH t_kI t_KI t_KJ t_KK t_kl t_KL t_kN t_kP t_kr t_ku
+syn match vimOptionVarName contained "t_%1"
+syn match vimOptionVarName contained "t_#2"
+syn match vimOptionVarName contained "t_#4"
+syn match vimOptionVarName contained "t_@7"
+syn match vimOptionVarName contained "t_*7"
+syn match vimOptionVarName contained "t_&8"
+syn match vimOptionVarName contained "t_%i"
+syn match vimOptionVarName contained "t_k;"
+
" unsupported settings: some were supported by vi but don't do anything in vim {{{2
" GEN_SYN_VIM: Missing vimOption, START_STR='syn keyword vimErrSetting contained', END_STR=''
@@ -72,10 +90,20 @@
" Function Names {{{2
" GEN_SYN_VIM: vimFuncName, START_STR='syn keyword vimFuncName contained', END_STR=''
+" Predefined variable names {{{2
+" GEN_SYN_VIM: vimVarName, START_STR='syn keyword vimVimVarName contained', END_STR=''
-"--- syntax here and above generated by mkvimvim ---
+"--- syntax here and above generated by runtime/syntax/generator/gen_syntax_vim.vim ---
+
" Special Vim Highlighting (not automatic) {{{1
+" Neovim keyword list additions {{{2
+
+if s:has("nvim")
+ syn keyword vimOptionVarName contained channel inccommand mousescroll pumblend redrawdebug scrollback shada shadafile statuscolumn termpastefilter termsync winbar winblend winhighlight
+ syn keyword vimVimVarName contained lua msgpack_types relnum stderr termrequest virtnum
+endif
+
" Set up commands for this syntax highlighting file {{{2
com! -nargs=* Vim9 execute <q-args> s:vim9script ? "" : "contained"
@@ -213,14 +241,17 @@
syn region vimSubscript contained matchgroup=vimSubscriptBracket start="\[" end="]" nextgroup=vimSubscript contains=@vimExprList
syn match vimVar contained "\<\h[a-zA-Z0-9#_]*\>" nextgroup=vimSubscript contains=vim9Super,vim9This
-syn match vimVar "\<[bwglstav]:\h[a-zA-Z0-9#_]*\>" nextgroup=vimSubscript
-syn match vimVar "\<a:\%(000\|\d\+\)\>" nextgroup=vimSubscript
-syn match vimFBVar contained "\<[bwglsta]:\h[a-zA-Z0-9#_]*\>" nextgroup=vimSubscript
+syn match vimVar "\<[bwglstav]:\h[a-zA-Z0-9#_]*\>" nextgroup=vimSubscript contains=vimVarScope
+syn match vimVar "\<a:\%(000\|1\=[0-9]\|20\)\>" nextgroup=vimSubscript contains=vimVarScope
+syn match vimFBVar contained "\<[bwglsta]:\h[a-zA-Z0-9#_]*\>" nextgroup=vimSubscript contains=vimVarScope
-syn match vimVimVar "\<v:\h\w*\>" nextgroup=vimSubscript
-syn match vimOptionVar "&\%([lg]:\)\=\a\+\>" nextgroup=vimSubscript
-syn match vimOptionVar "&t_\S[a-zA-Z0-9]\>" nextgroup=vimSubscript
-syn match vimOptionVar "&t_k;" nextgroup=vimSubscript
+" match the scope prefix independently of the retrofitted scope dictionary
+syn match vimVarScope contained "\<[bwglstav]:"
+syn match vimVimVar contained "\<[bwglstav]:\%(\h\|\d\)\@!" nextgroup=vimSubscript
+
+syn match vimVarNameError contained "\<\h\w*\>"
+syn match vimVimVar "\<v:" nextgroup=vimSubscript,vimVimVarName,vimVarNameError
+syn match vimOptionVar "&\%([lg]:\)\=" nextgroup=vimSubscript,vimOptionVarName,vimVarNameError
syn cluster vimSpecialVar contains=vimEnvvar,vimLetRegister,vimOptionVar,vimVimVar
Vim9 syn match vim9LhsVariable "\s\=\h[a-zA-Z0-9#_]*\ze\s\+[-+/*%]\=="
@@ -739,7 +770,7 @@
syn region vimUnletVars contained
\ start="$\I\|\h" skip=+\n\s*\\\|\n\s*"\\ \|^\s*"\\ + end="$" end="\ze[|"]"
\ nextgroup=vimCmdSep,vimComment
- \ contains=@vimContinue,vimEnvvar,vimVar
+ \ contains=@vimContinue,vimEnvvar,vimVar,vimVimVar
VimFoldh syn region vimLetHereDoc matchgroup=vimLetHereDocStart start='\%(^\z(\s*\)\S.*\)\@<==<<\s*trim\%(\s\+\)\@>\z(\L\S*\)' matchgroup=vimLetHereDocStop end='^\z1\=\z2$' extend
VimFoldh syn region vimLetHereDoc matchgroup=vimLetHereDocStart start='=<<\%(\s*\)\@>\z(\L\S*\)' matchgroup=vimLetHereDocStop end='^\z1$' extend
@@ -1451,7 +1482,7 @@
hi def link vimFuncMod Special
hi def link vimFuncParam vimVar
hi def link vimFuncParamEquals vimOper
- hi def link vimFuncScope vimVar
+ hi def link vimFuncScope vimVarScope
hi def link vimFuncSID vimNotation
hi def link vimGroupAdd vimSynOption
hi def link vimGroupName vimGroup
@@ -1521,7 +1552,7 @@
hi def link vimOperContinueComment vimContinueComment
hi def link vimOption PreProc
hi def link vimOptionVar Identifier
- hi def link vimVimVar Identifier
+ hi def link vimOptionVarName Identifier
hi def link vimParenSep Delimiter
hi def link vimPatSepErr vimError
hi def link vimPatSepR vimPatSep
@@ -1605,6 +1636,9 @@
hi def link vimUserCmdKey vimCommand
hi def link vimUserFunc Normal
hi def link vimVar Normal
+ hi def link vimVarScope Identifier
+ hi def link vimVimVar Identifier
+ hi def link vimVimVarName Identifier
hi def link vimWarn WarningMsg
hi def link vim9Abstract vimCommand
diff --git a/runtime/syntax/testdir/dumps/vim9_def_variables_00.dump b/runtime/syntax/testdir/dumps/vim9_def_variables_00.dump
index a871473..6f7cd59 100644
--- a/runtime/syntax/testdir/dumps/vim9_def_variables_00.dump
+++ b/runtime/syntax/testdir/dumps/vim9_def_variables_00.dump
@@ -12,7 +12,7 @@
@2|t+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60
@2|w+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60
@75
-@2|v+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60
+@2|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
@75
@2|$+0#e000e06&|F|O@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
@75
diff --git a/runtime/syntax/testdir/dumps/vim9_def_variables_01.dump b/runtime/syntax/testdir/dumps/vim9_def_variables_01.dump
index e0a5b24..d5511ca 100644
--- a/runtime/syntax/testdir/dumps/vim9_def_variables_01.dump
+++ b/runtime/syntax/testdir/dumps/vim9_def_variables_01.dump
@@ -1,5 +1,5 @@
| +0&#ffffff0@74
-@2|v+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60
+@2|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
@75
@2|$+0#e000e06&|F|O@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
@75
@@ -17,4 +17,4 @@
@2|v+0#af5f00255&|a|r| +0#0000000&|[|$+0#e000e06&|f|o@1|,+0#0000000&| |$+0#e000e06&|b|a|r|;+0#0000000&| |$+0#e000e06&|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@43
@2|v+0#af5f00255&|a|r| +0#0000000&|[|$+0#e000e06&|f|o@1|,+0#0000000&| @62
@8|\+0#e000e06&| +0#0000000&|$+0#e000e06&|b|a|r|;+0#0000000&| @59
-@57|1|9|,|3| @10|7|%|
+@57|1|9|,|3| @10|6|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_def_variables_02.dump b/runtime/syntax/testdir/dumps/vim9_def_variables_02.dump
index 34d583e..9bb006e 100644
--- a/runtime/syntax/testdir/dumps/vim9_def_variables_02.dump
+++ b/runtime/syntax/testdir/dumps/vim9_def_variables_02.dump
@@ -17,4 +17,4 @@
| +0#e000002&@3|.@2| +0#0000000&@67
| +0#e000e06&@1|E|N|D| +0#0000000&@69
@75
-@57|3|7|,|1| @9|1|7|%|
+@57|3|7|,|1| @9|1|5|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_def_variables_03.dump b/runtime/syntax/testdir/dumps/vim9_def_variables_03.dump
index 8accf95..dd75ae8 100644
--- a/runtime/syntax/testdir/dumps/vim9_def_variables_03.dump
+++ b/runtime/syntax/testdir/dumps/vim9_def_variables_03.dump
@@ -10,11 +10,11 @@
@1| +0#00e0e07&|f|o@1|[+0#0000000&|1+0#e000002&|:+0#0000000&|]| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58
@1| +0#00e0e07&|f|o@1|[+0#0000000&|:|]| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
@75
+@1| +0#00e0e07&|f|o@1|[+0#0000000&|"+0#e000002&|k|e|y|"|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
+@1| +0#00e0e07&|f|o@1|[+0#0000000&|'+0#e000002&|k|e|y|'|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
+@75
@1| +0#00e0e07&|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
@1| +0#00e0e07&|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
@1| +0#00e0e07&|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
@1| +0#00e0e07&|f|o@1| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
-@1| +0#00e0e07&|f|o@1| +0#0000000&|%+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
-@1| +0#00e0e07&|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60
-@75
-@57|5@1|,|3| @9|2|7|%|
+@57|5@1|,|3| @9|2|3|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_def_variables_04.dump b/runtime/syntax/testdir/dumps/vim9_def_variables_04.dump
index bb8f803..7d28f18 100644
--- a/runtime/syntax/testdir/dumps/vim9_def_variables_04.dump
+++ b/runtime/syntax/testdir/dumps/vim9_def_variables_04.dump
@@ -1,9 +1,12 @@
-| +0&#ffffff0@74
+| +0&#ffffff0| +0#00e0e07&|f|o@1| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
+@1| +0#00e0e07&|f|o@1| +0#0000000&|%+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
+@1| +0#00e0e07&|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60
+@75
@2|b+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60
-@2|g+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60
+@2>g+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60
@2|t+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60
@2|w+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60
-> @74
+@75
@2|b+0#00e0e07&|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
@2|g+0#00e0e07&|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
@2|t+0#00e0e07&|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
@@ -14,7 +17,4 @@
@2|t+0#00e0e07&|:|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
@2|w+0#00e0e07&|:|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
@75
-@2|b+0#00e0e07&|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
-@2|g+0#00e0e07&|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
-@2|t+0#00e0e07&|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
-@57|7|3|,|0|-|1| @7|3|7|%|
+@57|7|3|,|3| @9|3|2|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_def_variables_05.dump b/runtime/syntax/testdir/dumps/vim9_def_variables_05.dump
index f339756..57bb62f 100644
--- a/runtime/syntax/testdir/dumps/vim9_def_variables_05.dump
+++ b/runtime/syntax/testdir/dumps/vim9_def_variables_05.dump
@@ -1,9 +1,12 @@
-| +0&#ffffff0@1|t+0#00e0e07&|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
+| +0&#ffffff0@74
+@2|b+0#00e0e07&|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
+@2|g+0#00e0e07&|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
+@2|t+0#00e0e07&|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
@2|w+0#00e0e07&|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
-@75
+> @74
@2|b+0#00e0e07&|:|f|o@1| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
@2|g+0#00e0e07&|:|f|o@1| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
-@2>t+0#00e0e07&|:|f|o@1| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
+@2|t+0#00e0e07&|:|f|o@1| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
@2|w+0#00e0e07&|:|f|o@1| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
@75
@2|b+0#00e0e07&|:|f|o@1| +0#0000000&|%+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
@@ -14,7 +17,4 @@
@2|b+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58
@2|g+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58
@2|t+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58
-@2|w+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58
-@75
-@2|$+0#e000e06&|F|O@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
-@57|9|1|,|3| @9|4|6|%|
+@57|9|1|,|0|-|1| @7|4|1|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_def_variables_06.dump b/runtime/syntax/testdir/dumps/vim9_def_variables_06.dump
index 23396ad..a0ab494 100644
--- a/runtime/syntax/testdir/dumps/vim9_def_variables_06.dump
+++ b/runtime/syntax/testdir/dumps/vim9_def_variables_06.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@1|$+0#e000e06&|F|O@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
-@2|$+0#e000e06&|F|O@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
+| +0&#ffffff0@1|t+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58
+@2|w+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58
@75
+@2|$+0#e000e06&|F|O@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
+@2|$+0#e000e06&|F|O@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
+> @74
@2|@+0#e000e06&|f| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@63
@2|@+0#e000e06&|f| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
-> @74
-@2|&+0#00e0e07&|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
+@75
+@2|&+0#00e0e07&|a|r|i| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
@75
@2|&+0#00e0e07&|t|_|k|1| +0#0000000&|=+0#af5f00255&| +0#0000000&|"+0#e000002&|\+0#e000e06&|<|E|s|c|>|[+0#e000002&|2|3|4|;|"| +0#0000000&@51
@75
-@2|&+0#00e0e07&|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
+@2|&+0#00e0e07&|a|r|i| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
@75
-@2|&+0#00e0e07&|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60
-@2|&+0#00e0e07&|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60
+@2|&+0#00e0e07&|a|r|i| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60
+@2|&+0#00e0e07&|a|r|i| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60
@75
-@2|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
-@75
-@2|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
-@2|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58
-@57|1|0|9|,|0|-|1| @6|5|6|%|
+@2|&+0#00e0e07&|l|:|a|l|e|p|h| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
+@57|1|0|9|,|0|-|1| @6|5|0|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_def_variables_07.dump b/runtime/syntax/testdir/dumps/vim9_def_variables_07.dump
index 119cc25..6d92e19 100644
--- a/runtime/syntax/testdir/dumps/vim9_def_variables_07.dump
+++ b/runtime/syntax/testdir/dumps/vim9_def_variables_07.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@1|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58
-@2|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58
+| +0&#ffffff0@1|&+0#00e0e07&|l|:|a|l|e|p|h| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
@75
-@2|&+0#00e0e07&|g|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
+@2|&+0#00e0e07&|l|:|a|l|e|p|h| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
+@2|&+0#00e0e07&|l|:|a|l|e|p|h| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
+@2|&+0#00e0e07&|l|:|a|l|e|p|h| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
+> @74
+@2|&+0#00e0e07&|g|:|a|l|e|p|h| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
@75
-@2>&+0#00e0e07&|g|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
-@2|&+0#00e0e07&|g|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58
-@2|&+0#00e0e07&|g|:|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58
+@2|&+0#00e0e07&|g|:|a|l|e|p|h| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
+@2|&+0#00e0e07&|g|:|a|l|e|p|h| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
+@2|&+0#00e0e07&|g|:|a|l|e|p|h| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
@75
@2|[+0#e000e06&|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
@2|[+0#e000e06&|f+0#00e0e07&|o@1|,+0#0000000&| @67
@8|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|r|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
-@2|[+0#e000e06&|v+0#00e0e07&|:|f|o@1|,+0#0000000&| |v+0#00e0e07&|:|b|a|r|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51
-@2|[+0#e000e06&|v+0#00e0e07&|:|f|o@1|,+0#0000000&| @65
-@8|\+0#e000e06&| +0#0000000&|v+0#00e0e07&|:|b|a|r|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51
-@2|[+0#e000e06&|&+0#00e0e07&|f|o@1|,+0#0000000&| |&+0#00e0e07&|b|a|r|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
-@2|[+0#e000e06&|&+0#00e0e07&|f|o@1|,+0#0000000&| @66
-@8|\+0#e000e06&| +0#0000000&|&+0#00e0e07&|b|a|r|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52
-@2|[+0#e000e06&|$|f|o@1|,+0#0000000&| |$+0#e000e06&|b|a|r|]| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
-@57|1|2|7|,|3| @8|6@1|%|
+@2|[+0#e000e06&|v+0#00e0e07&|:|t|r|u|e|,+0#0000000&| |v+0#00e0e07&|:|f|a|l|s|e|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@48
+@2|[+0#e000e06&|v+0#00e0e07&|:|t|r|u|e|,+0#0000000&| @64
+@8|\+0#e000e06&| +0#0000000&|v+0#00e0e07&|:|f|a|l|s|e|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@49
+@2|[+0#e000e06&|&+0#00e0e07&|a|r|i|,+0#0000000&| |&+0#00e0e07&|b|k|c|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
+@57|1|2|7|,|0|-|1| @6|5|8|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_def_variables_08.dump b/runtime/syntax/testdir/dumps/vim9_def_variables_08.dump
index 686fa47..33dddb6 100644
--- a/runtime/syntax/testdir/dumps/vim9_def_variables_08.dump
+++ b/runtime/syntax/testdir/dumps/vim9_def_variables_08.dump
@@ -1,9 +1,12 @@
-| +0&#ffffff0@1|[+0#e000e06&|$|f|o@1|,+0#0000000&| |$+0#e000e06&|b|a|r|]| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
+| +0&#ffffff0@1|[+0#e000e06&|&+0#00e0e07&|a|r|i|,+0#0000000&| |&+0#00e0e07&|b|k|c|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
+@2|[+0#e000e06&|&+0#00e0e07&|a|r|i|,+0#0000000&| @66
+@8|\+0#e000e06&| +0#0000000&|&+0#00e0e07&|b|k|c|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52
+@2|[+0#e000e06&|$|f|o@1|,+0#0000000&| |$+0#e000e06&|b|a|r|]| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
@2|[+0#e000e06&|$|f|o@1|,+0#0000000&| @66
-@8|\+0#e000e06&| +0#0000000&@1|$+0#e000e06&|b|a|r|]| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51
+@8>\+0#e000e06&| +0#0000000&@1|$+0#e000e06&|b|a|r|]| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51
@2|[+0#e000e06&|@|a|,+0#0000000&| |@+0#e000e06&|b|]| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
@2|[+0#e000e06&|@|a|,+0#0000000&| @68
-@8>\+0#e000e06&| +0#0000000&@1|@+0#e000e06&|a|]| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
+@8|\+0#e000e06&| +0#0000000&@1|@+0#e000e06&|a|]| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
@75
@2|[+0#e000e06&|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#e000e06&| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
@2|[+0#e000e06&|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#e000e06&| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
@@ -14,7 +17,4 @@
@75
@2|[+0#e000e06&|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|;+0#0000000&| |b+0#00e0e07&|a|z|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@50
@2|[+0#e000e06&|f+0#00e0e07&|o@1|,+0#0000000&| @67
-@8|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|r|;+0#0000000&| @60
-@8|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|z|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
-@2|[+0#e000e06&|v+0#00e0e07&|:|f|o@1|,+0#0000000&| |v+0#00e0e07&|:|b|a|r|;+0#0000000&| |v+0#00e0e07&|:|b|a|z|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@44
-@57|1|4|5|,|2|-|9| @6|7|6|%|
+@57|1|4|5|,|2|-|9| @6|6|7|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_def_variables_09.dump b/runtime/syntax/testdir/dumps/vim9_def_variables_09.dump
index 0c5a48d..4cdfb12 100644
--- a/runtime/syntax/testdir/dumps/vim9_def_variables_09.dump
+++ b/runtime/syntax/testdir/dumps/vim9_def_variables_09.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@1|[+0#e000e06&|v+0#00e0e07&|:|f|o@1|,+0#0000000&| |v+0#00e0e07&|:|b|a|r|;+0#0000000&| |v+0#00e0e07&|:|b|a|z|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@44
-@2|[+0#e000e06&|v+0#00e0e07&|:|f|o@1|,+0#0000000&| @65
-@8|\+0#e000e06&| +0#0000000&|v+0#00e0e07&|:|b|a|r|;+0#0000000&| @58
-@8|\+0#e000e06&| +0#0000000&|v+0#00e0e07&|:|b|a|z|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51
+| +0&#ffffff0@1|[+0#e000e06&|f+0#00e0e07&|o@1|,+0#0000000&| @67
+@8|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|r|;+0#0000000&| @60
+@8|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|z|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
+@2|[+0#e000e06&|v+0#00e0e07&|:|t|r|u|e|,+0#0000000&| |v+0#00e0e07&|:|f|a|l|s|e|;+0#0000000&| |v+0#00e0e07&|:|n|o|n|e|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@40
+@2|[+0#e000e06&|v+0#00e0e07&|:|t|r|u|e|,+0#0000000&| @64
+@8>\+0#e000e06&| +0#0000000&|v+0#00e0e07&|:|f|a|l|s|e|;+0#0000000&| @56
+@8|\+0#e000e06&| +0#0000000&|v+0#00e0e07&|:|n|o|n|e|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@50
@2|[+0#e000e06&|$|f|o@1|,+0#0000000&| |$+0#e000e06&|b|a|r|;+0#0000000&| |$+0#e000e06&|b|a|z|]| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@47
-@2>[+0#e000e06&|$|f|o@1|,+0#0000000&| @66
+@2|[+0#e000e06&|$|f|o@1|,+0#0000000&| @66
@8|\+0#e000e06&| +0#0000000&|$+0#e000e06&|b|a|r|;+0#0000000&| @59
@8|\+0#e000e06&| +0#0000000&|$+0#e000e06&|b|a|z|]| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52
-@2|[+0#e000e06&|&+0#00e0e07&|f|o@1|,+0#0000000&| |&+0#00e0e07&|b|a|r|;+0#0000000&| |&+0#00e0e07&|b|a|z|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@47
-@2|[+0#e000e06&|&+0#00e0e07&|f|o@1|,+0#0000000&| @66
-@8|\+0#e000e06&| +0#0000000&|&+0#00e0e07&|b|a|r|;+0#0000000&| @59
-@8|\+0#e000e06&| +0#0000000&|&+0#00e0e07&|b|a|z|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52
+@2|[+0#e000e06&|&+0#00e0e07&|a|r|i|,+0#0000000&| |&+0#00e0e07&|b|k|c|;+0#0000000&| |&+0#00e0e07&|c|m|p|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@47
+@2|[+0#e000e06&|&+0#00e0e07&|a|r|i|,+0#0000000&| @66
+@8|\+0#e000e06&| +0#0000000&|&+0#00e0e07&|b|k|c|;+0#0000000&| @59
+@8|\+0#e000e06&| +0#0000000&|&+0#00e0e07&|c|m|p|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52
@2|[+0#e000e06&|@|a|,+0#0000000&| |@+0#e000e06&|b|;+0#0000000&| |@+0#e000e06&|c|]| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
@2|[+0#e000e06&|@|a|,+0#0000000&| @68
@8|\+0#e000e06&| +0#0000000&|@+0#e000e06&|b|;+0#0000000&| @61
@8|\+0#e000e06&| +0#0000000&|@+0#e000e06&|c|]| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
-@75
-@1| +0#00e0e07&|f|o@1| +0#0000000&|=+0#e000e06&|<@1| |E|N|D| +0#0000000&@61
-|.+0#e000002&@2| +0#0000000&@71
-@57|1|6|3|,|3| @8|8|6|%|
+@57|1|6|3|,|2|-|9| @6|7|6|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_def_variables_10.dump b/runtime/syntax/testdir/dumps/vim9_def_variables_10.dump
index 9cba855..a0d6b80 100644
--- a/runtime/syntax/testdir/dumps/vim9_def_variables_10.dump
+++ b/runtime/syntax/testdir/dumps/vim9_def_variables_10.dump
@@ -1,9 +1,12 @@
-|.+0#e000002#ffffff0@2| +0#0000000&@71
+| +0&#ffffff0@7|\+0#e000e06&| +0#0000000&|@+0#e000e06&|c|]| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
+@75
+@1| +0#00e0e07&|f|o@1| +0#0000000&|=+0#e000e06&|<@1| |E|N|D| +0#0000000&@61
+|.+0#e000002&@2| +0#0000000&@71
|E+0#e000e06&|N|D| +0#0000000&@71
-@1| +0#00e0e07&|f|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@56
+@1| +0#00e0e07&>f|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@56
| +0#e000002&@1|.@2| +0#0000000&@69
| +0#e000e06&@1|E|N|D| +0#0000000&@69
-@1| +0#00e0e07&>f|o@1| +0#0000000&|=+0#e000e06&|<@1| |e|v|a|l| |E|N|D| +0#0000000&@56
+@1| +0#00e0e07&|f|o@1| +0#0000000&|=+0#e000e06&|<@1| |e|v|a|l| |E|N|D| +0#0000000&@56
|.+0#e000002&@2| +0#0000000&@71
|E+0#e000e06&|N|D| +0#0000000&@71
@1| +0#00e0e07&|f|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |e|v|a|l| |E|N|D| +0#0000000&@51
@@ -14,7 +17,4 @@
| +0#e000e06&@1|E|N|D| +0#0000000&@69
@75
| +0#0000e05&@1|#| |:|f|o|r| +0#0000000&@66
-@75
-@2|f+0#af5f00255&|o|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
-@2|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@66
-@57|1|8|1|,|3| @8|9|6|%|
+@57|1|8|1|,|3| @8|8|4|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_def_variables_11.dump b/runtime/syntax/testdir/dumps/vim9_def_variables_11.dump
index 9948671..abe24e7 100644
--- a/runtime/syntax/testdir/dumps/vim9_def_variables_11.dump
+++ b/runtime/syntax/testdir/dumps/vim9_def_variables_11.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@1|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@66
+| +0#0000e05#ffffff0@1|#| |:|f|o|r| +0#0000000&@66
@75
-@2|f+0#af5f00255&|o|r| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#0000000&| |i+0#af5f00255&|n| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@50
+@2|f+0#af5f00255&|o|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
@2|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@66
-|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
-> @74
@75
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|1|9@1|,|0|-|1| @6|B|o|t|
+@2>f+0#af5f00255&|o|r| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#0000000&| |i+0#af5f00255&|n| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@50
+@2|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@66
+@75
+|#+0#0000e05&| |S|c|o|p|e| |d|i|c|t|i|o|n|a|r|i|e|s| +0#0000000&@54
+@75
+|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|b+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51
+|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|w+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51
+|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|t+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51
+|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|g+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51
+|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|v+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51
+@75
+|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|b+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|b+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35
+|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|w+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|w+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35
+|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|t+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35
+@57|1|9@1|,|3| @8|9|3|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_def_variables_12.dump b/runtime/syntax/testdir/dumps/vim9_def_variables_12.dump
new file mode 100644
index 0000000..ea9b184
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_def_variables_12.dump
@@ -0,0 +1,20 @@
+|f+0#af5f00255#ffffff0|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|t+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35
+|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|g+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35
+|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|v+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|v+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35
+@75
+|#+0#0000e05&| |N|e|o|v|i|m|-|s|p|e|c|i|f|i|c| |v|a|r|i|a|b|l|e|s| |(|n|o|t| |h|i|g|h|l|i|g|h|t|e|d| |b|y| |d|e|f|a|u|l|t|)| +0#0000000&@18
+> @74
+|e+0#af5f00255&|c|h|o| +0#0000000&|v+0#00e0e07&|:|l+0#0000000&|u|a| |v+0#00e0e07&|:|m+0#0000000&|s|g|p|a|c|k|_|t|y|p|e|s| |v+0#00e0e07&|:|r+0#0000000&|e|l|n|u|m| |v+0#00e0e07&|:|s+0#0000000&|t|d|e|r@1| |v+0#00e0e07&|:|t+0#0000000&|e|r|m|r|e|q|u|e|s|t| |v+0#00e0e07&|:|v+0#0000000&|i|r|t|n|u|m| @6
+@75
+|e+0#af5f00255&|c|h|o| +0#0000000&|&+0#00e0e07&|c+0#0000000&|h|a|n@1|e|l| |&+0#00e0e07&|i+0#0000000&|n|c@1|o|m@1|a|n|d| |&+0#00e0e07&|m+0#0000000&|o|u|s|e|s|c|r|o|l@1| |&+0#00e0e07&|p+0#0000000&|u|m|b|l|e|n|d| |&+0#00e0e07&|r+0#0000000&|e|d|r|a|w|d|e|b|u|g| |&+0#00e0e07&|s+0#0000000&|c|r|o|l@1|b|a|c|k| @1
+|e+0#af5f00255&|c|h|o| +0#0000000&|&+0#00e0e07&|s+0#0000000&|h|a|d|a| |&+0#00e0e07&|s+0#0000000&|h|a|d|a|f|i|l|e| |&+0#00e0e07&|s+0#0000000&|t|a|t|u|s|c|o|l|u|m|n| |&+0#00e0e07&|t+0#0000000&|e|r|m|p|a|s|t|e|f|i|l|t|e|r| |&+0#00e0e07&|t+0#0000000&|e|r|m|s|y|n|c| |&+0#00e0e07&|w+0#0000000&|i|n|b|a|r| @3
+|e+0#af5f00255&|c|h|o| +0#0000000&|&+0#00e0e07&|w+0#0000000&|i|n|b|l|e|n|d| |&+0#00e0e07&|w+0#0000000&|i|n|h|i|g|h|l|i|g|h|t| @46
+@75
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
+@75
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|2|1|7|,|0|-|1| @6|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim9_expr_00.dump b/runtime/syntax/testdir/dumps/vim9_expr_00.dump
index 373b3a0..e8fe318 100644
--- a/runtime/syntax/testdir/dumps/vim9_expr_00.dump
+++ b/runtime/syntax/testdir/dumps/vim9_expr_00.dump
@@ -2,19 +2,19 @@
|#+0#0000e05&| |V|i|m|9|-|s|c|r|i|p|t| |e|x|p|r|e|s@1|i|o|n|s| +0#0000000&@49
@75
@75
-|#+0#0000e05&| |O|p|e|r|a|t|o|r|s| +0#0000000&@63
+|#+0#0000e05&| |D|i|c|t|i|o|n|a|r|y| +0#0000000&@62
@75
-|#+0#0000e05&| |T|e|r|n|a|r|y| +0#0000000&@65
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&|}| +0#0000000&@67
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&@2|f+0#00e0e07&|o@1|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&@52
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|-+0#af5f00255&|f+0#00e0e07&|o@1|-+0#af5f00255&|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&@52
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&@52
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|'+0#e000002&|f|o@1|'|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&@52
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|"+0#e000002&|f|o@1|"|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&@52
@75
-|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|?+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|:+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|f+0#00e0e07&|o@1|:+0#0000000&| |{+0#e000e06&| +0#0000000&@2|b+0#00e0e07&|a|r|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@43
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|f+0#00e0e07&|o@1|:+0#0000000&| |{+0#e000e06&| +0#0000000&|-+0#af5f00255&|b+0#00e0e07&|a|r|-+0#af5f00255&|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@43
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|f+0#00e0e07&|o@1|:+0#0000000&| |{+0#e000e06&| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@43
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|f+0#00e0e07&|o@1|:+0#0000000&| |{+0#e000e06&| +0#0000000&|'+0#e000002&|b|a|r|'|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@43
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|f+0#00e0e07&|o@1|:+0#0000000&| |{+0#e000e06&| +0#0000000&|"+0#e000002&|b|a|r|"|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@43
@75
-|e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|t|o|p|"| +0#0000000&|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&@45
-|e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|t|o|p|"| +0#0000000&|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&|0@2| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|l|a|s|t|"| +0#0000000&|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&@21
-@75
-|e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&@60
-@8|?+0#af5f00255&| +0#0000000&|"+0#e000002&|t|o|p|"| +0#0000000&@59
-@8|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&|0@2| +0#0000000&@52
-@16|?+0#af5f00255&| +0#0000000&|"+0#e000002&|l|a|s|t|"| +0#0000000&@50
-@16|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&@52
-|e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&@58
@57|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/vim9_expr_01.dump b/runtime/syntax/testdir/dumps/vim9_expr_01.dump
index 597161e..f31e777 100644
--- a/runtime/syntax/testdir/dumps/vim9_expr_01.dump
+++ b/runtime/syntax/testdir/dumps/vim9_expr_01.dump
@@ -1,20 +1,20 @@
-|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&@60
-@8|?+0#af5f00255&| +0#0000000&|"+0#e000002&|t|o|p|"| +0#0000000&@59
-@8|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&|0@2| +0#0000000&@52
-@16|?+0#af5f00255&| +0#0000000&|"+0#e000002&|l|a|s|t|"| +0#0000000&@50
-@16|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&@52
->e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&@58
-@8|"+0#e000002&|t|o|p|"| +0#0000000&|:+0#af5f00255&| +0#0000000&@59
-@8|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&|0@2| +0#0000000&|?+0#af5f00255&| +0#0000000&@52
-@16|"+0#e000002&|l|a|s|t|"| +0#0000000&|:+0#af5f00255&| +0#0000000&@50
-@16|l+0#00e0e07&|n|u|m| +0#0000000&@54
+|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|f+0#00e0e07&|o@1|:+0#0000000&| |{+0#e000e06&| +0#0000000&@2|b+0#00e0e07&|a|r|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@43
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|f+0#00e0e07&|o@1|:+0#0000000&| |{+0#e000e06&| +0#0000000&|-+0#af5f00255&|b+0#00e0e07&|a|r|-+0#af5f00255&|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@43
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|f+0#00e0e07&|o@1|:+0#0000000&| |{+0#e000e06&| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@43
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|f+0#00e0e07&|o@1|:+0#0000000&| |{+0#e000e06&| +0#0000000&|'+0#e000002&|b|a|r|'|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@43
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|f+0#00e0e07&|o@1|:+0#0000000&| |{+0#e000e06&| +0#0000000&|"+0#e000002&|b|a|r|"|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@43
+> @74
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|-+0#af5f00255&|f+0#00e0e07&|o@1|-+0#af5f00255&|:+0#0000000&| |{+0#e000e06&| +0#0000000&@2|b+0#00e0e07&|a|r|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|-+0#af5f00255&|f+0#00e0e07&|o@1|-+0#af5f00255&|:+0#0000000&| |{+0#e000e06&| +0#0000000&|-+0#af5f00255&|b+0#00e0e07&|a|r|-+0#af5f00255&|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|-+0#af5f00255&|f+0#00e0e07&|o@1|-+0#af5f00255&|:+0#0000000&| |{+0#e000e06&| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|-+0#af5f00255&|f+0#00e0e07&|o@1|-+0#af5f00255&|:+0#0000000&| |{+0#e000e06&| +0#0000000&|'+0#e000002&|b|a|r|'|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|-+0#af5f00255&|f+0#00e0e07&|o@1|-+0#af5f00255&|:+0#0000000&| |{+0#e000e06&| +0#0000000&|"+0#e000002&|b|a|r|"|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41
@75
-|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&|?+0#af5f00255&| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&|:+0#af5f00255&| +0#0000000&|f+0#e000002&|a|l|s|e| +0#0000000&@50
-|e+0#af5f00255&|c|h|o| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&|1+0#e000002&| +0#0000000&|:+0#af5f00255&| +0#0000000&|0+0#e000002&| +0#0000000&@60
-|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&|:+0#af5f00255&| +0#0000000&|"+0#e000002&|b|a|r|"| +0#0000000&@48
-|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|?+0#af5f00255&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|:+0#af5f00255&| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@54
-|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|:|f|o@1| +0#0000000&|?+0#af5f00255&| +0#0000000&|g+0#00e0e07&|:|f|o@1| +0#0000000&|:+0#af5f00255&| +0#0000000&|g+0#00e0e07&|:|b|a|r| +0#0000000&@48
-|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&|?+0#af5f00255&| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&|:+0#af5f00255&| +0#0000000&|$+0#e000e06&|B|A|R| +0#0000000&@51
-|e+0#af5f00255&|c|h|o| +0#0000000&|T|r|u|e|(+0#e000e06&|)| +0#0000000&|?+0#af5f00255&| +0#0000000&|T|r|u|e|(+0#e000e06&|)| +0#0000000&|:+0#af5f00255&| +0#0000000&|F|a|l|s|e|(+0#e000e06&|)| +0#0000000&@44
-|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|a| +0#0000000&|?+0#af5f00255&| +0#0000000&|@+0#e000e06&|a| +0#0000000&|:+0#af5f00255&| +0#0000000&|@+0#e000e06&|b| +0#0000000&@57
-@57|1|9|,|1| @9|1|3|%|
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|4+0#e000002&|2|:+0#0000000&| |{+0#e000e06&| +0#0000000&@2|b+0#00e0e07&|a|r|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@44
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|4+0#e000002&|2|:+0#0000000&| |{+0#e000e06&| +0#0000000&|-+0#af5f00255&|b+0#00e0e07&|a|r|-+0#af5f00255&|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@44
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|4+0#e000002&|2|:+0#0000000&| |{+0#e000e06&| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@44
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|4+0#e000002&|2|:+0#0000000&| |{+0#e000e06&| +0#0000000&|'+0#e000002&|b|a|r|'|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@44
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|4+0#e000002&|2|:+0#0000000&| |{+0#e000e06&| +0#0000000&|"+0#e000002&|b|a|r|"|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@44
+@75
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|'+0#e000002&|f|o@1|'|:+0#0000000&| |{+0#e000e06&| +0#0000000&@2|b+0#00e0e07&|a|r|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41
+@57|1|9|,|0|-|1| @8|9|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_expr_02.dump b/runtime/syntax/testdir/dumps/vim9_expr_02.dump
index 4b9842c..f8b6d90 100644
--- a/runtime/syntax/testdir/dumps/vim9_expr_02.dump
+++ b/runtime/syntax/testdir/dumps/vim9_expr_02.dump
@@ -1,20 +1,20 @@
-|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|@+0#e000e06&|a| +0#0000000&|?+0#af5f00255&| +0#0000000&|@+0#e000e06&|a| +0#0000000&|:+0#af5f00255&| +0#0000000&|@+0#e000e06&|b| +0#0000000&@57
-|e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&|t+0#e000002&|r|u|e|)+0#e000e06&| +0#0000000&|?+0#af5f00255&| +0#0000000&|(+0#e000e06&|t+0#e000002&|r|u|e|)+0#e000e06&| +0#0000000&|:+0#af5f00255&| +0#0000000&|(+0#e000e06&|f+0#e000002&|a|l|s|e|)+0#e000e06&| +0#0000000&@44
-|e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&|?+0#af5f00255&| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&|:+0#af5f00255&| +0#0000000&|(+0#e000e06&|0+0#e000002&|)+0#e000e06&| +0#0000000&@54
-@75
-|#+0#0000e05&| |F|a|l|s|y| +0#0000000&@67
+|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|'+0#e000002&|f|o@1|'|:+0#0000000&| |{+0#e000e06&| +0#0000000&@2|b+0#00e0e07&|a|r|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|'+0#e000002&|f|o@1|'|:+0#0000000&| |{+0#e000e06&| +0#0000000&|-+0#af5f00255&|b+0#00e0e07&|a|r|-+0#af5f00255&|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|'+0#e000002&|f|o@1|'|:+0#0000000&| |{+0#e000e06&| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|'+0#e000002&|f|o@1|'|:+0#0000000&| |{+0#e000e06&| +0#0000000&|"+0#e000002&|b|a|r|"|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|'+0#e000002&|f|o@1|'|:+0#0000000&| |{+0#e000e06&| +0#0000000&|'+0#e000002&|b|a|r|'|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41
> @74
-|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|"+0#e000002&|f|o@1|"|:+0#0000000&| |{+0#e000e06&| +0#0000000&@2|b+0#00e0e07&|a|r|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|"+0#e000002&|f|o@1|"|:+0#0000000&| |{+0#e000e06&| +0#0000000&|-+0#af5f00255&|b+0#00e0e07&|a|r|-+0#af5f00255&|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|"+0#e000002&|f|o@1|"|:+0#0000000&| |{+0#e000e06&| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|"+0#e000002&|f|o@1|"|:+0#0000000&| |{+0#e000e06&| +0#0000000&|'+0#e000002&|b|a|r|'|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|"+0#e000002&|f|o@1|"|:+0#0000000&| |{+0#e000e06&| +0#0000000&|"+0#e000002&|b|a|r|"|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41
@75
-|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|h|e|L|i|s|t| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|'+0#e000002&|l|i|s|t| |i|s| |e|m|p|t|y|'| +0#0000000&@43
-|e+0#af5f00255&|c|h|o| +0#0000000&|G|e|t|N|a|m|e|(+0#e000e06&|)| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|'+0#e000002&|u|n|k|n|o|w|n|'| +0#0000000&@47
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&@68
+| +0#0000e05&@1|#| |c|o|m@1|e|n|t| +0#0000000&@63
+@2|f+0#00e0e07&|o@1|:+0#0000000&| |{+0#e000e06&| +0#0000000&@66
+@4|b+0#00e0e07&|a|r|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&@59
+@2|}+0#e000e06&| +0#0000000&@71
+|}+0#e000e06&| +0#0000000&@73
@75
-|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|h|e|L|i|s|t| +0#0000000&@62
-@6|\+0#e000e06&| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|'+0#e000002&|l|i|s|t| |i|s| |e|m|p|t|y|'| +0#0000000&@48
-|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|h|e|L|i|s|t| +0#0000000&|?+0#af5f00255&@1| +0#0000000&@59
-@6|\+0#e000e06&| +0#0000000&|'+0#e000002&|l|i|s|t| |i|s| |e|m|p|t|y|'| +0#0000000&@51
-@75
-|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&@57
-|e+0#af5f00255&|c|h|o| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&@63
-|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&@55
-@57|3|7|,|0|-|1| @7|3|2|%|
+@57|3|7|,|0|-|1| @7|2|1|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_expr_03.dump b/runtime/syntax/testdir/dumps/vim9_expr_03.dump
index 80ce231..1b6b634 100644
--- a/runtime/syntax/testdir/dumps/vim9_expr_03.dump
+++ b/runtime/syntax/testdir/dumps/vim9_expr_03.dump
@@ -1,20 +1,20 @@
-|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&@55
-|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@59
-|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|:|f|o@1| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|g+0#00e0e07&|:|f|o@1| +0#0000000&@55
-|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&@57
-|e+0#af5f00255&|c|h|o| +0#0000000&|T|r|u|e|(+0#e000e06&|)| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|T|r|u|e|(+0#e000e06&|)| +0#0000000&@53
->e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|a| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|@+0#e000e06&|a| +0#0000000&@61
-|e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&|t+0#e000002&|r|u|e|)+0#e000e06&| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|(+0#e000e06&|t+0#e000002&|r|u|e|)+0#e000e06&| +0#0000000&@53
-|e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&@59
+| +0&#ffffff0@74
+|#+0#0000e05&| |m|a|t|c|h| |a|s| |k|e|y|s| |n|o|t| |s|c|o|p|e| |d|i|c|t|i|o|n|a|r|i|e|s| +0#0000000&@36
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|b+0#00e0e07&|:| +0#0000000&|4+0#e000002&|2|,+0#0000000&| |w+0#00e0e07&|:| +0#0000000&|4+0#e000002&|2|,+0#0000000&| |t+0#00e0e07&|:| +0#0000000&|4+0#e000002&|2|,+0#0000000&| |g+0#00e0e07&|:| +0#0000000&|4+0#e000002&|2|,+0#0000000&| |l+0#00e0e07&|:| +0#0000000&|4+0#e000002&|2|,+0#0000000&| |s+0#00e0e07&|:| +0#0000000&|4+0#e000002&|2|,+0#0000000&| |a+0#00e0e07&|:| +0#0000000&|4+0#e000002&|2|,+0#0000000&| |v+0#00e0e07&|:| +0#0000000&|4+0#e000002&|2| +0#0000000&@1|}+0#e000e06&| +0#0000000&@10
@75
+|#+0#0000e05&| |O|p|e|r|a|t|o|r|s| +0#0000000&@63
+> @74
+|#+0#0000e05&| |T|e|r|n|a|r|y| +0#0000000&@65
@75
-|#+0#0000e05&| |F|u|n|c|t|i|o|n| |c|a|l@1|s| +0#0000000&@58
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|?+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|:+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51
@75
-|F|o@1|(+0#e000e06&|t+0#e000002&|r|u|e|,+0#0000000&| |f+0#e000002&|a|l|s|e|,+0#0000000&| |n+0#e000002&|u|l@1|)+0#e000e06&| +0#0000000&@52
+|e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|t|o|p|"| +0#0000000&|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&@45
+|e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|t|o|p|"| +0#0000000&|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&|0@2| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|l|a|s|t|"| +0#0000000&|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&@21
@75
-@75
-|#+0#0000e05&| |C|o|m@1|a|n|d| |{|e|x|p|r|}| |a|r|g|u|m|e|n|t|s| +0#0000000&@48
-@75
-|i+0#af5f00255&|f| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&@67
-@2|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&@63
-@57|5@1|,|1| @9|5|1|%|
+|e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&@60
+@8|?+0#af5f00255&| +0#0000000&|"+0#e000002&|t|o|p|"| +0#0000000&@59
+@8|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&|0@2| +0#0000000&@52
+@16|?+0#af5f00255&| +0#0000000&|"+0#e000002&|l|a|s|t|"| +0#0000000&@50
+@16|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&@52
+|e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&@58
+@57|5@1|,|0|-|1| @7|3|4|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_expr_04.dump b/runtime/syntax/testdir/dumps/vim9_expr_04.dump
index c8383bc..47754a0 100644
--- a/runtime/syntax/testdir/dumps/vim9_expr_04.dump
+++ b/runtime/syntax/testdir/dumps/vim9_expr_04.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@1|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&@63
-|e+0#af5f00255&|l|s|e|i|f| +0#0000000&|f+0#e000002&|a|l|s|e| +0#0000000&@62
-@2|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#e000002&|a|l|s|e| +0#0000000&@62
-|e+0#af5f00255&|n|d|i|f| +0#0000000&@69
+|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&@58
+@8|"+0#e000002&|t|o|p|"| +0#0000000&|:+0#af5f00255&| +0#0000000&@59
+@8|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&|0@2| +0#0000000&|?+0#af5f00255&| +0#0000000&@52
+@16|"+0#e000002&|l|a|s|t|"| +0#0000000&|:+0#af5f00255&| +0#0000000&@50
+@16|l+0#00e0e07&|n|u|m| +0#0000000&@54
+> @74
+|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&|?+0#af5f00255&| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&|:+0#af5f00255&| +0#0000000&|f+0#e000002&|a|l|s|e| +0#0000000&@50
+|e+0#af5f00255&|c|h|o| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&|1+0#e000002&| +0#0000000&|:+0#af5f00255&| +0#0000000&|0+0#e000002&| +0#0000000&@60
+|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&|:+0#af5f00255&| +0#0000000&|"+0#e000002&|b|a|r|"| +0#0000000&@48
+|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|?+0#af5f00255&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|:+0#af5f00255&| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@54
+|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|:|f|o@1| +0#0000000&|?+0#af5f00255&| +0#0000000&|g+0#00e0e07&|:|f|o@1| +0#0000000&|:+0#af5f00255&| +0#0000000&|g+0#00e0e07&|:|b|a|r| +0#0000000&@48
+|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&|?+0#af5f00255&| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&|:+0#af5f00255&| +0#0000000&|$+0#e000e06&|B|A|R| +0#0000000&@51
+|e+0#af5f00255&|c|h|o| +0#0000000&|T|r|u|e|(+0#e000e06&|)| +0#0000000&|?+0#af5f00255&| +0#0000000&|T|r|u|e|(+0#e000e06&|)| +0#0000000&|:+0#af5f00255&| +0#0000000&|F|a|l|s|e|(+0#e000e06&|)| +0#0000000&@44
+|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|a| +0#0000000&|?+0#af5f00255&| +0#0000000&|@+0#e000e06&|a| +0#0000000&|:+0#af5f00255&| +0#0000000&|@+0#e000e06&|b| +0#0000000&@57
+|e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&|t+0#e000002&|r|u|e|)+0#e000e06&| +0#0000000&|?+0#af5f00255&| +0#0000000&|(+0#e000e06&|t+0#e000002&|r|u|e|)+0#e000e06&| +0#0000000&|:+0#af5f00255&| +0#0000000&|(+0#e000e06&|f+0#e000002&|a|l|s|e|)+0#e000e06&| +0#0000000&@44
+|e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&|?+0#af5f00255&| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&|:+0#af5f00255&| +0#0000000&|(+0#e000e06&|0+0#e000002&|)+0#e000e06&| +0#0000000&@54
@75
->w+0#af5f00255&|h|i|l|e| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&@64
-@2|b+0#af5f00255&|r|e|a|k| +0#0000000&@67
-|e+0#af5f00255&|n|d|w|h|i|l|e| +0#0000000&@66
+|#+0#0000e05&| |F|a|l|s|y| +0#0000000&@67
@75
-|d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)|:+0#0000000&| |b+0#00e0003&|o@1|l| +0#0000000&@59
-@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&@61
-|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
-@75
-@75
-|#+0#0000e05&| |I|s@1|u|e| |#|1|4@1|2|3| |(|v|i|m|.|v|i|m|:| |O|p|t| |o|u|t| |o|f| |v|i|m|S|e|a|r|c|h|*|)| +0#0000000&@27
-@75
-|:|?+0#e000e06&|t+0#e000002&|r|u|t|h|y| +0#0000000&@66
-|c+0#af5f00255&|o|n|s|t| +0#0000000&|t+0#00e0e07&|r|u|t|h|y|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|f+0#e000002&|a|l|s|e| +0#0000000&@46
-@4|?+0#af5f00255&| +0#0000000&|(+0#e000e06&|0+0#e000002&| +0#0000000&@66
-@57|7|3|,|1| @9|7|0|%|
+@57|7|3|,|0|-|1| @7|4|6|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_expr_05.dump b/runtime/syntax/testdir/dumps/vim9_expr_05.dump
index 083705e..753d327 100644
--- a/runtime/syntax/testdir/dumps/vim9_expr_05.dump
+++ b/runtime/syntax/testdir/dumps/vim9_expr_05.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@3|?+0#af5f00255&| +0#0000000&|(+0#e000e06&|0+0#e000002&| +0#0000000&@66
-@4|)+0#e000e06&| +0#0000000&@69
-@4|:+0#af5f00255&| +0#0000000&|(+0#e000e06&|1+0#e000002&| +0#0000000&@66
-@4|)+0#e000e06&| +0#0000000&@69
-|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|r|u|t|h|y| +0#0000000&@63
+| +0&#ffffff0@74
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
+@75
+|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|h|e|L|i|s|t| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|'+0#e000002&|l|i|s|t| |i|s| |e|m|p|t|y|'| +0#0000000&@43
+|e+0#af5f00255&|c|h|o| +0#0000000&|G|e|t|N|a|m|e|(+0#e000e06&|)| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|'+0#e000002&|u|n|k|n|o|w|n|'| +0#0000000&@47
> @74
-|d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@65
-| +0#e000002&@1|:+0#0000000&|?+0#e000e06&|t+0#e000002&|r|u|t|h|y| +0#0000000&@64
-@2|c+0#af5f00255&|o|n|s|t| +0#0000000&|t+0#00e0e07&|r|u|t|h|y|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|f+0#e000002&|a|l|s|e| +0#0000000&@44
-@6|?+0#af5f00255&| +0#0000000&|(+0#e000e06&|0+0#e000002&| +0#0000000&@64
-@6|)+0#e000e06&| +0#0000000&@67
-@6|:+0#af5f00255&| +0#0000000&|(+0#e000e06&|1+0#e000002&| +0#0000000&@64
-@6|)+0#e000e06&| +0#0000000&@67
-@2|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|r|u|t|h|y| +0#0000000&@61
-|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
+|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|h|e|L|i|s|t| +0#0000000&@62
+@6|\+0#e000e06&| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|'+0#e000002&|l|i|s|t| |i|s| |e|m|p|t|y|'| +0#0000000&@48
+|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|h|e|L|i|s|t| +0#0000000&|?+0#af5f00255&@1| +0#0000000&@59
+@6|\+0#e000e06&| +0#0000000&|'+0#e000002&|l|i|s|t| |i|s| |e|m|p|t|y|'| +0#0000000&@51
@75
-@75
-|#+0#0000e05&| |I|s@1|u|e| |#|1|6|2@1|7| |(|V|i|m|s|c|r|i|p|t| |t|e|r|n|a|r|y| |e|x|p|r|e|s@1|i|o|n| |h|i|g|h|l|i|g|h|t|i|n|g|)| +0#0000000&@16
-@75
-@57|9|1|,|0|-|1| @7|8|9|%|
+|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&@57
+|e+0#af5f00255&|c|h|o| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&@63
+|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&@55
+|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@59
+|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|:|f|o@1| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|g+0#00e0e07&|:|f|o@1| +0#0000000&@55
+|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&@57
+|e+0#af5f00255&|c|h|o| +0#0000000&|T|r|u|e|(+0#e000e06&|)| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|T|r|u|e|(+0#e000e06&|)| +0#0000000&@53
+|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|a| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|@+0#e000e06&|a| +0#0000000&@61
+@57|9|1|,|0|-|1| @7|5|9|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_expr_06.dump b/runtime/syntax/testdir/dumps/vim9_expr_06.dump
index d60bd9d..d8b69bc 100644
--- a/runtime/syntax/testdir/dumps/vim9_expr_06.dump
+++ b/runtime/syntax/testdir/dumps/vim9_expr_06.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@74
-|v+0#af5f00255&|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|'+0#e000002&|f|o@1|'| +0#0000000&@24|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@25
-|v+0#af5f00255&|a|r| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|f|o@1|'| +0#0000000&|?+0#af5f00255&| +0#0000000&|'+0#e000002&|b|a|r|'| +0#0000000&|:+0#af5f00255&| +0#0000000&|'+0#e000002&|b|a|z|'| +0#0000000&@36
-|v+0#af5f00255&|a|r| +0#0000000&|b+0#00e0e07&|a|z| +0#0000000&|=+0#af5f00255&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|f|o@1|'| +0#0000000&@52
-@12|\+0#e000e06&| +0#0000000&|?+0#af5f00255&| +0#0000000&|'+0#e000002&|b|a|z|'| +0#0000000&@53
-@12>\+0#e000e06&| +0#0000000&|:+0#af5f00255&| +0#0000000&|'+0#e000002&|b|a|r|'| +0#0000000&@53
-|v+0#af5f00255&|a|r| +0#0000000&|q+0#00e0e07&|u|x| +0#0000000&|=+0#af5f00255&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|f|o@1|'| +0#0000000&@52
-@12|?+0#af5f00255&| +0#0000000&|'+0#e000002&|q|u|x|'| +0#0000000&@20|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@25
-@12|:+0#af5f00255&| +0#0000000&|'+0#e000002&|q|u|x|'| +0#0000000&@20|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@25
-|e+0#af5f00255&|c|h|o| +0#0000000&|q+0#00e0e07&|u|x| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|'+0#e000002&|q|u@1|x|'| +0#0000000&@56
+|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|@+0#e000e06&|a| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|@+0#e000e06&|a| +0#0000000&@61
+|e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&|t+0#e000002&|r|u|e|)+0#e000e06&| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|(+0#e000e06&|t+0#e000002&|r|u|e|)+0#e000e06&| +0#0000000&@53
+|e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&@59
@75
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|1|0|9|,|1|3| @7|B|o|t|
+@75
+>#+0#0000e05&| |F|u|n|c|t|i|o|n| |c|a|l@1|s| +0#0000000&@58
+@75
+|F|o@1|(+0#e000e06&|t+0#e000002&|r|u|e|,+0#0000000&| |f+0#e000002&|a|l|s|e|,+0#0000000&| |n+0#e000002&|u|l@1|)+0#e000e06&| +0#0000000&@52
+@75
+@75
+|#+0#0000e05&| |C|o|m@1|a|n|d| |{|e|x|p|r|}| |a|r|g|u|m|e|n|t|s| +0#0000000&@48
+@75
+|i+0#af5f00255&|f| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&@67
+@2|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&@63
+|e+0#af5f00255&|l|s|e|i|f| +0#0000000&|f+0#e000002&|a|l|s|e| +0#0000000&@62
+@2|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#e000002&|a|l|s|e| +0#0000000&@62
+|e+0#af5f00255&|n|d|i|f| +0#0000000&@69
+@75
+|w+0#af5f00255&|h|i|l|e| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&@64
+@57|1|0|9|,|1| @8|7|1|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_expr_07.dump b/runtime/syntax/testdir/dumps/vim9_expr_07.dump
new file mode 100644
index 0000000..22c0e01
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_expr_07.dump
@@ -0,0 +1,20 @@
+|w+0#af5f00255#ffffff0|h|i|l|e| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&@64
+@2|b+0#af5f00255&|r|e|a|k| +0#0000000&@67
+|e+0#af5f00255&|n|d|w|h|i|l|e| +0#0000000&@66
+@75
+|d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)|:+0#0000000&| |b+0#00e0003&|o@1|l| +0#0000000&@59
+@2>r+0#af5f00255&|e|t|u|r|n| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&@61
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
+@75
+@75
+|#+0#0000e05&| |I|s@1|u|e| |#|1|4@1|2|3| |(|v|i|m|.|v|i|m|:| |O|p|t| |o|u|t| |o|f| |v|i|m|S|e|a|r|c|h|*|)| +0#0000000&@27
+@75
+|:|?+0#e000e06&|t+0#e000002&|r|u|t|h|y| +0#0000000&@66
+|c+0#af5f00255&|o|n|s|t| +0#0000000&|t+0#00e0e07&|r|u|t|h|y|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|f+0#e000002&|a|l|s|e| +0#0000000&@46
+@4|?+0#af5f00255&| +0#0000000&|(+0#e000e06&|0+0#e000002&| +0#0000000&@66
+@4|)+0#e000e06&| +0#0000000&@69
+@4|:+0#af5f00255&| +0#0000000&|(+0#e000e06&|1+0#e000002&| +0#0000000&@66
+@4|)+0#e000e06&| +0#0000000&@69
+|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|r|u|t|h|y| +0#0000000&@63
+@75
+@57|1|2|7|,|3| @8|8|4|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_expr_08.dump b/runtime/syntax/testdir/dumps/vim9_expr_08.dump
new file mode 100644
index 0000000..1fff983
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_expr_08.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+|d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@65
+| +0#e000002&@1|:+0#0000000&|?+0#e000e06&|t+0#e000002&|r|u|t|h|y| +0#0000000&@64
+@2|c+0#af5f00255&|o|n|s|t| +0#0000000&|t+0#00e0e07&|r|u|t|h|y|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|f+0#e000002&|a|l|s|e| +0#0000000&@44
+@6|?+0#af5f00255&| +0#0000000&|(+0#e000e06&|0+0#e000002&| +0#0000000&@64
+@6>)+0#e000e06&| +0#0000000&@67
+@6|:+0#af5f00255&| +0#0000000&|(+0#e000e06&|1+0#e000002&| +0#0000000&@64
+@6|)+0#e000e06&| +0#0000000&@67
+@2|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|r|u|t|h|y| +0#0000000&@61
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
+@75
+@75
+|#+0#0000e05&| |I|s@1|u|e| |#|1|6|2@1|7| |(|V|i|m|s|c|r|i|p|t| |t|e|r|n|a|r|y| |e|x|p|r|e|s@1|i|o|n| |h|i|g|h|l|i|g|h|t|i|n|g|)| +0#0000000&@16
+@75
+|v+0#af5f00255&|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|'+0#e000002&|f|o@1|'| +0#0000000&@24|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@25
+|v+0#af5f00255&|a|r| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|f|o@1|'| +0#0000000&|?+0#af5f00255&| +0#0000000&|'+0#e000002&|b|a|r|'| +0#0000000&|:+0#af5f00255&| +0#0000000&|'+0#e000002&|b|a|z|'| +0#0000000&@36
+|v+0#af5f00255&|a|r| +0#0000000&|b+0#00e0e07&|a|z| +0#0000000&|=+0#af5f00255&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|f|o@1|'| +0#0000000&@52
+@12|\+0#e000e06&| +0#0000000&|?+0#af5f00255&| +0#0000000&|'+0#e000002&|b|a|z|'| +0#0000000&@53
+@12|\+0#e000e06&| +0#0000000&|:+0#af5f00255&| +0#0000000&|'+0#e000002&|b|a|r|'| +0#0000000&@53
+@57|1|4|5|,|7| @8|9|6|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_expr_09.dump b/runtime/syntax/testdir/dumps/vim9_expr_09.dump
new file mode 100644
index 0000000..ce5416a
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_expr_09.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@11|\+0#e000e06&| +0#0000000&|:+0#af5f00255&| +0#0000000&|'+0#e000002&|b|a|r|'| +0#0000000&@53
+|v+0#af5f00255&|a|r| +0#0000000&|q+0#00e0e07&|u|x| +0#0000000&|=+0#af5f00255&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|f|o@1|'| +0#0000000&@52
+@12|?+0#af5f00255&| +0#0000000&|'+0#e000002&|q|u|x|'| +0#0000000&@20|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@25
+@12|:+0#af5f00255&| +0#0000000&|'+0#e000002&|q|u|x|'| +0#0000000&@20|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@25
+|e+0#af5f00255&|c|h|o| +0#0000000&|q+0#00e0e07&|u|x| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|'+0#e000002&|q|u@1|x|'| +0#0000000&@56
+> @74
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|6|3|,|0|-|1| @6|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim9_variables_00.dump b/runtime/syntax/testdir/dumps/vim9_variables_00.dump
index 766069e..cd9f976 100644
--- a/runtime/syntax/testdir/dumps/vim9_variables_00.dump
+++ b/runtime/syntax/testdir/dumps/vim9_variables_00.dump
@@ -11,7 +11,7 @@
|t+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62
|w+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62
@75
-|v+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62
+|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
@75
|$+0#e000e06&|F|O@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@63
@75
diff --git a/runtime/syntax/testdir/dumps/vim9_variables_01.dump b/runtime/syntax/testdir/dumps/vim9_variables_01.dump
index 35547c0..eb6a953 100644
--- a/runtime/syntax/testdir/dumps/vim9_variables_01.dump
+++ b/runtime/syntax/testdir/dumps/vim9_variables_01.dump
@@ -1,4 +1,4 @@
-|v+0#00e0e07#ffffff0|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62
+|v+0#00e0e07#ffffff0|:|t|r|u|e| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
@75
|$+0#e000e06&|F|O@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@63
@75
@@ -17,4 +17,4 @@
|v+0#af5f00255&|a|r| +0#0000000&|[|$+0#e000e06&|f|o@1|,+0#0000000&| @64
@6|\+0#e000e06&| +0#0000000&|$+0#e000e06&|b|a|r|;+0#0000000&| @61
@6|\+0#e000e06&| +0#0000000&|$+0#e000e06&|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
-@57|1|9|,|1| @10|7|%|
+@57|1|9|,|1| @10|6|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_variables_02.dump b/runtime/syntax/testdir/dumps/vim9_variables_02.dump
index 3b111f7..efc1167 100644
--- a/runtime/syntax/testdir/dumps/vim9_variables_02.dump
+++ b/runtime/syntax/testdir/dumps/vim9_variables_02.dump
@@ -17,4 +17,4 @@
|E+0#e000e06&|N|D| +0#0000000&@71
@75
|#+0#0000e05&| |A|s@1|i|g|n|m|e|n|t|s| +0#0000000&@61
-@57|3|7|,|1| @9|1|7|%|
+@57|3|7|,|1| @9|1|5|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_variables_03.dump b/runtime/syntax/testdir/dumps/vim9_variables_03.dump
index f2d245b..d3530e2 100644
--- a/runtime/syntax/testdir/dumps/vim9_variables_03.dump
+++ b/runtime/syntax/testdir/dumps/vim9_variables_03.dump
@@ -9,12 +9,12 @@
|f+0#00e0e07&|o@1|[+0#0000000&|1+0#e000002&|:+0#0000000&|]| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60
|f+0#00e0e07&|o@1|[+0#0000000&|:|]| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
@75
+|f+0#00e0e07&|o@1|[+0#0000000&|"+0#e000002&|k|e|y|"|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
+|f+0#00e0e07&|o@1|[+0#0000000&|'+0#e000002&|k|e|y|'|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
+@75
|f+0#00e0e07&|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@63
|f+0#00e0e07&|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@63
|f+0#00e0e07&|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@63
|f+0#00e0e07&|o@1| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@63
|f+0#00e0e07&|o@1| +0#0000000&|%+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@63
-|f+0#00e0e07&|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62
-@75
-|b+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62
-@57|5@1|,|0|-|1| @7|2|7|%|
+@57|5@1|,|0|-|1| @7|2|4|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_variables_04.dump b/runtime/syntax/testdir/dumps/vim9_variables_04.dump
index b54b1a6..6f7c793 100644
--- a/runtime/syntax/testdir/dumps/vim9_variables_04.dump
+++ b/runtime/syntax/testdir/dumps/vim9_variables_04.dump
@@ -1,9 +1,12 @@
-|b+0#00e0e07#ffffff0|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62
+|f+0#00e0e07#ffffff0|o@1| +0#0000000&|%+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@63
+|f+0#00e0e07&|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62
+@75
+|b+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62
|g+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62
-|t+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62
+>t+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62
|w+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62
@75
->b+0#00e0e07&|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
+|b+0#00e0e07&|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
|g+0#00e0e07&|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
|t+0#00e0e07&|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
|w+0#00e0e07&|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
@@ -14,7 +17,4 @@
|w+0#00e0e07&|:|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
@75
|b+0#00e0e07&|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
-|g+0#00e0e07&|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
-|t+0#00e0e07&|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
-|w+0#00e0e07&|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
-@57|7|3|,|1| @9|3|7|%|
+@57|7|3|,|1| @9|3@1|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_variables_05.dump b/runtime/syntax/testdir/dumps/vim9_variables_05.dump
index 2abfee7..e7f903b 100644
--- a/runtime/syntax/testdir/dumps/vim9_variables_05.dump
+++ b/runtime/syntax/testdir/dumps/vim9_variables_05.dump
@@ -1,9 +1,12 @@
-|w+0#00e0e07#ffffff0|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
+|b+0#00e0e07#ffffff0|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
+|g+0#00e0e07&|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
+|t+0#00e0e07&|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
+|w+0#00e0e07&|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
@75
-|b+0#00e0e07&|:|f|o@1| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
+>b+0#00e0e07&|:|f|o@1| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
|g+0#00e0e07&|:|f|o@1| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
|t+0#00e0e07&|:|f|o@1| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
->w+0#00e0e07&|:|f|o@1| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
+|w+0#00e0e07&|:|f|o@1| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
@75
|b+0#00e0e07&|:|f|o@1| +0#0000000&|%+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
|g+0#00e0e07&|:|f|o@1| +0#0000000&|%+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
@@ -14,7 +17,4 @@
|g+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60
|t+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60
|w+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60
-@75
-|$+0#e000e06&|F|O@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@63
-|$+0#e000e06&|F|O@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
-@57|9|1|,|1| @9|4|7|%|
+@57|9|1|,|1| @9|4|1|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_variables_06.dump b/runtime/syntax/testdir/dumps/vim9_variables_06.dump
index b0380cb..9fbcf77 100644
--- a/runtime/syntax/testdir/dumps/vim9_variables_06.dump
+++ b/runtime/syntax/testdir/dumps/vim9_variables_06.dump
@@ -1,20 +1,20 @@
-|$+0#e000e06#ffffff0|F|O@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
+|w+0#00e0e07#ffffff0|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60
@75
-|@+0#e000e06&|f| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@65
+|$+0#e000e06&|F|O@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@63
+|$+0#e000e06&|F|O@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
+@75
+>@+0#e000e06&|f| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@65
|@+0#e000e06&|f| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@63
@75
->&+0#00e0e07&|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@63
+|&+0#00e0e07&|a|r|i| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@63
@75
|&+0#00e0e07&|t|_|k|1| +0#0000000&|=+0#af5f00255&| +0#0000000&|"+0#e000002&|\+0#e000e06&|<|E|s|c|>|[+0#e000002&|2|3|4|;|"| +0#0000000&@53
@75
-|&+0#00e0e07&|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
+|&+0#00e0e07&|a|r|i| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
@75
-|&+0#00e0e07&|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62
-|&+0#00e0e07&|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62
+|&+0#00e0e07&|a|r|i| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62
+|&+0#00e0e07&|a|r|i| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62
@75
-|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
+|&+0#00e0e07&|l|:|a|l|e|p|h| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
@75
-|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
-|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60
-|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60
-@57|1|0|9|,|1| @8|5|7|%|
+@57|1|0|9|,|1| @8|5|0|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_variables_07.dump b/runtime/syntax/testdir/dumps/vim9_variables_07.dump
index adf80f5..a7a60ac 100644
--- a/runtime/syntax/testdir/dumps/vim9_variables_07.dump
+++ b/runtime/syntax/testdir/dumps/vim9_variables_07.dump
@@ -1,20 +1,20 @@
-|&+0#00e0e07#ffffff0|l|:|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60
+| +0&#ffffff0@74
+|&+0#00e0e07&|l|:|a|l|e|p|h| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
+|&+0#00e0e07&|l|:|a|l|e|p|h| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58
+|&+0#00e0e07&|l|:|a|l|e|p|h| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58
@75
-|&+0#00e0e07&|g|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
+>&+0#00e0e07&|g|:|a|l|e|p|h| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
@75
-|&+0#00e0e07&|g|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
->&+0#00e0e07&|g|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60
-|&+0#00e0e07&|g|:|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60
+|&+0#00e0e07&|g|:|a|l|e|p|h| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
+|&+0#00e0e07&|g|:|a|l|e|p|h| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58
+|&+0#00e0e07&|g|:|a|l|e|p|h| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58
@75
|[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
|[|f+0#00e0e07&|o@1|,+0#0000000&| @69
@6|\| |b+0#00e0e07&|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
-|[|v+0#00e0e07&|:|f|o@1|,+0#0000000&| |v+0#00e0e07&|:|b|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
-|[|v+0#00e0e07&|:|f|o@1|,+0#0000000&| @67
-@6|\| |v+0#00e0e07&|:|b|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
-|[|&+0#00e0e07&|f|o@1|,+0#0000000&| |&+0#00e0e07&|b|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
-|[|&+0#00e0e07&|f|o@1|,+0#0000000&| @68
-@6|\| |&+0#00e0e07&|b|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
-|[|$+0#e000e06&|f|o@1|,+0#0000000&| |$+0#e000e06&|b|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
-|[|$+0#e000e06&|f|o@1|,+0#0000000&| @68
-@57|1|2|7|,|1| @8|6|7|%|
+|[|v+0#00e0e07&|:|t|r|u|e|,+0#0000000&| |v+0#00e0e07&|:|f|a|l|s|e|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@50
+|[|v+0#00e0e07&|:|t|r|u|e|,+0#0000000&| @66
+@6|\| |v+0#00e0e07&|:|f|a|l|s|e|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51
+|[|&+0#00e0e07&|a|r|i|,+0#0000000&| |&+0#00e0e07&|b|k|c|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
+|[|&+0#00e0e07&|a|r|i|,+0#0000000&| @68
+@57|1|2|7|,|1| @8|5|9|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_variables_08.dump b/runtime/syntax/testdir/dumps/vim9_variables_08.dump
index 5348a7e..38b1f31 100644
--- a/runtime/syntax/testdir/dumps/vim9_variables_08.dump
+++ b/runtime/syntax/testdir/dumps/vim9_variables_08.dump
@@ -1,9 +1,12 @@
-|[+0&#ffffff0|$+0#e000e06&|f|o@1|,+0#0000000&| @68
+|[+0&#ffffff0|&+0#00e0e07&|a|r|i|,+0#0000000&| @68
+@6|\| |&+0#00e0e07&|b|k|c|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
+|[|$+0#e000e06&|f|o@1|,+0#0000000&| |$+0#e000e06&|b|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
+|[|$+0#e000e06&|f|o@1|,+0#0000000&| @68
@6|\| @1|$+0#e000e06&|b|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
-|[|@+0#e000e06&|a|,+0#0000000&| |@+0#e000e06&|b|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
+>[|@+0#e000e06&|a|,+0#0000000&| |@+0#e000e06&|b|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
|[|@+0#e000e06&|a|,+0#0000000&| @70
@6|\| @1|@+0#e000e06&|a|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
-> @74
+@75
|[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#0000000&| |.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
|[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#0000000&| |++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
|[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#0000000&| |-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
@@ -14,7 +17,4 @@
|[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|;+0#0000000&| |b+0#00e0e07&|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52
|[|f+0#00e0e07&|o@1|,+0#0000000&| @69
@6|\| |b+0#00e0e07&|a|r|;+0#0000000&| @62
-@6|\| |b+0#00e0e07&|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
-|[|v+0#00e0e07&|:|f|o@1|,+0#0000000&| |v+0#00e0e07&|:|b|a|r|;+0#0000000&| |v+0#00e0e07&|:|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@46
-|[|v+0#00e0e07&|:|f|o@1|,+0#0000000&| @67
-@57|1|4|5|,|0|-|1| @6|7|8|%|
+@57|1|4|5|,|1| @8|6|8|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_variables_09.dump b/runtime/syntax/testdir/dumps/vim9_variables_09.dump
index 1294cb1..7db3406 100644
--- a/runtime/syntax/testdir/dumps/vim9_variables_09.dump
+++ b/runtime/syntax/testdir/dumps/vim9_variables_09.dump
@@ -1,20 +1,20 @@
-|[+0&#ffffff0|v+0#00e0e07&|:|f|o@1|,+0#0000000&| @67
-@6|\| |v+0#00e0e07&|:|b|a|r|;+0#0000000&| @60
-@6|\| |v+0#00e0e07&|:|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
+| +0&#ffffff0@5|\| |b+0#00e0e07&|a|r|;+0#0000000&| @62
+@6|\| |b+0#00e0e07&|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
+|[|v+0#00e0e07&|:|t|r|u|e|,+0#0000000&| |v+0#00e0e07&|:|f|a|l|s|e|;+0#0000000&| |v+0#00e0e07&|:|n|o|n|e|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@42
+|[|v+0#00e0e07&|:|t|r|u|e|,+0#0000000&| @66
+@6|\| |v+0#00e0e07&|:|f|a|l|s|e|;+0#0000000&| @58
+@6>\| |v+0#00e0e07&|:|n|o|n|e|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52
|[|$+0#e000e06&|f|o@1|,+0#0000000&| |$+0#e000e06&|b|a|r|;+0#0000000&| |$+0#e000e06&|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@49
|[|$+0#e000e06&|f|o@1|,+0#0000000&| @68
-@6>\| |$+0#e000e06&|b|a|r|;+0#0000000&| @61
+@6|\| |$+0#e000e06&|b|a|r|;+0#0000000&| @61
@6|\| |$+0#e000e06&|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
-|[|&+0#00e0e07&|f|o@1|,+0#0000000&| |&+0#00e0e07&|b|a|r|;+0#0000000&| |&+0#00e0e07&|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@49
-|[|&+0#00e0e07&|f|o@1|,+0#0000000&| @68
-@6|\| |&+0#00e0e07&|b|a|r|;+0#0000000&| @61
-@6|\| |&+0#00e0e07&|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
+|[|&+0#00e0e07&|a|r|i|,+0#0000000&| |&+0#00e0e07&|b|k|c|;+0#0000000&| |&+0#00e0e07&|c|m|p|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@49
+|[|&+0#00e0e07&|a|r|i|,+0#0000000&| @68
+@6|\| |&+0#00e0e07&|b|k|c|;+0#0000000&| @61
+@6|\| |&+0#00e0e07&|c|m|p|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
|[|@+0#e000e06&|a|,+0#0000000&| |@+0#e000e06&|b|;+0#0000000&| |@+0#e000e06&|c|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
|[|@+0#e000e06&|a|,+0#0000000&| @70
@6|\| |@+0#e000e06&|b|;+0#0000000&| @63
@6|\| |@+0#e000e06&|c|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
@75
-|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |E|N|D| +0#0000000&@63
-|.+0#e000002&@2| +0#0000000&@71
-|E+0#e000e06&|N|D| +0#0000000&@71
-@57|1|6|3|,|7| @8|8@1|%|
+@57|1|6|3|,|7| @8|7@1|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_variables_10.dump b/runtime/syntax/testdir/dumps/vim9_variables_10.dump
index b2dd950..534a054 100644
--- a/runtime/syntax/testdir/dumps/vim9_variables_10.dump
+++ b/runtime/syntax/testdir/dumps/vim9_variables_10.dump
@@ -1,10 +1,13 @@
-|E+0#e000e06#ffffff0|N|D| +0#0000000&@71
-|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@58
+| +0&#ffffff0@74
+|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |E|N|D| +0#0000000&@63
|.+0#e000002&@2| +0#0000000&@71
|E+0#e000e06&|N|D| +0#0000000&@71
-|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |e|v|a|l| |E|N|D| +0#0000000&@58
+|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@58
>.+0#e000002&@2| +0#0000000&@71
|E+0#e000e06&|N|D| +0#0000000&@71
+|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |e|v|a|l| |E|N|D| +0#0000000&@58
+|.+0#e000002&@2| +0#0000000&@71
+|E+0#e000e06&|N|D| +0#0000000&@71
|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |e|v|a|l| |E|N|D| +0#0000000&@53
|.+0#e000002&@2| +0#0000000&@71
|E+0#e000e06&|N|D| +0#0000000&@71
@@ -14,7 +17,4 @@
@75
|#+0#0000e05&| |:|f|o|r| +0#0000000&@68
@75
-|f+0#af5f00255&|o|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
-|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@68
-@75
-@57|1|8|1|,|1| @8|9|8|%|
+@57|1|8|1|,|1| @8|8|6|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_variables_11.dump b/runtime/syntax/testdir/dumps/vim9_variables_11.dump
index 9b3552e..136245e 100644
--- a/runtime/syntax/testdir/dumps/vim9_variables_11.dump
+++ b/runtime/syntax/testdir/dumps/vim9_variables_11.dump
@@ -1,20 +1,20 @@
| +0&#ffffff0@74
-|f+0#af5f00255&|o|r| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#0000000&| |i+0#af5f00255&|n| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52
+|f+0#af5f00255&|o|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@68
-> @74
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|1|9|7|,|0|-|1| @6|B|o|t|
+@75
+|f+0#af5f00255&|o|r| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#0000000&| |i+0#af5f00255&|n| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52
+>e+0#af5f00255&|n|d|f|o|r| +0#0000000&@68
+@75
+|#+0#0000e05&| |S|c|o|p|e| |d|i|c|t|i|o|n|a|r|i|e|s| +0#0000000&@54
+@75
+|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|b+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51
+|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|w+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51
+|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|t+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51
+|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|g+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51
+|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|v+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51
+@75
+|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|b+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|b+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35
+|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|w+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|w+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35
+|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|t+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35
+|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|g+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35
+@57|1|9@1|,|1| @8|9|5|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_variables_12.dump b/runtime/syntax/testdir/dumps/vim9_variables_12.dump
new file mode 100644
index 0000000..96b7c7c
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_variables_12.dump
@@ -0,0 +1,20 @@
+|f+0#af5f00255#ffffff0|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|g+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35
+|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|v+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|v+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35
+@75
+|#+0#0000e05&| |N|e|o|v|i|m|-|s|p|e|c|i|f|i|c| |v|a|r|i|a|b|l|e|s| |(|n|o|t| |h|i|g|h|l|i|g|h|t|e|d| |b|y| |d|e|f|a|u|l|t|)| +0#0000000&@18
+@75
+>e+0#af5f00255&|c|h|o| +0#0000000&|v+0#00e0e07&|:|l+0#0000000&|u|a| |v+0#00e0e07&|:|m+0#0000000&|s|g|p|a|c|k|_|t|y|p|e|s| |v+0#00e0e07&|:|r+0#0000000&|e|l|n|u|m| |v+0#00e0e07&|:|s+0#0000000&|t|d|e|r@1| |v+0#00e0e07&|:|t+0#0000000&|e|r|m|r|e|q|u|e|s|t| |v+0#00e0e07&|:|v+0#0000000&|i|r|t|n|u|m| @6
+@75
+|e+0#af5f00255&|c|h|o| +0#0000000&|&+0#00e0e07&|c+0#0000000&|h|a|n@1|e|l| |&+0#00e0e07&|i+0#0000000&|n|c@1|o|m@1|a|n|d| |&+0#00e0e07&|m+0#0000000&|o|u|s|e|s|c|r|o|l@1| |&+0#00e0e07&|p+0#0000000&|u|m|b|l|e|n|d| |&+0#00e0e07&|r+0#0000000&|e|d|r|a|w|d|e|b|u|g| |&+0#00e0e07&|s+0#0000000&|c|r|o|l@1|b|a|c|k| @1
+|e+0#af5f00255&|c|h|o| +0#0000000&|&+0#00e0e07&|s+0#0000000&|h|a|d|a| |&+0#00e0e07&|s+0#0000000&|h|a|d|a|f|i|l|e| |&+0#00e0e07&|s+0#0000000&|t|a|t|u|s|c|o|l|u|m|n| |&+0#00e0e07&|t+0#0000000&|e|r|m|p|a|s|t|e|f|i|l|t|e|r| |&+0#00e0e07&|t+0#0000000&|e|r|m|s|y|n|c| |&+0#00e0e07&|w+0#0000000&|i|n|b|a|r| @3
+|e+0#af5f00255&|c|h|o| +0#0000000&|&+0#00e0e07&|w+0#0000000&|i|n|b|l|e|n|d| |&+0#00e0e07&|w+0#0000000&|i|n|h|i|g|h|l|i|g|h|t| @46
+@75
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|2|1|7|,|1| @8|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_01.dump b/runtime/syntax/testdir/dumps/vim_ex_function_01.dump
index 8e169ef..a14e929 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_01.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_01.dump
@@ -17,4 +17,4 @@
|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
@75
|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|{|"|F|"|}|o|{|"|o|"|}|(+0#e000e06&|)| +0#0000000&@52
-@57|1|9|,|1| @10|7|%|
+@57|1|9|,|1| @10|6|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_02.dump b/runtime/syntax/testdir/dumps/vim_ex_function_02.dump
index 95cec64..282c06c 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_02.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_02.dump
@@ -17,4 +17,4 @@
@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@63
|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
@75
-@57|3|7|,|0|-|1| @7|1|7|%|
+@57|3|7|,|0|-|1| @7|1|5|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_03.dump b/runtime/syntax/testdir/dumps/vim_ex_function_03.dump
index 8db514c..8192288 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_03.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_03.dump
@@ -17,4 +17,4 @@
@75
|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|f|o@1|#|b|a|r|#|F|o@1|(+0#e000e06&|)| +0#0000000&@52
@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@63
-@57|5@1|,|1| @9|2|7|%|
+@57|5@1|,|1| @9|2|5|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_04.dump b/runtime/syntax/testdir/dumps/vim_ex_function_04.dump
index cf2287b..486dfd8 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_04.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_04.dump
@@ -17,4 +17,4 @@
|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&|r+0#e000e06&|a|n|g|e| +0#0000000&@54
@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@63
|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
-@57|7|3|,|1| @9|3|7|%|
+@57|7|3|,|1| @9|3|4|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_05.dump b/runtime/syntax/testdir/dumps/vim_ex_function_05.dump
index a753075..4359d4e 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_05.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_05.dump
@@ -17,4 +17,4 @@
|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
@75
|f+0#af5f00255&|u|n|c|t|i|o|n|!| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&|r+0#e000e06&|a|n|g|e| +0#0000000&@53
-@57|9|1|,|0|-|1| @7|4|7|%|
+@57|9|1|,|0|-|1| @7|4|3|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_06.dump b/runtime/syntax/testdir/dumps/vim_ex_function_06.dump
index 06ff656..f4d96ac 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_06.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_06.dump
@@ -17,4 +17,4 @@
|f+0#af5f00255&|u|n|c|t|i|o|n|!| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&|r+0#e000e06&|a|n|g|e| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&|d+0#e000e06&|i|c|t| +0#0000000&|c+0#e000e06&|l|o|s|u|r|e| +0#0000000&@34
@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@63
|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
-@57|1|0|9|,|3| @8|5|7|%|
+@57|1|0|9|,|3| @8|5|3|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_07.dump b/runtime/syntax/testdir/dumps/vim_ex_function_07.dump
index 447f144..160f9ad 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_07.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_07.dump
@@ -17,4 +17,4 @@
|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@53
@75
@75
-@57|1|2|7|,|1| @8|6|7|%|
+@57|1|2|7|,|1| @8|6|2|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_08.dump b/runtime/syntax/testdir/dumps/vim_ex_function_08.dump
index c9a2d06..98e02cf 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_08.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_08.dump
@@ -17,4 +17,4 @@
@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@63
|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
@75
-@57|1|4|5|,|1| @8|7@1|%|
+@57|1|4|5|,|1| @8|7|1|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_09.dump b/runtime/syntax/testdir/dumps/vim_ex_function_09.dump
index 46b3c93..60ea6cb 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_09.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_09.dump
@@ -6,15 +6,15 @@
@2>r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@63
|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
@75
-|"+0#0000e05&| |I|s@1|u|e| |#|1|6|2|4|3| |(|v|i|m|s|c|r|i|p|t| |d|e|f| |p|a|r|a|m|e|t|e|r|s| |s|y|n|t|a|x| |h|i|g|h|l|i|g|h|t| |i|s| |w|r|o|n|g|)| +0#0000000&@7
@75
-|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|T|e|s|t|(+0#e000e06&|l+0#00e0e07&|i|n|e|s| +0#0000000&|=+0#af5f00255&| +0#0000000&|[+0#e000e06&|l+0#00e0e07&|i|n|e|(+0#e000e06&|'+0#e000002&|.|'|)+0#e000e06&|,+0#0000000&| |l+0#00e0e07&|i|n|e|(+0#e000e06&|'+0#e000002&|.|'|)+0#e000e06&|]|)| +0#0000000&@29
+|"+0#0000e05&| |a|r|g|u|m|e|n|t|s| +0#0000000&@63
+@75
+|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|a+0#00e0e07&|,+0#0000000&| |b+0#00e0e07&|,+0#0000000&| |c+0#00e0e07&|)+0#e000e06&| +0#0000000&@53
+@2|e+0#af5f00255&|c|h|o| +0#0000000&|a+0#00e0e07&|:|a| +0#0000000&|a+0#00e0e07&|:|b| +0#0000000&|a+0#00e0e07&|:|c| +0#0000000&@56
|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
@75
-@75
-|"+0#0000e05&| |c|o|m@1|e|n|t|s| +0#0000000&@64
-@75
-|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@60
-@2|"+0#0000e05&| |L|e|g|a|c|y|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| +0#0000000&@49
-@2|#| |4+0#e000002&|2| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@58
-@57|1|6|3|,|3| @8|8|7|%|
+|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|.+0#00e0e07&@2|)+0#e000e06&| +0#0000000&@57
+@2|e+0#af5f00255&|c|h|o| +0#0000000&|a+0#00e0e07&|:|0@2| +0#0000000&@62
+@2|e+0#af5f00255&|c|h|o| +0#0000000&|a+0#00e0e07&|:|0| +0#0000000&@64
+@2|e+0#af5f00255&|c|h|o| +0#0000000&|a+0#00e0e07&|:|1| +0#0000000&|a+0#00e0e07&|:|2| +0#0000000&|a+0#00e0e07&|:|3| +0#0000000&|a+0#00e0e07&|:|4| +0#0000000&|a+0#00e0e07&|:|5| +0#0000000&|a+0#00e0e07&|:|6| +0#0000000&|a+0#00e0e07&|:|7| +0#0000000&|a+0#00e0e07&|:|8| +0#0000000&|a+0#00e0e07&|:|9| +0#0000000&|a+0#00e0e07&|:|1|0| +0#0000000&|a+0#00e0e07&|:|1@1| +0#0000000&|a+0#00e0e07&|:|1|2| +0#0000000&|a+0#00e0e07&|:|1|3| +0#0000000&|a+0#00e0e07&|:|1|4| +0#0000000&|a+0#00e0e07&|:|1|5|@+0#4040ff13&@2
+| +0#0000000&@56|1|6|3|,|3| @8|8|0|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_10.dump b/runtime/syntax/testdir/dumps/vim_ex_function_10.dump
index b9ae9b1..21c9372 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_10.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_10.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@1|#| |4+0#e000002&|2| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@58
+| +0&#ffffff0@1|e+0#af5f00255&|c|h|o| +0#0000000&|a+0#00e0e07&|:|1| +0#0000000&|a+0#00e0e07&|:|2| +0#0000000&|a+0#00e0e07&|:|3| +0#0000000&|a+0#00e0e07&|:|4| +0#0000000&|a+0#00e0e07&|:|5| +0#0000000&|a+0#00e0e07&|:|6| +0#0000000&|a+0#00e0e07&|:|7| +0#0000000&|a+0#00e0e07&|:|8| +0#0000000&|a+0#00e0e07&|:|9| +0#0000000&|a+0#00e0e07&|:|1|0| +0#0000000&|a+0#00e0e07&|:|1@1| +0#0000000&|a+0#00e0e07&|:|1|2| +0#0000000&|a+0#00e0e07&|:|1|3| +0#0000000&|a+0#00e0e07&|:|1|4| +0#0000000&|a+0#00e0e07&|:|1|5| +0#0000000&|a+0#00e0e07&|:
+|1|6| +0#0000000&|a+0#00e0e07&|:|1|7| +0#0000000&|a+0#00e0e07&|:|1|8| +0#0000000&|a+0#00e0e07&|:|1|9| +0#0000000&|a+0#00e0e07&|:|2|0| +0#0000000&@52
+|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
+@75
+@75
+>"+0#0000e05&| |I|s@1|u|e| |#|1|6|2|4|3| |(|v|i|m|s|c|r|i|p|t| |d|e|f| |p|a|r|a|m|e|t|e|r|s| |s|y|n|t|a|x| |h|i|g|h|l|i|g|h|t| |i|s| |w|r|o|n|g|)| +0#0000000&@7
+@75
+|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|T|e|s|t|(+0#e000e06&|l+0#00e0e07&|i|n|e|s| +0#0000000&|=+0#af5f00255&| +0#0000000&|[+0#e000e06&|l+0#00e0e07&|i|n|e|(+0#e000e06&|'+0#e000002&|.|'|)+0#e000e06&|,+0#0000000&| |l+0#00e0e07&|i|n|e|(+0#e000e06&|'+0#e000002&|.|'|)+0#e000e06&|]|)| +0#0000000&@29
+|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
+@75
+@75
+|"+0#0000e05&| |c|o|m@1|e|n|t|s| +0#0000000&@64
+@75
+|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@60
+@2|"+0#0000e05&| |L|e|g|a|c|y|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| +0#0000000&@49
+@2|#| |4+0#e000002&|2| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@58
@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@63
|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
@75
-@75
->"+0#0000e05&| |c|o|m@1|a|n|d| |m|o|d|i|f|i|e|r|s| +0#0000000&@55
-@75
-|s+0#af5f00255&|i|l|e|n|t|!| +0#0000000&|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@52
-|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
-@75
-@75
-|"+0#0000e05&| |l|e|a|d|i|n|g| |c|o|m@1|a|n|d| |s|e|p|a|r|a|t|o|r| +0#0000000&@47
-@75
-|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&||| |f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@47
-|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
-@75
-@75
-|"+0#0000e05&| |d|e|l|e|t|e| |f|u|n|c|t|i|o|n| +0#0000000&@57
-@75
-@57|1|8|1|,|1| @8|9|7|%|
+@57|1|8|0|,|1| @8|8|9|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_11.dump b/runtime/syntax/testdir/dumps/vim_ex_function_11.dump
index c0e9e38..8689303 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_11.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_11.dump
@@ -1,20 +1,20 @@
| +0&#ffffff0@74
+@75
+|"+0#0000e05&| |c|o|m@1|a|n|d| |m|o|d|i|f|i|e|r|s| +0#0000000&@55
+@75
+|s+0#af5f00255&|i|l|e|n|t|!| +0#0000000&|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@52
+>e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
+@75
+@75
+|"+0#0000e05&| |l|e|a|d|i|n|g| |c|o|m@1|a|n|d| |s|e|p|a|r|a|t|o|r| +0#0000000&@47
+@75
+|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&||| |f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@47
+|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
+@75
+@75
+|"+0#0000e05&| |d|e|l|e|t|e| |f|u|n|c|t|i|o|n| +0#0000000&@57
+@75
|d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&|F|o@1| @59
|d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&|f|o@1|.+0#af5f00255&|b+0#00e0e07&|a|r| +0#0000000&@55
|d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n|!| +0#0000000&|F|o@1| @58
-|d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&|f|o@1|.+0#af5f00255&|b+0#00e0e07&|a|r| +0#0000000&@55
-> @74
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|1|9@1|,|0|-|1| @6|B|o|t|
+@57|1|9|8|,|1| @8|9|8|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_12.dump b/runtime/syntax/testdir/dumps/vim_ex_function_12.dump
new file mode 100644
index 0000000..d5e26ae
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_12.dump
@@ -0,0 +1,20 @@
+|d+0#af5f00255#ffffff0|e|l|f|u|n|c|t|i|o|n|!| +0#0000000&|F|o@1| @58
+|d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&|f|o@1|.+0#af5f00255&|b+0#00e0e07&|a|r| +0#0000000&@55
+> @74
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|2|1|3|,|0|-|1| @6|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_01.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_01.dump
index c8c048a..326df16 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_01.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_01.dump
@@ -17,4 +17,4 @@
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o|{|"|o|"|}|(+0#e000e06&|)| +0#0000000&@54
||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
-@57|1|9|,|0|-|1| @8|5|%|
+@57|1|9|,|0|-|1| @8|4|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_02.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_02.dump
index 7787c5e..8eb430d 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_02.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_02.dump
@@ -17,4 +17,4 @@
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@48
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
-@57|3|7|,|1| @9|1|2|%|
+@57|3|7|,|1| @9|1@1|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_04.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_04.dump
index a5c5905..6a9fd94 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_04.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_04.dump
@@ -17,4 +17,4 @@
||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&|r+0#e000e06&|a|n|g|e| +0#0000000&@52
-@57|7|3|,|1| @9|2|5|%|
+@57|7|3|,|1| @9|2|4|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_05.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_05.dump
index 1bd9a10..e0e97ad 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_05.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_05.dump
@@ -17,4 +17,4 @@
|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&|r+0#e000e06&|a|n|g|e| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&|d+0#e000e06&|i|c|t| +0#0000000&|c+0#e000e06&|l|o|s|u|r|e| +0#0000000&@33
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
-@57|9|1|,|3| @9|3|2|%|
+@57|9|1|,|3| @9|3|1|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_06.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_06.dump
index 0fc4e79..934e311 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_06.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_06.dump
@@ -17,4 +17,4 @@
||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n|!| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&|r+0#e000e06&|a|n|g|e| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&|d+0#e000e06&|i|c|t| +0#0000000&|c+0#e000e06&|l|o|s|u|r|e| +0#0000000&@32
-@57|1|0|9|,|0|-|1| @6|3|9|%|
+@57|1|0|9|,|0|-|1| @6|3|8|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_07.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_07.dump
index 3baa3fc..fba5b01 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_07.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_07.dump
@@ -17,4 +17,4 @@
|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@58
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@51
-@57|1|2|7|,|1| @8|4|6|%|
+@57|1|2|7|,|1| @8|4@1|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_08.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_08.dump
index 9a63a15..b4007e6 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_08.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_08.dump
@@ -17,4 +17,4 @@
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|x+0#00e0e07&|,+0#0000000&| |y+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|4+0#e000002&|2|,+0#0000000&| |z+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|"+0#e000002&|z|e|d|"|)+0#e000e06&| +0#0000000&@38
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
-@57|1|4|5|,|1| @8|5|3|%|
+@57|1|4|5|,|1| @8|5|1|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_09.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_09.dump
index 9fd52ee..47b294c 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_09.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_09.dump
@@ -9,12 +9,12 @@
||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |c|o|m@1|e|n|t|s| +0#0000000&@62
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |a|r|g|u|m|e|n|t|s| +0#0000000&@61
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@58
-||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|"+0#0000e05&| |L|e|g|a|c|y|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| +0#0000000&@47
-||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|#| |4+0#e000002&|2| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@56
-||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|a+0#00e0e07&|,+0#0000000&| |b+0#00e0e07&|,+0#0000000&| |c+0#00e0e07&|)+0#e000e06&| +0#0000000&@51
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|e+0#af5f00255&|c|h|o| +0#0000000&|a+0#00e0e07&|:|a| +0#0000000&|a+0#00e0e07&|:|b| +0#0000000&|a+0#00e0e07&|:|c| +0#0000000&@54
||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-@57|1|6|3|,|7| @8|6|0|%|
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|.+0#00e0e07&@2|)+0#e000e06&| +0#0000000&@55
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|e+0#af5f00255&|c|h|o| +0#0000000&|a+0#00e0e07&|:|0@2| +0#0000000&@60
+@57|1|6|3|,|7| @8|5|7|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_10.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_10.dump
index 0ced9e8..dd7f7a1 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_10.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_10.dump
@@ -1,20 +1,20 @@
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|e+0#af5f00255&|c|h|o| +0#0000000&|a+0#00e0e07&|:|0@2| +0#0000000&@60
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|e+0#af5f00255&|c|h|o| +0#0000000&|a+0#00e0e07&|:|0| +0#0000000&@62
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|e+0#af5f00255&|c|h|o| +0#0000000&|a+0#00e0e07&|:|1| +0#0000000&|a+0#00e0e07&|:|2| +0#0000000&|a+0#00e0e07&|:|3| +0#0000000&|a+0#00e0e07&|:|4| +0#0000000&|a+0#00e0e07&|:|5| +0#0000000&|a+0#00e0e07&|:|6| +0#0000000&|a+0#00e0e07&|:|7| +0#0000000&|a+0#00e0e07&|:|8| +0#0000000&|a+0#00e0e07&|:|9| +0#0000000&|a+0#00e0e07&|:|1|0| +0#0000000&|a+0#00e0e07&|:|1@1| +0#0000000&|a+0#00e0e07&|:|1|2| +0#0000000&|a+0#00e0e07&|:|1|3| +0#0000000&|a+0#00e0e07&|:|1|4| +0#0000000&|a+0#00e0e07&|:|1|5| +0#0000000&
+||+0#0000e05#a8a8a8255| |a+0#00e0e07#ffffff0|:|1|6| +0#0000000&|a+0#00e0e07&|:|1|7| +0#0000000&|a+0#00e0e07&|:|1|8| +0#0000000&|a+0#00e0e07&|:|1|9| +0#0000000&|a+0#00e0e07&|:|2|0| +0#0000000&@48
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1> +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |c|o|m@1|e|n|t|s| +0#0000000&@62
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@58
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|"+0#0000e05&| |L|e|g|a|c|y|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| +0#0000000&@47
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|#| |4+0#e000002&|2| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@56
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |c|o|m@1|a|n|d| |m|o|d|i|f|i|e|r|s| +0#0000000&@53
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|-+0#0000e05#a8a8a8255| |s+0#af5f00255#ffffff0|i|l|e|n|t|!| +0#0000000&|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@50
-||+0#0000e05#a8a8a8255| >e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |l|e|a|d|i|n|g| |c|o|m@1|a|n|d| |s|e|p|a|r|a|t|o|r| +0#0000000&@45
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-|-+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&||| |f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@45
-||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |d|e|l|e|t|e| |f|u|n|c|t|i|o|n| +0#0000000&@55
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-| +0#0000e05#a8a8a8255@1|d+0#af5f00255#ffffff0|e|l|f|u|n|c|t|i|o|n| +0#0000000&|F|o@1| @57
-| +0#0000e05#a8a8a8255@1|d+0#af5f00255#ffffff0|e|l|f|u|n|c|t|i|o|n| +0#0000000&|f|o@1|.+0#af5f00255&|b+0#00e0e07&|a|r| +0#0000000&@53
-| +0#0000e05#a8a8a8255@1|d+0#af5f00255#ffffff0|e|l|f|u|n|c|t|i|o|n|!| +0#0000000&|F|o@1| @56
-@57|1|8|1|,|1| @8|6|7|%|
+@57|1|8|0|,|0|-|1| @6|6|4|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_11.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_11.dump
index 32ddd8b..631cb21 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_11.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_11.dump
@@ -1,20 +1,20 @@
+|-+0#0000e05#a8a8a8255| |s+0#af5f00255#ffffff0|i|l|e|n|t|!| +0#0000000&|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@50
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |l|e|a|d|i|n|g| |c|o|m@1|a|n|d| |s|e|p|a|r|a|t|o|r| +0#0000000&@45
+| +0#0000e05#a8a8a8255@1> +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&||| |f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@45
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |d|e|l|e|t|e| |f|u|n|c|t|i|o|n| +0#0000000&@55
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|d+0#af5f00255#ffffff0|e|l|f|u|n|c|t|i|o|n| +0#0000000&|F|o@1| @57
+| +0#0000e05#a8a8a8255@1|d+0#af5f00255#ffffff0|e|l|f|u|n|c|t|i|o|n| +0#0000000&|f|o@1|.+0#af5f00255&|b+0#00e0e07&|a|r| +0#0000000&@53
| +0#0000e05#a8a8a8255@1|d+0#af5f00255#ffffff0|e|l|f|u|n|c|t|i|o|n|!| +0#0000000&|F|o@1| @56
| +0#0000e05#a8a8a8255@1|d+0#af5f00255#ffffff0|e|l|f|u|n|c|t|i|o|n| +0#0000000&|f|o@1|.+0#af5f00255&|b+0#00e0e07&|a|r| +0#0000000&@53
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |f|o|l|d|-|r|e|g|i|o|n| |e|n|d|i|n|g| +0#0000000&@52
-| +0#0000e05#a8a8a8255@1> +0#0000000#ffffff0@72
-|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@58
-||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|"+0#0000e05&| |e|n|d|f|u|n|c|t|i|o|n| +0#0000000&@57
-||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@58
-||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|e|n|d|f|u|n|c|t|i|o|n|"| +0#0000000&@52
-||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@58
-||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|x+0#00e0e07&| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@52
-||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|e|n|d|f|u|n|c|t|i|o|n| +0#0000000&@57
-||+0#0000e05#a8a8a8255| | +0#e000e06#ffffff0@1|E|N|D| +0#0000000&@67
-||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
-@57|1|9@1|,|0|-|1| @6|7|4|%|
+@57|1|9|8|,|0|-|1| @6|7|0|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_12.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_12.dump
index 7a247fb..7fd54b4 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_12.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_12.dump
@@ -1,20 +1,20 @@
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |f|o|l|d|-|r|e|g|i|o|n| |e|n|d|i|n|g| +0#0000000&@52
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@58
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|"+0#0000e05&| |e|n|d|f|u|n|c|t|i|o|n| +0#0000000&@57
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1> +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@58
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|e|n|d|f|u|n|c|t|i|o|n|"| +0#0000000&@52
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@58
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|x+0#00e0e07&| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@52
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|e|n|d|f|u|n|c|t|i|o|n| +0#0000000&@57
+||+0#0000e05#a8a8a8255| | +0#e000e06#ffffff0@1|E|N|D| +0#0000000&@67
||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@58
||+0#0000e05#a8a8a8255| | +0#af5f00255#ffffff0@1|a|p@1|e|n|d| +0#0000000&@64
||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|e|n|d|f|u|n|c|t|i|o|n| +0#0000000&@57
-||+0#0000e05#a8a8a8255| >.+0#af5f00255#ffffff0| +0#0000000&@71
-||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@58
-||+0#0000e05#a8a8a8255| | +0#af5f00255#ffffff0@1|c|h|a|n|g|e| +0#0000000&@64
-||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|e|n|d|f|u|n|c|t|i|o|n| +0#0000000&@57
-||+0#0000e05#a8a8a8255| |.+0#af5f00255#ffffff0| +0#0000000&@71
-||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@72
-||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@58
-||+0#0000e05#a8a8a8255| | +0#af5f00255#ffffff0@1|i|n|s|e|r|t| +0#0000000&@64
-||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|e|n|d|f|u|n|c|t|i|o|n| +0#0000000&@57
-||+0#0000e05#a8a8a8255| |.+0#af5f00255#ffffff0| +0#0000000&@71
-@57|2|1|7|,|1| @8|8|1|%|
+@57|2|1|6|,|0|-|1| @6|7@1|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_13.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_13.dump
index 7270a96..e8f41da 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_13.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_13.dump
@@ -1,20 +1,20 @@
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|e|n|d|f|u|n|c|t|i|o|n| +0#0000000&@57
+||+0#0000e05#a8a8a8255| |.+0#af5f00255#ffffff0| +0#0000000&@71
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@58
+||+0#0000e05#a8a8a8255| | +0#af5f00255#ffffff0@1>c|h|a|n|g|e| +0#0000000&@64
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|e|n|d|f|u|n|c|t|i|o|n| +0#0000000&@57
+||+0#0000e05#a8a8a8255| |.+0#af5f00255#ffffff0| +0#0000000&@71
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@72
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@58
+||+0#0000e05#a8a8a8255| | +0#af5f00255#ffffff0@1|i|n|s|e|r|t| +0#0000000&@64
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|e|n|d|f|u|n|c|t|i|o|n| +0#0000000&@57
||+0#0000e05#a8a8a8255| |.+0#af5f00255#ffffff0| +0#0000000&@71
||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|-+0#0000e05#a8a8a8255| |:+0#0000000#ffffff0|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@57
||+0#0000e05#a8a8a8255| |:+0#0000000#ffffff0|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@60
-| +0#0000e05#a8a8a8255@1> +0#0000000#ffffff0@72
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |I|s@1|u|e| |#|1|5|6|7|1| +0#0000000&@58
-| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |N|o| |r|e|c|o|g|n|i|t|i|o|n| |o|f| |:|f|u|n| |o|r| |:|d|e|f| |b|o|d|i|e|s| |c|o|m@1|e|n|c|i|n|g| |w|i|t|h| |e|m|p|t|y| |l|i|n|e|s| |i|f| +0#0000000&@2
-| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |g|:|v|i|m|s|y|n|_|f|o|l|d|i|n|g| |c|o|n|t|a|i|n|s| |"+0#e000002&|f|"| +0#0000000&@41
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n| +0#0000000&|F|A|1|(+0#e000e06&|)| +0#0000000&@63
-||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@72
-||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@72
-||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62
-||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n| +0#0000000&@66
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n| +0#0000000&|F|A|2|(+0#e000e06&|)| +0#0000000&@63
-||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62
-@57|2|3|5|,|0|-|1| @6|8@1|%|
+@57|2|3|4|,|3| @8|8|4|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_14.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_14.dump
index ac0923c..5459f01 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_14.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_14.dump
@@ -1,20 +1,20 @@
+||+0#0000e05#a8a8a8255| |:+0#0000000#ffffff0|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@60
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |I|s@1|u|e| |#|1|5|6|7|1| +0#0000000&@58
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |N|o| |r|e|c|o|g|n|i|t|i|o|n| |o|f| |:|f|u|n| |o|r| |:|d|e|f| |b|o|d|i|e|s| |c|o|m@1|e|n|c|i|n|g| |w|i|t|h| |e|m|p|t|y| |l|i|n|e|s| |i|f| +0#0000000&@2
+| +0#0000e05#a8a8a8255@1>"+0&#ffffff0| |g|:|v|i|m|s|y|n|_|f|o|l|d|i|n|g| |c|o|n|t|a|i|n|s| |"+0#e000002&|f|"| +0#0000000&@41
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n| +0#0000000&|F|A|1|(+0#e000e06&|)| +0#0000000&@63
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@72
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@72
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n| +0#0000000&|F|A|2|(+0#e000e06&|)| +0#0000000&@63
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62
||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n| +0#0000000&@66
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n| +0#0000000&|F|B|1|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@57
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@72
-||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3>r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62
-||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n| +0#0000000&@66
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n| +0#0000000&|F|B|2|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@57
-||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62
-||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n| +0#0000000&@66
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n| +0#0000000&|F|C|1|(+0#e000e06&|_+0#00e0e07&|)+0#e000e06&| +0#0000000&@62
-||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@72
-||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62
-||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n| +0#0000000&@66
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n| +0#0000000&|F|C|2|(+0#e000e06&|_+0#00e0e07&|)+0#e000e06&| +0#0000000&@62
-||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62
-@57|2|5|3|,|5| @8|9|5|%|
+@57|2|5|2|,|1| @8|9|0|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_15.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_15.dump
index bf7a660..e77a995 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_15.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_15.dump
@@ -1,20 +1,20 @@
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@72
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n| +0#0000000&|F|B|2|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@57
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3>r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n| +0#0000000&|F|C|1|(+0#e000e06&|_+0#00e0e07&|)+0#e000e06&| +0#0000000&@62
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@72
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n| +0#0000000&|F|C|2|(+0#e000e06&|_+0#00e0e07&|)+0#e000e06&| +0#0000000&@62
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62
||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n| +0#0000000&@66
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n| +0#0000000&|F|D|1|(+0#e000e06&|_+0#00e0e07&|)+0#e000e06&| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@56
||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@72
-||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3>r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62
-||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n| +0#0000000&@66
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n| +0#0000000&|F|D|2|(+0#e000e06&|_+0#00e0e07&|)+0#e000e06&| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@56
-||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62
-||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n| +0#0000000&@66
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|2|7|1|,|5| @8|B|o|t|
+@57|2|7|0|,|5| @8|9|7|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_16.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_16.dump
new file mode 100644
index 0000000..81c8a8c
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_16.dump
@@ -0,0 +1,20 @@
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@72
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n| +0#0000000&|F|D|2|(+0#e000e06&|_+0#00e0e07&|)+0#e000e06&| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@56
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3>r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|2|8@1|,|5| @8|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_10.dump b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_10.dump
index 80f43cf..f85f860 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_10.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_10.dump
@@ -16,5 +16,5 @@
||+0#0000e05#a8a8a8255| |A+0#e000e06#ffffff0|!|@|#|$|%|^|&|*|(|)|_|+| +0#0000000&@59
| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |e|r@1|o|r| |-| |l|e|a|d|i|n|g| |l|o|w|e|r|c|a|s|e| |c|h|a|r|a|c|t|e|r| +0#0000000&@35
-| +0#0000e05#a8a8a8255@1|l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&|<@1| +0#0000000&|a+0#00e0e07&|!+0#0000000&|@|#|$|%+0#af5f00255&|^+0#0000000&|&|*+0#af5f00255&|(+0#e000e06&|)|_+0#0000000&|++0#af5f00255&| +0#0000000&@47
+| +0#0000e05#a8a8a8255@1|l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&|<@1| +0#0000000&|a+0#00e0e07&|!+0#0000000&|@|#|$|%+0#af5f00255&|^+0#0000000&|&+0#00e0e07&|*+0#af5f00255&|(+0#e000e06&|)|_+0#0000000&|++0#af5f00255&| +0#0000000&@47
@57|1|7|9|,|1| @8|9|7|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_11.dump b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_11.dump
index 761c210..6e0a5fb 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_11.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_11.dump
@@ -1,7 +1,7 @@
-| +0#0000e05#a8a8a8255@1|l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&|<@1| +0#0000000&|a+0#00e0e07&|!+0#0000000&|@|#|$|%+0#af5f00255&|^+0#0000000&|&|*+0#af5f00255&|(+0#e000e06&|)|_+0#0000000&|++0#af5f00255&| +0#0000000&@47
+| +0#0000e05#a8a8a8255@1|l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&|<@1| +0#0000000&|a+0#00e0e07&|!+0#0000000&|@|#|$|%+0#af5f00255&|^+0#0000000&|&+0#00e0e07&|*+0#af5f00255&|(+0#e000e06&|)|_+0#0000000&|++0#af5f00255&| +0#0000000&@47
| +0#0000e05#a8a8a8255@1|l+0#00e0e07#ffffff0|i|n|e|1| +0#0000000&@67
| +0#0000e05#a8a8a8255@1|l+0#0000000#ffffff0|i|n|e|2| @67
-| +0#0000e05#a8a8a8255@1|a+0#af5f00255#ffffff0|!|@+0#0000000&|#|$|%+0#af5f00255&|^+0#0000000&|&|*+0#af5f00255&|(+0#e000e06&|)|_+0#0000000&|++0#af5f00255&| +0#0000000&@59
+| +0#0000e05#a8a8a8255@1|a+0#af5f00255#ffffff0|!|@+0#0000000&|#|$|%+0#af5f00255&|^+0#0000000&|&+0#00e0e07&|*+0#af5f00255&|(+0#e000e06&|)|_+0#0000000&|++0#af5f00255&| +0#0000000&@59
| +0#0000e05#a8a8a8255@1> +0#0000000#ffffff0@72
|~+0#4040ff13&| @73
|~| @73
diff --git a/runtime/syntax/testdir/dumps/vim_expr_01.dump b/runtime/syntax/testdir/dumps/vim_expr_01.dump
index c6bb6db..a41994c 100644
--- a/runtime/syntax/testdir/dumps/vim_expr_01.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_01.dump
@@ -17,4 +17,4 @@
|e+0#af5f00255&|c|h|o| +0#0000000&|'+0#e000002&|f|o@1|'+0#e000e06&@1|'+0#e000002&| +0#0000000&@62
|e+0#af5f00255&|c|h|o| +0#0000000&|'+0#e000002&|f|o@1|'+0#e000e06&@1|b+0#e000002&|a|r|'| +0#0000000&@59
@75
-@57|1|5|,|1| @10|4|%|
+@57|1|5|,|1| @10|3|%|
diff --git a/runtime/syntax/testdir/dumps/vim_expr_02.dump b/runtime/syntax/testdir/dumps/vim_expr_02.dump
index 1374c3e..9f403fb 100644
--- a/runtime/syntax/testdir/dumps/vim_expr_02.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_02.dump
@@ -17,4 +17,4 @@
|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|'|'+0#e000e06&@1|f+0#e000002&|o@1|'| +0#0000000&@61
|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|'|f|o@1|'+0#e000e06&@1|'+0#e000002&| +0#0000000&@61
|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|'|f|o@1|'+0#e000e06&@1|b+0#e000002&|a|r|'| +0#0000000&@58
-@57|3|2|,|0|-|1| @7|1@1|%|
+@57|3|2|,|0|-|1| @8|9|%|
diff --git a/runtime/syntax/testdir/dumps/vim_expr_03.dump b/runtime/syntax/testdir/dumps/vim_expr_03.dump
index 8bfd824..f1de1ca 100644
--- a/runtime/syntax/testdir/dumps/vim_expr_03.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_03.dump
@@ -17,4 +17,4 @@
|e+0#af5f00255&|c|h|o| +0#0000000&@1|0+0#e000002&|o|3|7@1| +0#0000000&@63
|e+0#af5f00255&|c|h|o| +0#0000000&@1|0+0#e000002&|O|3|7@1| +0#0000000&@63
|e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|0+0#e000002&|3|7@1| +0#0000000&@64
-@57|5|0|,|1| @9|1|9|%|
+@57|5|0|,|1| @9|1|4|%|
diff --git a/runtime/syntax/testdir/dumps/vim_expr_04.dump b/runtime/syntax/testdir/dumps/vim_expr_04.dump
index 692c920..76f0ca7 100644
--- a/runtime/syntax/testdir/dumps/vim_expr_04.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_04.dump
@@ -17,4 +17,4 @@
|e+0#af5f00255&|c|h|o| +0#0000000&|1+0#e000002&|.|0|E|-|6| +0#0000000&@63
|e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|3+0#e000002&|.|1|4|1|6|e|+|8@1| +0#0000000&@58
@75
-@57|6|8|,|1| @9|2|7|%|
+@57|6|8|,|1| @9|2|0|%|
diff --git a/runtime/syntax/testdir/dumps/vim_expr_05.dump b/runtime/syntax/testdir/dumps/vim_expr_05.dump
index 24e34a2..21c8594 100644
--- a/runtime/syntax/testdir/dumps/vim_expr_05.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_05.dump
@@ -17,4 +17,4 @@
@6|\+0#e000e06&|]| +0#0000000&@66
|e+0#af5f00255&|c|h|o| +0#0000000&|[+0#e000e06&|1+0#e000002&|,+0#0000000&| |'+0#e000002&|t|w|o|'|,+0#0000000&| |1+0#e000002&| +0#0000000&|++0#af5f00255&| +0#0000000&|2+0#e000002&|,+0#0000000&| |"+0#e000002&|f|o|"| +0#0000000&|.+0#af5f00255&@1| +0#0000000&|"+0#e000002&|u|r|"|]+0#e000e06&| +0#0000000&@38
@75
-@57|8|6|,|1| @9|3|5|%|
+@57|8|6|,|1| @9|2|6|%|
diff --git a/runtime/syntax/testdir/dumps/vim_expr_06.dump b/runtime/syntax/testdir/dumps/vim_expr_06.dump
index b6bb3f7..fee408f 100644
--- a/runtime/syntax/testdir/dumps/vim_expr_06.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_06.dump
@@ -3,18 +3,18 @@
|a|c|e| |i|n| |l|i|s|t| |o|f| |s|t|r|i|n|g|)| +0#0000000&@52
|l+0#af5f00255&|e|t| +0#0000000&|l+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|[+0#e000e06&|'+0#e000002&|a|'|,+0#0000000&|'+0#e000002&|b|'|,+0#0000000&|'+0#e000002&|c|'|]+0#e000e06&| +0#0000000&@53
@75
->"+0#0000e05&| |R|e|g|i|s|t|e|r| +0#0000000&@64
+>"+0#0000e05&| |D|i|c|t|i|o|n|a|r|y| +0#0000000&@62
@75
-|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|"| +0#0000000&@67
-|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|0| +0#0000000&|@+0#e000e06&|1| +0#0000000&|@+0#e000e06&|2| +0#0000000&|@+0#e000e06&|3| +0#0000000&|@+0#e000e06&|4| +0#0000000&|@+0#e000e06&|5| +0#0000000&|@+0#e000e06&|6| +0#0000000&|@+0#e000e06&|7| +0#0000000&|@+0#e000e06&|8| +0#0000000&|@+0#e000e06&|9| +0#0000000&@40
-|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|-| +0#0000000&@67
-|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|a| +0#0000000&|@+0#e000e06&|b| +0#0000000&|@+0#e000e06&|c| +0#0000000&|@+0#e000e06&|d| +0#0000000&|@+0#e000e06&|e| +0#0000000&|@+0#e000e06&|f| +0#0000000&|@+0#e000e06&|g| +0#0000000&|@+0#e000e06&|h| +0#0000000&|@+0#e000e06&|i| +0#0000000&|@+0#e000e06&|j| +0#0000000&|@+0#e000e06&|k| +0#0000000&|@+0#e000e06&|l| +0#0000000&|@+0#e000e06&|m| +0#0000000&|@+0#e000e06&|n| +0#0000000&|@+0#e000e06&|o| +0#0000000&|@+0#e000e06&|p| +0#0000000&|@+0#e000e06&|q| +0#0000000&|@+0#e000e06&|r| +0#0000000&|@+0#e000e06&|s| +0#0000000&|@+0#e000e06&|t| +0#0000000&|@+0#e000e06&|u| +0#0000000&|@+0#e000e06&|v| +0#0000000&|@+0#e000e06&|w| +0#0000000&|@+0#e000e06&
-|x| +0#0000000&|@+0#e000e06&|y| +0#0000000&|@+0#e000e06&|z| +0#0000000&@67
-|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|A| +0#0000000&|@+0#e000e06&|B| +0#0000000&|@+0#e000e06&|C| +0#0000000&|@+0#e000e06&|D| +0#0000000&|@+0#e000e06&|E| +0#0000000&|@+0#e000e06&|F| +0#0000000&|@+0#e000e06&|G| +0#0000000&|@+0#e000e06&|H| +0#0000000&|@+0#e000e06&|I| +0#0000000&|@+0#e000e06&|J| +0#0000000&|@+0#e000e06&|K| +0#0000000&|@+0#e000e06&|L| +0#0000000&|@+0#e000e06&|M| +0#0000000&|@+0#e000e06&|N| +0#0000000&|@+0#e000e06&|O| +0#0000000&|@+0#e000e06&|P| +0#0000000&|@+0#e000e06&|Q| +0#0000000&|@+0#e000e06&|R| +0#0000000&|@+0#e000e06&|S| +0#0000000&|@+0#e000e06&|T| +0#0000000&|@+0#e000e06&|U| +0#0000000&|@+0#e000e06&|V| +0#0000000&|@+0#e000e06&|W| +0#0000000&|@+0#e000e06&
-|X| +0#0000000&|@+0#e000e06&|Y| +0#0000000&|@+0#e000e06&|Z| +0#0000000&@67
-|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|:| +0#0000000&|@+0#e000e06&|.| +0#0000000&|@+0#e000e06&|%| +0#0000000&|@+0#e000e06&|#| +0#0000000&|@+0#e000e06&|=| +0#0000000&|@+0#e000e06&|*| +0#0000000&|@+0#e000e06&|+| +0#0000000&|@+0#e000e06&|~| +0#0000000&|@+0#e000e06&|_| +0#0000000&|@+0#e000e06&|/| +0#0000000&@40
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&|}| +0#0000000&@67
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|'+0#e000002&|f|o@1|'|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&@52
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|"+0#e000002&|f|o@1|"|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&@52
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&@52
@75
-|"+0#0000e05&| |O|p|e|r|a|t|o|r|s| +0#0000000&@63
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|"+0#e000002&|f|o@1|"|:+0#0000000&| @1|{+0#e000e06&| +0#0000000&|'+0#e000002&|b|a|r|'|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@40
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|"+0#e000002&|f|o@1|"|:+0#0000000&| @1|{+0#e000e06&| +0#0000000&|"+0#e000002&|b|a|r|"|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@40
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|"+0#e000002&|f|o@1|"|:+0#0000000&| @1|{+0#e000e06&| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@40
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|"+0#e000002&|f|o@1|"|:+0#0000000&| |#+0#e000e06&|{| +0#0000000&@2|b+0#00e0e07&|a|r|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@40
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|"+0#e000002&|f|o@1|"|:+0#0000000&| |#+0#e000e06&|{| +0#0000000&|-+0#af5f00255&|b+0#00e0e07&|a|r|-+0#af5f00255&|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@40
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|"+0#e000002&|f|o@1|"|:+0#0000000&| |#+0#e000e06&|{| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@40
@75
-|"+0#0000e05&| |T|e|r|n|a|r|y| +0#0000000&@65
-@57|1|0|3|,|1| @8|4|2|%|
+@57|1|0|3|,|1| @8|3|2|%|
diff --git a/runtime/syntax/testdir/dumps/vim_expr_07.dump b/runtime/syntax/testdir/dumps/vim_expr_07.dump
index c2796e5..849e719 100644
--- a/runtime/syntax/testdir/dumps/vim_expr_07.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_07.dump
@@ -1,20 +1,20 @@
-|"+0#0000e05#ffffff0| |T|e|r|n|a|r|y| +0#0000000&@65
-|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|?+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|:+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51
+| +0&#ffffff0@74
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|'+0#e000002&|f|o@1|'|:+0#0000000&| @1|{+0#e000e06&| +0#0000000&|'+0#e000002&|b|a|r|'|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@40
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|'+0#e000002&|f|o@1|'|:+0#0000000&| @1|{+0#e000e06&| +0#0000000&|"+0#e000002&|b|a|r|"|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@40
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|'+0#e000002&|f|o@1|'|:+0#0000000&| @1|{+0#e000e06&| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@40
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|'+0#e000002&|f|o@1|'|:+0#0000000&| |#+0#e000e06&|{| +0#0000000&@2|b+0#00e0e07&|a|r|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@40
+>e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|'+0#e000002&|f|o@1|'|:+0#0000000&| |#+0#e000e06&|{| +0#0000000&|-+0#af5f00255&|b+0#00e0e07&|a|r|-+0#af5f00255&|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@40
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&|'+0#e000002&|f|o@1|'|:+0#0000000&| |#+0#e000e06&|{| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@40
@75
-|e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|t|o|p|"| +0#0000000&|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&@45
-|e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|t|o|p|"| +0#0000000&|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&|0@2| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|l|a|s|t|"| +0#0000000&|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&@21
-> @74
-|e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&@60
-@6|\+0#e000e06&| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|t|o|p|"| +0#0000000&@59
-@6|\+0#e000e06&| +0#0000000&|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&|0@2| +0#0000000&@52
-@6|\+0#e000e06&| +0#0000000&@8|?+0#af5f00255&| +0#0000000&|"+0#e000002&|l|a|s|t|"| +0#0000000&@50
-@6|\+0#e000e06&| +0#0000000&@8|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&@52
-|e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&@58
-@6|\+0#e000e06&| +0#0000000&|"+0#e000002&|t|o|p|"| +0#0000000&|:+0#af5f00255&| +0#0000000&@59
-@6|\+0#e000e06&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&|0@2| +0#0000000&|?+0#af5f00255&| +0#0000000&@52
-@6|\+0#e000e06&| +0#0000000&@8|"+0#e000002&|l|a|s|t|"| +0#0000000&|:+0#af5f00255&| +0#0000000&@50
-@6|\+0#e000e06&| +0#0000000&@8|l+0#00e0e07&|n|u|m| +0#0000000&@54
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| @1|{+0#e000e06&| +0#0000000&|'+0#e000002&|b|a|r|'|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@40
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| @1|{+0#e000e06&| +0#0000000&|"+0#e000002&|b|a|r|"|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@40
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| @1|{+0#e000e06&| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@40
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |#+0#e000e06&|{| +0#0000000&@2|b+0#00e0e07&|a|r|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@40
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |#+0#e000e06&|{| +0#0000000&|-+0#af5f00255&|b+0#00e0e07&|a|r|-+0#af5f00255&|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@40
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |#+0#e000e06&|{| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@40
@75
-|e+0#af5f00255&|c|h|o| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&|1+0#e000002&| +0#0000000&|:+0#af5f00255&| +0#0000000&|0+0#e000002&| +0#0000000&@60
-|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&|:+0#af5f00255&| +0#0000000&|"+0#e000002&|b|a|r|"| +0#0000000&@48
-@57|1@1|9|,|0|-|1| @6|5|0|%|
+|e+0#af5f00255&|c|h|o| +0#0000000&|{+0#e000e06&| +0#0000000&@68
+@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&|"+0#e000002&|f|o@1|"|:+0#0000000&| |{+0#e000e06&| +0#0000000&|"+0#e000002&|b|a|r|"|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&@42
+@6|\+0#e000e06&|}| +0#0000000&@66
+@57|1|2|1|,|1| @8|3|8|%|
diff --git a/runtime/syntax/testdir/dumps/vim_expr_08.dump b/runtime/syntax/testdir/dumps/vim_expr_08.dump
index 1b17c0a..9bbf30c 100644
--- a/runtime/syntax/testdir/dumps/vim_expr_08.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_08.dump
@@ -1,20 +1,20 @@
-|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&|:+0#af5f00255&| +0#0000000&|"+0#e000002&|b|a|r|"| +0#0000000&@48
-|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|?+0#af5f00255&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|:+0#af5f00255&| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@54
-|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|:|f|o@1| +0#0000000&|?+0#af5f00255&| +0#0000000&|g+0#00e0e07&|:|f|o@1| +0#0000000&|:+0#af5f00255&| +0#0000000&|g+0#00e0e07&|:|b|a|r| +0#0000000&@48
-|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&|?+0#af5f00255&| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&|:+0#af5f00255&| +0#0000000&|$+0#e000e06&|B|A|R| +0#0000000&@51
-|e+0#af5f00255&|c|h|o| +0#0000000&|T|r|u|e|(+0#e000e06&|)| +0#0000000&|?+0#af5f00255&| +0#0000000&|T|r|u|e|(+0#e000e06&|)| +0#0000000&|:+0#af5f00255&| +0#0000000&|F|a|l|s|e|(+0#e000e06&|)| +0#0000000&@44
->e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|a| +0#0000000&|?+0#af5f00255&| +0#0000000&|@+0#e000e06&|a| +0#0000000&|:+0#af5f00255&| +0#0000000&|@+0#e000e06&|b| +0#0000000&@57
-|e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&|?+0#af5f00255&| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&|:+0#af5f00255&| +0#0000000&|(+0#e000e06&|0+0#e000002&|)+0#e000e06&| +0#0000000&@54
+| +0&#ffffff0@5|\+0#e000e06&|}| +0#0000000&@66
@75
-|"+0#0000e05&| |F|a|l|s|y| +0#0000000&@67
-|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
+|"+0#0000e05&| +0#0000000&|T+0#0000001#ffff4012|O|D|O|:+0#e000e06#ffffff0| +0#0000e05&|a|r|b|i|t|r|a|r|y| |e|x|p|r|e|s@1|i|o|n| |k|e|y|s| +0#0000000&@41
@75
-|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|h|e|L|i|s|t| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|'+0#e000002&|l|i|s|t| |i|s| |e|m|p|t|y|'| +0#0000000&@43
-|e+0#af5f00255&|c|h|o| +0#0000000&|G|e|t|N|a|m|e|(+0#e000e06&|)| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|'+0#e000002&|u|n|k|n|o|w|n|'| +0#0000000&@47
+|"+0#0000e05&| |L|i|t|e|r|a|l| |D|i|c|t|i|o|n|a|r|y| +0#0000000&@54
+> @74
+|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{|}| +0#0000000&@66
+|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&@2|f+0#00e0e07&|o@1|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&@51
+|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|-+0#af5f00255&|f+0#00e0e07&|o@1|-+0#af5f00255&|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&@51
+|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&@51
@75
-|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|h|e|L|i|s|t| +0#0000000&@62
-@6|\+0#e000e06&| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|'+0#e000002&|l|i|s|t| |i|s| |e|m|p|t|y|'| +0#0000000&@48
-|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|h|e|L|i|s|t| +0#0000000&|?+0#af5f00255&@1| +0#0000000&@59
-@6|\+0#e000e06&| +0#0000000&|'+0#e000002&|l|i|s|t| |i|s| |e|m|p|t|y|'| +0#0000000&@51
+|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|f+0#00e0e07&|o@1|:+0#0000000&| |#+0#e000e06&|{| +0#0000000&@2|b+0#00e0e07&|a|r|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41
+|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|f+0#00e0e07&|o@1|:+0#0000000&| |#+0#e000e06&|{| +0#0000000&|-+0#af5f00255&|b+0#00e0e07&|a|r|-+0#af5f00255&|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41
+|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|f+0#00e0e07&|o@1|:+0#0000000&| |#+0#e000e06&|{| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41
+|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|f+0#00e0e07&|o@1|:+0#0000000&| @1|{+0#e000e06&| +0#0000000&|"+0#e000002&|b|a|r|"|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41
+|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|f+0#00e0e07&|o@1|:+0#0000000&| @1|{+0#e000e06&| +0#0000000&|'+0#e000002&|b|a|r|'|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41
+|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|f+0#00e0e07&|o@1|:+0#0000000&| @1|{+0#e000e06&| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@41
@75
-@57|1|3|7|,|1| @8|5|8|%|
+|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|-+0#af5f00255&|f+0#00e0e07&|o@1|-+0#af5f00255&|:+0#0000000&| |#+0#e000e06&|{| +0#0000000&@2|b+0#00e0e07&|a|r|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@39
+@57|1|3|9|,|0|-|1| @6|4@1|%|
diff --git a/runtime/syntax/testdir/dumps/vim_expr_09.dump b/runtime/syntax/testdir/dumps/vim_expr_09.dump
index d38fcfd..5e71b29 100644
--- a/runtime/syntax/testdir/dumps/vim_expr_09.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_09.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@74
-|e+0#af5f00255&|c|h|o| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&@63
-|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&@55
-|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@59
-|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|:|f|o@1| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|g+0#00e0e07&|:|f|o@1| +0#0000000&@55
->e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&@57
-|e+0#af5f00255&|c|h|o| +0#0000000&|T|r|u|e|(+0#e000e06&|)| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|T|r|u|e|(+0#e000e06&|)| +0#0000000&@53
-|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|a| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|@+0#e000e06&|a| +0#0000000&@61
-|e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&@59
+|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|-+0#af5f00255&|f+0#00e0e07&|o@1|-+0#af5f00255&|:+0#0000000&| |#+0#e000e06&|{| +0#0000000&@2|b+0#00e0e07&|a|r|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@39
+|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|-+0#af5f00255&|f+0#00e0e07&|o@1|-+0#af5f00255&|:+0#0000000&| |#+0#e000e06&|{| +0#0000000&|-+0#af5f00255&|b+0#00e0e07&|a|r|-+0#af5f00255&|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@39
+|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|-+0#af5f00255&|f+0#00e0e07&|o@1|-+0#af5f00255&|:+0#0000000&| |#+0#e000e06&|{| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@39
+|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|-+0#af5f00255&|f+0#00e0e07&|o@1|-+0#af5f00255&|:+0#0000000&| @1|{+0#e000e06&| +0#0000000&|"+0#e000002&|b|a|r|"|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@39
+|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|-+0#af5f00255&|f+0#00e0e07&|o@1|-+0#af5f00255&|:+0#0000000&| @1|{+0#e000e06&| +0#0000000&|'+0#e000002&|b|a|r|'|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@39
+>e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|-+0#af5f00255&|f+0#00e0e07&|o@1|-+0#af5f00255&|:+0#0000000&| @1|{+0#e000e06&| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@39
@75
-|"+0#0000e05&| |C|o|m|p|a|r|i|s|o|n| |-| |u|s|i|n|g| |'|i|g|n|o|r|c|a|s|e|'| +0#0000000&@42
-|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|=+0#af5f00255&@1| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53
-|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|!+0#af5f00255&|=| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53
-|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|>+0#af5f00255&| +0#0000000&@5|e+0#00e0e07&|x|p|r| +0#0000000&@53
-|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|>+0#af5f00255&|=| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53
-|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|<+0#af5f00255&| +0#0000000&@5|e+0#00e0e07&|x|p|r| +0#0000000&@53
-|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|<+0#af5f00255&|=| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53
-|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|=+0#af5f00255&|~| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53
-|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|!+0#af5f00255&|~| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53
-@57|1|5@1|,|1| @8|6@1|%|
+|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|4+0#e000002&|2|:+0#0000000&| |#+0#e000e06&|{| +0#0000000&@2|b+0#00e0e07&|a|r|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@42
+|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|4+0#e000002&|2|:+0#0000000&| |#+0#e000e06&|{| +0#0000000&|-+0#af5f00255&|b+0#00e0e07&|a|r|-+0#af5f00255&|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@42
+|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|4+0#e000002&|2|:+0#0000000&| |#+0#e000e06&|{| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@42
+|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|4+0#e000002&|2|:+0#0000000&| @1|{+0#e000e06&| +0#0000000&|"+0#e000002&|b|a|r|"|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@42
+|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|4+0#e000002&|2|:+0#0000000&| @1|{+0#e000e06&| +0#0000000&|'+0#e000002&|b|a|r|'|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@42
+|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|4+0#e000002&|2|:+0#0000000&| @1|{+0#e000e06&| +0#0000000&@3|4+0#e000002&|2|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&|}+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@42
+@75
+|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&@67
+@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&@1|f+0#00e0e07&|o@1|:+0#0000000&| |#+0#e000e06&|{| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&@3|b+0#00e0e07&|a|r|:+0#0000000&| |2+0#e000002&|1| +0#0000000&|*+0#af5f00255&| +0#0000000&|2+0#e000002&| +0#0000000&@52
+@6|\+0#e000e06&| +0#0000000&@1|}+0#e000e06&| +0#0000000&@64
+@57|1|5|7|,|1| @8|5|0|%|
diff --git a/runtime/syntax/testdir/dumps/vim_expr_10.dump b/runtime/syntax/testdir/dumps/vim_expr_10.dump
index f297af5..74c5c03 100644
--- a/runtime/syntax/testdir/dumps/vim_expr_10.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_10.dump
@@ -1,20 +1,20 @@
-|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|!+0#af5f00255&|~| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53
-|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|i+0#af5f00255&|s| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53
-|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|i+0#af5f00255&|s|n|o|t| +0#0000000&@1|e+0#00e0e07&|x|p|r| +0#0000000&@53
+| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&@1|}+0#e000e06&| +0#0000000&@64
+@6|\+0#e000e06&|}| +0#0000000&@66
@75
-|"+0#0000e05&| |C|o|m|p|a|r|i|s|o|n| |-| |m|a|t|c|h| |c|a|s|e| +0#0000000&@49
->e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|=+0#af5f00255&@1|#| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53
-|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|!+0#af5f00255&|=|#| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53
-|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|>+0#af5f00255&|#| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53
-|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|>+0#af5f00255&|=|#| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53
-|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|<+0#af5f00255&|#| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53
-|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|<+0#af5f00255&|=|#| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53
-|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|=+0#af5f00255&|~|#| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53
-|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|!+0#af5f00255&|~|#| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53
-|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|i+0#af5f00255&|s|#| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53
-|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|i+0#af5f00255&|s|n|o|t|#| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
+|"+0#0000e05&| |m|a|t|c|h| |a|s| |k|e|y|s| |n|o|t| |s|c|o|p|e| |d|i|c|t|i|o|n|a|r|i|e|s| +0#0000000&@36
+|e+0#af5f00255&|c|h|o| +0#0000000&|#+0#e000e06&|{| +0#0000000&|b+0#00e0e07&|:| +0#0000000&|4+0#e000002&|2|,+0#0000000&| |w+0#00e0e07&|:| +0#0000000&|4+0#e000002&|2|,+0#0000000&| |t+0#00e0e07&|:| +0#0000000&|4+0#e000002&|2|,+0#0000000&| |g+0#00e0e07&|:| +0#0000000&|4+0#e000002&|2|,+0#0000000&| |l+0#00e0e07&|:| +0#0000000&|4+0#e000002&|2|,+0#0000000&| |s+0#00e0e07&|:| +0#0000000&|4+0#e000002&|2|,+0#0000000&| |a+0#00e0e07&|:| +0#0000000&|4+0#e000002&|2|,+0#0000000&| |v+0#00e0e07&|:| +0#0000000&|4+0#e000002&|2| +0#0000000&@1|}+0#e000e06&| +0#0000000&@9
+> @74
+|"+0#0000e05&| |R|e|g|i|s|t|e|r| +0#0000000&@64
@75
-|"+0#0000e05&| |C|o|m|p|a|r|i|s|o|n| |-| |i|g|n|o|r|e| |c|a|s|e| +0#0000000&@48
-|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|=+0#af5f00255&@1|?| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53
-|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|!+0#af5f00255&|=|?| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53
-@57|1|7|3|,|1| @8|7|4|%|
+|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|"| +0#0000000&@67
+|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|0| +0#0000000&|@+0#e000e06&|1| +0#0000000&|@+0#e000e06&|2| +0#0000000&|@+0#e000e06&|3| +0#0000000&|@+0#e000e06&|4| +0#0000000&|@+0#e000e06&|5| +0#0000000&|@+0#e000e06&|6| +0#0000000&|@+0#e000e06&|7| +0#0000000&|@+0#e000e06&|8| +0#0000000&|@+0#e000e06&|9| +0#0000000&@40
+|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|-| +0#0000000&@67
+|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|a| +0#0000000&|@+0#e000e06&|b| +0#0000000&|@+0#e000e06&|c| +0#0000000&|@+0#e000e06&|d| +0#0000000&|@+0#e000e06&|e| +0#0000000&|@+0#e000e06&|f| +0#0000000&|@+0#e000e06&|g| +0#0000000&|@+0#e000e06&|h| +0#0000000&|@+0#e000e06&|i| +0#0000000&|@+0#e000e06&|j| +0#0000000&|@+0#e000e06&|k| +0#0000000&|@+0#e000e06&|l| +0#0000000&|@+0#e000e06&|m| +0#0000000&|@+0#e000e06&|n| +0#0000000&|@+0#e000e06&|o| +0#0000000&|@+0#e000e06&|p| +0#0000000&|@+0#e000e06&|q| +0#0000000&|@+0#e000e06&|r| +0#0000000&|@+0#e000e06&|s| +0#0000000&|@+0#e000e06&|t| +0#0000000&|@+0#e000e06&|u| +0#0000000&|@+0#e000e06&|v| +0#0000000&|@+0#e000e06&|w| +0#0000000&|@+0#e000e06&
+|x| +0#0000000&|@+0#e000e06&|y| +0#0000000&|@+0#e000e06&|z| +0#0000000&@67
+|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|A| +0#0000000&|@+0#e000e06&|B| +0#0000000&|@+0#e000e06&|C| +0#0000000&|@+0#e000e06&|D| +0#0000000&|@+0#e000e06&|E| +0#0000000&|@+0#e000e06&|F| +0#0000000&|@+0#e000e06&|G| +0#0000000&|@+0#e000e06&|H| +0#0000000&|@+0#e000e06&|I| +0#0000000&|@+0#e000e06&|J| +0#0000000&|@+0#e000e06&|K| +0#0000000&|@+0#e000e06&|L| +0#0000000&|@+0#e000e06&|M| +0#0000000&|@+0#e000e06&|N| +0#0000000&|@+0#e000e06&|O| +0#0000000&|@+0#e000e06&|P| +0#0000000&|@+0#e000e06&|Q| +0#0000000&|@+0#e000e06&|R| +0#0000000&|@+0#e000e06&|S| +0#0000000&|@+0#e000e06&|T| +0#0000000&|@+0#e000e06&|U| +0#0000000&|@+0#e000e06&|V| +0#0000000&|@+0#e000e06&|W| +0#0000000&|@+0#e000e06&
+|X| +0#0000000&|@+0#e000e06&|Y| +0#0000000&|@+0#e000e06&|Z| +0#0000000&@67
+|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|:| +0#0000000&|@+0#e000e06&|.| +0#0000000&|@+0#e000e06&|%| +0#0000000&|@+0#e000e06&|#| +0#0000000&|@+0#e000e06&|=| +0#0000000&|@+0#e000e06&|*| +0#0000000&|@+0#e000e06&|+| +0#0000000&|@+0#e000e06&|~| +0#0000000&|@+0#e000e06&|_| +0#0000000&|@+0#e000e06&|/| +0#0000000&@40
+@75
+|"+0#0000e05&| |O|p|e|r|a|t|o|r|s| +0#0000000&@63
+@75
+@57|1|7|5|,|0|-|1| @6|5|6|%|
diff --git a/runtime/syntax/testdir/dumps/vim_expr_11.dump b/runtime/syntax/testdir/dumps/vim_expr_11.dump
index e9744da..c7e0dad 100644
--- a/runtime/syntax/testdir/dumps/vim_expr_11.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_11.dump
@@ -1,20 +1,20 @@
-|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|!+0#af5f00255&|=|?| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53
-|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|>+0#af5f00255&|?| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53
-|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|>+0#af5f00255&|=|?| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53
-|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|<+0#af5f00255&|?| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53
-|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|<+0#af5f00255&|=|?| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53
->e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|=+0#af5f00255&|~|?| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53
-|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|!+0#af5f00255&|~|?| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53
-|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|i+0#af5f00255&|s|?| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53
-|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|i+0#af5f00255&|s|n|o|t|?| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
+| +0&#ffffff0@74
+|"+0#0000e05&| |T|e|r|n|a|r|y| +0#0000000&@65
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|?+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|:+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51
@75
-|"+0#0000e05&| |U|n|r|e|p|o|r|t|e|d| |i|s@1|u|e| |(|"|i|s|"| |i|n|c|o|r@1|e|c|t|l|y| |m|a|t|c|h|e|s| |a|s| |"+0#e000002&|e|c|h|o| |v|i|m|N|u|m|b|e|r| |*|v|i|m|C|o|m@1|a|n|d
-|*| |v|i|m|N|u|m|b|e|r|"|)+0#0000e05&| +0#0000000&@61
-|e+0#af5f00255&|c|h|o| +0#0000000&|4+0#e000002&|2| +0#0000000&|i+0#af5f00255&|s| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+|e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|t|o|p|"| +0#0000000&|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&@45
+>e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|t|o|p|"| +0#0000000&|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&|0@2| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|l|a|s|t|"| +0#0000000&|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&@21
@75
-|"+0#0000e05&| |L|i|n|e| |c|o|n|t|i|n|u|a|t|i|o|n| +0#0000000&@55
-|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|++0#af5f00255&| +0#0000000&@59
-@6|\+0#e000e06&| +0#0000000&@67
-@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
-@6|\+0#e000e06&| +0#0000000&@67
-@57|1|9|1|,|1| @8|8|1|%|
+|e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&@60
+@6|\+0#e000e06&| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|t|o|p|"| +0#0000000&@59
+@6|\+0#e000e06&| +0#0000000&|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&|0@2| +0#0000000&@52
+@6|\+0#e000e06&| +0#0000000&@8|?+0#af5f00255&| +0#0000000&|"+0#e000002&|l|a|s|t|"| +0#0000000&@50
+@6|\+0#e000e06&| +0#0000000&@8|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&@52
+|e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&|"+0#e000002&|t|o|p|"| +0#0000000&|:+0#af5f00255&| +0#0000000&@59
+@6|\+0#e000e06&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&|0@2| +0#0000000&|?+0#af5f00255&| +0#0000000&@52
+@6|\+0#e000e06&| +0#0000000&@8|"+0#e000002&|l|a|s|t|"| +0#0000000&|:+0#af5f00255&| +0#0000000&@50
+@6|\+0#e000e06&| +0#0000000&@8|l+0#00e0e07&|n|u|m| +0#0000000&@54
+@75
+|e+0#af5f00255&|c|h|o| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&|1+0#e000002&| +0#0000000&|:+0#af5f00255&| +0#0000000&|0+0#e000002&| +0#0000000&@60
+@57|1|9|1|,|1| @8|6|2|%|
diff --git a/runtime/syntax/testdir/dumps/vim_expr_12.dump b/runtime/syntax/testdir/dumps/vim_expr_12.dump
index b6ce126..4e946f4 100644
--- a/runtime/syntax/testdir/dumps/vim_expr_12.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_12.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&@67
-@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
-@6|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&|++0#af5f00255&| +0#0000000&@61
-@6|\+0#e000e06&| +0#0000000&|"+0#e000002&|b|a|z|"| +0#0000000&@61
+|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&|1+0#e000002&| +0#0000000&|:+0#af5f00255&| +0#0000000&|0+0#e000002&| +0#0000000&@60
+|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&|:+0#af5f00255&| +0#0000000&|"+0#e000002&|b|a|r|"| +0#0000000&@48
+|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|?+0#af5f00255&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|:+0#af5f00255&| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@54
+|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|:|f|o@1| +0#0000000&|?+0#af5f00255&| +0#0000000&|g+0#00e0e07&|:|f|o@1| +0#0000000&|:+0#af5f00255&| +0#0000000&|g+0#00e0e07&|:|b|a|r| +0#0000000&@48
+|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&|?+0#af5f00255&| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&|:+0#af5f00255&| +0#0000000&|$+0#e000e06&|B|A|R| +0#0000000&@51
+>e+0#af5f00255&|c|h|o| +0#0000000&|T|r|u|e|(+0#e000e06&|)| +0#0000000&|?+0#af5f00255&| +0#0000000&|T|r|u|e|(+0#e000e06&|)| +0#0000000&|:+0#af5f00255&| +0#0000000&|F|a|l|s|e|(+0#e000e06&|)| +0#0000000&@44
+|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|a| +0#0000000&|?+0#af5f00255&| +0#0000000&|@+0#e000e06&|a| +0#0000000&|:+0#af5f00255&| +0#0000000&|@+0#e000e06&|b| +0#0000000&@57
+|e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&|?+0#af5f00255&| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&|:+0#af5f00255&| +0#0000000&|(+0#e000e06&|0+0#e000002&|)+0#e000e06&| +0#0000000&@54
@75
->l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|++0#af5f00255&| +0#0000000&@59
-@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
-@6|\+0#e000e06&| +0#0000000&@67
-@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
-@6|\+0#e000e06&| +0#0000000&@67
-@6|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&|++0#af5f00255&| +0#0000000&@61
-@6|\+0#e000e06&| +0#0000000&|"+0#e000002&|b|a|z|"| +0#0000000&@61
+|"+0#0000e05&| |F|a|l|s|y| +0#0000000&@67
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
@75
-|"+0#0000e05&| |F|u|n|c|t|i|o|n| |c|a|l@1|s| +0#0000000&@58
+|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|h|e|L|i|s|t| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|'+0#e000002&|l|i|s|t| |i|s| |e|m|p|t|y|'| +0#0000000&@43
+|e+0#af5f00255&|c|h|o| +0#0000000&|G|e|t|N|a|m|e|(+0#e000e06&|)| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|'+0#e000002&|u|n|k|n|o|w|n|'| +0#0000000&@47
@75
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|v+0#00e0e07&|:|t|r|u|e|,+0#0000000&| |v+0#00e0e07&|:|f|a|l|s|e|,+0#0000000&| |v+0#00e0e07&|:|n|u|l@1|)+0#e000e06&| +0#0000000&@41
-@75
-@75
-|"+0#0000e05&| |I|s@1|u|e| |#|1|6|2@1|1| |(|v|i|m|S|t|r|i|n|g| |b|e|c|o|m|e|s| |v|i|m|V|a|r| |w|h|e|n| |p|r|e|c|e|d|e|d| |b|y| |!|)| +0#0000000&@14
-@57|2|0|8|,|1| @8|8|9|%|
+|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|h|e|L|i|s|t| +0#0000000&@62
+@6|\+0#e000e06&| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|'+0#e000002&|l|i|s|t| |i|s| |e|m|p|t|y|'| +0#0000000&@48
+|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|h|e|L|i|s|t| +0#0000000&|?+0#af5f00255&@1| +0#0000000&@59
+@6|\+0#e000e06&| +0#0000000&|'+0#e000002&|l|i|s|t| |i|s| |e|m|p|t|y|'| +0#0000000&@51
+@57|2|0|9|,|1| @8|6|8|%|
diff --git a/runtime/syntax/testdir/dumps/vim_expr_13.dump b/runtime/syntax/testdir/dumps/vim_expr_13.dump
index 56ae4a1..27423a1 100644
--- a/runtime/syntax/testdir/dumps/vim_expr_13.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_13.dump
@@ -1,20 +1,20 @@
-|"+0#0000e05#ffffff0| |I|s@1|u|e| |#|1|6|2@1|1| |(|v|i|m|S|t|r|i|n|g| |b|e|c|o|m|e|s| |v|i|m|V|a|r| |w|h|e|n| |p|r|e|c|e|d|e|d| |b|y| |!|)| +0#0000000&@14
-|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|!+0#af5f00255&|'+0#e000002&|g|:|b|a|r|'|-+0#af5f00255&|>|e+0#00e0e07&|x|i|s|t|s|(+0#e000e06&|)| +0#0000000&@46
+| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|'+0#e000002&|l|i|s|t| |i|s| |e|m|p|t|y|'| +0#0000000&@51
@75
+|e+0#af5f00255&|c|h|o| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&@63
+|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&@55
+|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@59
+>e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|:|f|o@1| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|g+0#00e0e07&|:|f|o@1| +0#0000000&@55
+|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&@57
+|e+0#af5f00255&|c|h|o| +0#0000000&|T|r|u|e|(+0#e000e06&|)| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|T|r|u|e|(+0#e000e06&|)| +0#0000000&@53
+|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|a| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|@+0#e000e06&|a| +0#0000000&@61
+|e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&@59
@75
-|"+0#0000e05&| |I|s@1|u|e| |#|1|4@1|2|3| |(|v|i|m|.|v|i|m|:| |O|p|t| |o|u|t| |o|f| |v|i|m|S|e|a|r|c|h|*|)| +0#0000000&@27
-> @74
-|?+0#e000e06&|t+0#e000002&|r|u|t|h|y| +0#0000000&@67
-|l+0#af5f00255&|e|t| +0#0000000&|t+0#00e0e07&|r|u|t|h|y| +0#0000000&|=+0#af5f00255&| +0#0000000&|0+0#e000002&| +0#0000000&@60
-|\+0#e000e06&| +0#0000000&@2|?+0#af5f00255&| +0#0000000&|(+0#e000e06&|0+0#e000002&| +0#0000000&@66
-|\+0#e000e06&| +0#0000000&@2|)+0#e000e06&| +0#0000000&@69
-|\+0#e000e06&| +0#0000000&@2|:+0#af5f00255&| +0#0000000&|(+0#e000e06&|1+0#e000002&| +0#0000000&@66
-|\+0#e000e06&| +0#0000000&@2|)+0#e000e06&| +0#0000000&@69
-|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|r|u|t|h|y| +0#0000000&@63
-@75
-|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@60
-| +0#e000002&@1|?+0#e000e06&|t+0#e000002&|r|u|t|h|y| +0#0000000&@65
-@2|l+0#af5f00255&|e|t| +0#0000000&|t+0#00e0e07&|r|u|t|h|y| +0#0000000&|=+0#af5f00255&| +0#0000000&|0+0#e000002&| +0#0000000&@58
-@2|\+0#e000e06&| +0#0000000&@2|?+0#af5f00255&| +0#0000000&|(+0#e000e06&|0+0#e000002&| +0#0000000&@64
-@2|\+0#e000e06&| +0#0000000&@2|)+0#e000e06&| +0#0000000&@67
-@57|2@1|6|,|0|-|1| @6|9|7|%|
+|"+0#0000e05&| |C|o|m|p|a|r|i|s|o|n| |-| |u|s|i|n|g| |'|i|g|n|o|r|c|a|s|e|'| +0#0000000&@42
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|=+0#af5f00255&@1| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|!+0#af5f00255&|=| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|>+0#af5f00255&| +0#0000000&@5|e+0#00e0e07&|x|p|r| +0#0000000&@53
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|>+0#af5f00255&|=| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|<+0#af5f00255&| +0#0000000&@5|e+0#00e0e07&|x|p|r| +0#0000000&@53
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|<+0#af5f00255&|=| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|=+0#af5f00255&|~| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53
+@57|2@1|7|,|1| @8|7|4|%|
diff --git a/runtime/syntax/testdir/dumps/vim_expr_14.dump b/runtime/syntax/testdir/dumps/vim_expr_14.dump
index 2063d80..0b82948 100644
--- a/runtime/syntax/testdir/dumps/vim_expr_14.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_14.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@1|\+0#e000e06&| +0#0000000&@2|)+0#e000e06&| +0#0000000&@67
-@2|\+0#e000e06&| +0#0000000&@2|:+0#af5f00255&| +0#0000000&|(+0#e000e06&|1+0#e000002&| +0#0000000&@64
-@2|\+0#e000e06&| +0#0000000&@2|)+0#e000e06&| +0#0000000&@67
-@2|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|r|u|t|h|y| +0#0000000&@61
-|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
-> @74
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|2|4@1|,|0|-|1| @6|B|o|t|
+|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|=+0#af5f00255&|~| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|!+0#af5f00255&|~| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|i+0#af5f00255&|s| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|i+0#af5f00255&|s|n|o|t| +0#0000000&@1|e+0#00e0e07&|x|p|r| +0#0000000&@53
+@75
+>"+0#0000e05&| |C|o|m|p|a|r|i|s|o|n| |-| |m|a|t|c|h| |c|a|s|e| +0#0000000&@49
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|=+0#af5f00255&@1|#| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|!+0#af5f00255&|=|#| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|>+0#af5f00255&|#| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|>+0#af5f00255&|=|#| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|<+0#af5f00255&|#| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|<+0#af5f00255&|=|#| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|=+0#af5f00255&|~|#| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|!+0#af5f00255&|~|#| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|i+0#af5f00255&|s|#| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|i+0#af5f00255&|s|n|o|t|#| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
+@75
+|"+0#0000e05&| |C|o|m|p|a|r|i|s|o|n| |-| |i|g|n|o|r|e| |c|a|s|e| +0#0000000&@48
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|=+0#af5f00255&@1|?| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53
+@57|2|4|5|,|1| @8|8|0|%|
diff --git a/runtime/syntax/testdir/dumps/vim_expr_15.dump b/runtime/syntax/testdir/dumps/vim_expr_15.dump
new file mode 100644
index 0000000..2534395
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_expr_15.dump
@@ -0,0 +1,20 @@
+|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|=+0#af5f00255&@1|?| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|!+0#af5f00255&|=|?| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|>+0#af5f00255&|?| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|>+0#af5f00255&|=|?| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|<+0#af5f00255&|?| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53
+>e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|<+0#af5f00255&|=|?| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|=+0#af5f00255&|~|?| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|!+0#af5f00255&|~|?| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|i+0#af5f00255&|s|?| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|i+0#af5f00255&|s|n|o|t|?| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
+@75
+|"+0#0000e05&| |U|n|r|e|p|o|r|t|e|d| |i|s@1|u|e| |(|"|i|s|"| |i|n|c|o|r@1|e|c|t|l|y| |m|a|t|c|h|e|s| |a|s| |"+0#e000002&|e|c|h|o| |v|i|m|N|u|m|b|e|r| |*|v|i|m|C|o|m@1|a|n|d
+|*| |v|i|m|N|u|m|b|e|r|"|)+0#0000e05&| +0#0000000&@61
+|e+0#af5f00255&|c|h|o| +0#0000000&|4+0#e000002&|2| +0#0000000&|i+0#af5f00255&|s| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+@75
+|"+0#0000e05&| |L|i|n|e| |c|o|n|t|i|n|u|a|t|i|o|n| +0#0000000&@55
+|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|++0#af5f00255&| +0#0000000&@59
+@6|\+0#e000e06&| +0#0000000&@67
+@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
+@57|2|6|3|,|1| @8|8|5|%|
diff --git a/runtime/syntax/testdir/dumps/vim_expr_16.dump b/runtime/syntax/testdir/dumps/vim_expr_16.dump
new file mode 100644
index 0000000..eac357e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_expr_16.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@5|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&@67
+@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&|++0#af5f00255&| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|"+0#e000002&|b|a|z|"| +0#0000000&@61
+> @74
+|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|++0#af5f00255&| +0#0000000&@59
+@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&@67
+@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&@67
+@6|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&|++0#af5f00255&| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|"+0#e000002&|b|a|z|"| +0#0000000&@61
+@75
+|"+0#0000e05&| |F|u|n|c|t|i|o|n| |c|a|l@1|s| +0#0000000&@58
+@75
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|v+0#00e0e07&|:|t|r|u|e|,+0#0000000&| |v+0#00e0e07&|:|f|a|l|s|e|,+0#0000000&| |v+0#00e0e07&|:|n|u|l@1|)+0#e000e06&| +0#0000000&@41
+@75
+@75
+@57|2|8|0|,|0|-|1| @6|9|1|%|
diff --git a/runtime/syntax/testdir/dumps/vim_expr_17.dump b/runtime/syntax/testdir/dumps/vim_expr_17.dump
new file mode 100644
index 0000000..860ac05
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_expr_17.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+|"+0#0000e05&| |I|s@1|u|e| |#|1|6|2@1|1| |(|v|i|m|S|t|r|i|n|g| |b|e|c|o|m|e|s| |v|i|m|V|a|r| |w|h|e|n| |p|r|e|c|e|d|e|d| |b|y| |!|)| +0#0000000&@14
+|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|!+0#af5f00255&|'+0#e000002&|g|:|b|a|r|'|-+0#af5f00255&|>|e+0#00e0e07&|x|i|s|t|s|(+0#e000e06&|)| +0#0000000&@46
+@75
+@75
+>"+0#0000e05&| |I|s@1|u|e| |#|1|4@1|2|3| |(|v|i|m|.|v|i|m|:| |O|p|t| |o|u|t| |o|f| |v|i|m|S|e|a|r|c|h|*|)| +0#0000000&@27
+@75
+|?+0#e000e06&|t+0#e000002&|r|u|t|h|y| +0#0000000&@67
+|l+0#af5f00255&|e|t| +0#0000000&|t+0#00e0e07&|r|u|t|h|y| +0#0000000&|=+0#af5f00255&| +0#0000000&|0+0#e000002&| +0#0000000&@60
+|\+0#e000e06&| +0#0000000&@2|?+0#af5f00255&| +0#0000000&|(+0#e000e06&|0+0#e000002&| +0#0000000&@66
+|\+0#e000e06&| +0#0000000&@2|)+0#e000e06&| +0#0000000&@69
+|\+0#e000e06&| +0#0000000&@2|:+0#af5f00255&| +0#0000000&|(+0#e000e06&|1+0#e000002&| +0#0000000&@66
+|\+0#e000e06&| +0#0000000&@2|)+0#e000e06&| +0#0000000&@69
+|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|r|u|t|h|y| +0#0000000&@63
+@75
+|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@60
+| +0#e000002&@1|?+0#e000e06&|t+0#e000002&|r|u|t|h|y| +0#0000000&@65
+@2|l+0#af5f00255&|e|t| +0#0000000&|t+0#00e0e07&|r|u|t|h|y| +0#0000000&|=+0#af5f00255&| +0#0000000&|0+0#e000002&| +0#0000000&@58
+@2|\+0#e000e06&| +0#0000000&@2|?+0#af5f00255&| +0#0000000&|(+0#e000e06&|0+0#e000002&| +0#0000000&@64
+@57|2|9|8|,|1| @8|9|7|%|
diff --git a/runtime/syntax/testdir/dumps/vim_expr_18.dump b/runtime/syntax/testdir/dumps/vim_expr_18.dump
new file mode 100644
index 0000000..b5d468b
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_expr_18.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@1|\+0#e000e06&| +0#0000000&@2|?+0#af5f00255&| +0#0000000&|(+0#e000e06&|0+0#e000002&| +0#0000000&@64
+@2|\+0#e000e06&| +0#0000000&@2|)+0#e000e06&| +0#0000000&@67
+@2|\+0#e000e06&| +0#0000000&@2|:+0#af5f00255&| +0#0000000&|(+0#e000e06&|1+0#e000002&| +0#0000000&@64
+@2|\+0#e000e06&| +0#0000000&@2|)+0#e000e06&| +0#0000000&@67
+@2|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|r|u|t|h|y| +0#0000000&@61
+>e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
+@75
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|3|1|6|,|1| @8|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_02.dump b/runtime/syntax/testdir/dumps/vim_function_variables_02.dump
index 77fe629..c868567 100644
--- a/runtime/syntax/testdir/dumps/vim_function_variables_02.dump
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_02.dump
@@ -1,8 +1,8 @@
| +0&#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|:|f|o@1|[+0#0000000&|1+0#e000002&|:+0#0000000&|]| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52
@2|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|:|f|o@1|[+0#0000000&|:|]| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
@75
-@2|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|f|o@1|[+0#0000000&|"+0#e000002&|k|e|y|"|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@50
-@2|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|f|o@1|[+0#0000000&|'+0#e000002&|k|e|y|'|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@50
+@2|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|:|f|o@1|[+0#0000000&|"+0#e000002&|k|e|y|"|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@49
+@2|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|:|f|o@1|[+0#0000000&|'+0#e000002&|k|e|y|'|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@49
> @74
@2|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
@2|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|:|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
@@ -17,4 +17,4 @@
@2|l+0#af5f00255&|e|t| +0#0000000&|g+0#00e0e07&|:|f|o@1|[+0#0000000&|0+0#e000002&|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
@75
@2|l+0#af5f00255&|e|t| +0#0000000&|g+0#00e0e07&|:|f|o@1|[+0#0000000&|1+0#e000002&|:+0#0000000&|2+0#e000002&|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51
-@57|3|7|,|0|-|1| @8|8|%|
+@57|3|7|,|0|-|1| @8|7|%|
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_03.dump b/runtime/syntax/testdir/dumps/vim_function_variables_03.dump
index 64b3c01..d8e00be 100644
--- a/runtime/syntax/testdir/dumps/vim_function_variables_03.dump
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_03.dump
@@ -17,4 +17,4 @@
@2|l+0#af5f00255&|e|t| +0#0000000&|s+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
@75
@2|l+0#af5f00255&|e|t| +0#0000000&|s+0#00e0e07&|:|f|o@1|[+0#0000000&|0+0#e000002&|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
-@57|5@1|,|3| @9|1|3|%|
+@57|5@1|,|3| @9|1|2|%|
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_04.dump b/runtime/syntax/testdir/dumps/vim_function_variables_04.dump
index 3627334..b494c6e 100644
--- a/runtime/syntax/testdir/dumps/vim_function_variables_04.dump
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_04.dump
@@ -17,4 +17,4 @@
@2|l+0#af5f00255&|e|t| +0#0000000&|s+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
@75
@2|l+0#af5f00255&|e|t| +0#0000000&|t+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
-@57|7|3|,|3| @9|1|8|%|
+@57|7|3|,|3| @9|1|7|%|
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_05.dump b/runtime/syntax/testdir/dumps/vim_function_variables_05.dump
index 9e3716d..c1d9dd0 100644
--- a/runtime/syntax/testdir/dumps/vim_function_variables_05.dump
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_05.dump
@@ -17,4 +17,4 @@
@2|l+0#af5f00255&|e|t| +0#0000000&|t+0#00e0e07&|:|f|o@1| +0#0000000&|%+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
@2|l+0#af5f00255&|e|t| +0#0000000&|t+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
@2|l+0#af5f00255&|e|t| +0#0000000&|t+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
-@57|9|1|,|3| @9|2|3|%|
+@57|9|1|,|3| @9|2|1|%|
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_06.dump b/runtime/syntax/testdir/dumps/vim_function_variables_06.dump
index 2606d3a..0d54bab 100644
--- a/runtime/syntax/testdir/dumps/vim_function_variables_06.dump
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_06.dump
@@ -1,20 +1,20 @@
| +0&#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|t+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
@75
-@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
+@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
@75
-@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1|[+0#0000000&|0+0#e000002&|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
+@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e|[+0#e000e06&|0+0#e000002&|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52
> @74
-@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1|[+0#0000000&|1+0#e000002&|:+0#0000000&|2+0#e000002&|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51
-@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1|[+0#0000000&|:|2+0#e000002&|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52
-@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1|[+0#0000000&|1+0#e000002&|:+0#0000000&|]| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52
-@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1|[+0#0000000&|:|]| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
+@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e|[+0#e000e06&|1+0#e000002&|:+0#0000000&|2+0#e000002&|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@50
+@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e|[+0#e000e06&|:+0#0000000&|2+0#e000002&|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51
+@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e|[+0#e000e06&|1+0#e000002&|:+0#0000000&|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51
+@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e|[+0#e000e06&|:+0#0000000&|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52
@75
-@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1|[+0#0000000&|"+0#e000002&|k|e|y|"|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@49
-@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1|[+0#0000000&|'+0#e000002&|k|e|y|'|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@49
+@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e|[+0#e000e06&|"+0#e000002&|k|e|y|"|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@48
+@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e|[+0#e000e06&|'+0#e000002&|k|e|y|'|]+0#e000e06&| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@48
@75
-@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
-@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
-@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
-@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
-@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1| +0#0000000&|%+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
-@57|1|0|9|,|0|-|1| @6|2|8|%|
+@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
+@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
+@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
+@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
+@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|%+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
+@57|1|0|9|,|0|-|1| @6|2|6|%|
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_07.dump b/runtime/syntax/testdir/dumps/vim_function_variables_07.dump
index aa9dd94..c7a38f8 100644
--- a/runtime/syntax/testdir/dumps/vim_function_variables_07.dump
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_07.dump
@@ -1,6 +1,6 @@
-| +0&#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1| +0#0000000&|%+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
-@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
-@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
+| +0&#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|%+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
+@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
+@2|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
@75
@2|l+0#af5f00255&|e|t| +0#0000000&|w+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
> @74
@@ -17,4 +17,4 @@
@2|l+0#af5f00255&|e|t| +0#0000000&|w+0#00e0e07&|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
@2|l+0#af5f00255&|e|t| +0#0000000&|w+0#00e0e07&|:|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
@2|l+0#af5f00255&|e|t| +0#0000000&|w+0#00e0e07&|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
-@57|1|2|7|,|0|-|1| @6|3@1|%|
+@57|1|2|7|,|0|-|1| @6|3|0|%|
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_08.dump b/runtime/syntax/testdir/dumps/vim_function_variables_08.dump
index 59386ff..8b1c148 100644
--- a/runtime/syntax/testdir/dumps/vim_function_variables_08.dump
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_08.dump
@@ -12,9 +12,9 @@
@2|l+0#af5f00255&|e|t| +0#0000000&|@+0#e000e06&|f| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58
@2|l+0#af5f00255&|e|t| +0#0000000&|@+0#e000e06&|f| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
@75
-@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
+@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|a|r|i| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
@75
@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|t|_|k|1| +0#0000000&|=+0#af5f00255&| +0#0000000&|"+0#e000002&|\+0#e000e06&|<|E|s|c|>|[+0#e000002&|2|3|4|;|"| +0#0000000&@47
@75
-@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|f|o@1| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
-@57|1|4|5|,|0|-|1| @6|3|8|%|
+@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|a|r|i| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
+@57|1|4|5|,|0|-|1| @6|3|5|%|
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_09.dump b/runtime/syntax/testdir/dumps/vim_function_variables_09.dump
index 63d7f7b..e05918f 100644
--- a/runtime/syntax/testdir/dumps/vim_function_variables_09.dump
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_09.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|f|o@1| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
-@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
-@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
-@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
+| +0&#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|a|r|i| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
+@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|a|r|i| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
+@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|a|r|i| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
+@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|a|r|i| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
@75
-@2>l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
+@2>l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|a|l|e|p|h| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
@75
-@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
-@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
-@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
-@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
+@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|a|l|e|p|h| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52
+@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|a|l|e|p|h| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51
+@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|a|l|e|p|h| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52
+@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|a|l|e|p|h| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52
@75
-@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
+@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|a|l|e|p|h| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
@75
-@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|f|o@1| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
-@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
-@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
-@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
+@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|a|l|e|p|h| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52
+@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|a|l|e|p|h| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51
+@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|a|l|e|p|h| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52
+@2|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|a|l|e|p|h| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52
@75
-@57|1|6|3|,|3| @8|4|3|%|
+@57|1|6|3|,|3| @8|3|9|%|
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_10.dump b/runtime/syntax/testdir/dumps/vim_function_variables_10.dump
index 0022446..9eb9acc 100644
--- a/runtime/syntax/testdir/dumps/vim_function_variables_10.dump
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_10.dump
@@ -2,12 +2,12 @@
@2|l+0#af5f00255&|e|t| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51
@2|l+0#af5f00255&|e|t| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| @63
@8|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
-@2|l+0#af5f00255&|e|t| +0#0000000&|[|v+0#00e0e07&|:|f|o@1|,+0#0000000&| |v+0#00e0e07&|:|b|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@47
-@2>l+0#af5f00255&|e|t| +0#0000000&|[|v+0#00e0e07&|:|f|o@1|,+0#0000000&| @61
-@8|\+0#e000e06&| +0#0000000&|v+0#00e0e07&|:|b|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51
-@2|l+0#af5f00255&|e|t| +0#0000000&|[|&+0#00e0e07&|f|o@1|,+0#0000000&| |&+0#00e0e07&|b|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@49
-@2|l+0#af5f00255&|e|t| +0#0000000&|[|&+0#00e0e07&|f|o@1|,+0#0000000&| @62
-@8|\+0#e000e06&| +0#0000000&@1|&+0#00e0e07&|b|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51
+@2|l+0#af5f00255&|e|t| +0#0000000&|[|v+0#00e0e07&|:|t|r|u|e|,+0#0000000&| |v+0#00e0e07&|:|f|a|l|s|e|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@44
+@2>l+0#af5f00255&|e|t| +0#0000000&|[|v+0#00e0e07&|:|t|r|u|e|,+0#0000000&| @60
+@8|\+0#e000e06&| +0#0000000&|v+0#00e0e07&|:|f|a|l|s|e|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@49
+@2|l+0#af5f00255&|e|t| +0#0000000&|[|&+0#00e0e07&|a|r|i|,+0#0000000&| |&+0#00e0e07&|b|k|c|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@49
+@2|l+0#af5f00255&|e|t| +0#0000000&|[|&+0#00e0e07&|a|r|i|,+0#0000000&| @62
+@8|\+0#e000e06&| +0#0000000&@1|&+0#00e0e07&|b|k|c|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51
@2|l+0#af5f00255&|e|t| +0#0000000&|[|$+0#e000e06&|f|o@1|,+0#0000000&| |$+0#e000e06&|b|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@49
@2|l+0#af5f00255&|e|t| +0#0000000&|[|$+0#e000e06&|f|o@1|,+0#0000000&| @62
@8|\+0#e000e06&| +0#0000000&@1|$+0#e000e06&|b|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51
@@ -17,4 +17,4 @@
@75
@2|l+0#af5f00255&|e|t| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#0000000&| |.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@50
@2|l+0#af5f00255&|e|t| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#0000000&| |.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@49
-@57|1|8|1|,|3| @8|4|7|%|
+@57|1|8|1|,|3| @8|4@1|%|
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_11.dump b/runtime/syntax/testdir/dumps/vim_function_variables_11.dump
index 4c71758..54ff6e8 100644
--- a/runtime/syntax/testdir/dumps/vim_function_variables_11.dump
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_11.dump
@@ -6,15 +6,15 @@
@2>l+0#af5f00255&|e|t| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| @63
@8|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|r|;+0#0000000&| @60
@8|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
-@2|l+0#af5f00255&|e|t| +0#0000000&|[|v+0#00e0e07&|:|f|o@1|,+0#0000000&| |v+0#00e0e07&|:|b|a|r|;+0#0000000&| |v+0#00e0e07&|:|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@40
-@2|l+0#af5f00255&|e|t| +0#0000000&|[|v+0#00e0e07&|:|f|o@1|,+0#0000000&| @61
-@8|\+0#e000e06&| +0#0000000&|v+0#00e0e07&|:|b|a|r|;+0#0000000&| @58
-@8|\+0#e000e06&| +0#0000000&|v+0#00e0e07&|:|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51
+@2|l+0#af5f00255&|e|t| +0#0000000&|[|v+0#00e0e07&|:|t|r|u|e|,+0#0000000&| |v+0#00e0e07&|:|f|a|l|s|e|;+0#0000000&| |v+0#00e0e07&|:|n|o|n|e|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@36
+@2|l+0#af5f00255&|e|t| +0#0000000&|[|v+0#00e0e07&|:|t|r|u|e|,+0#0000000&| @60
+@8|\+0#e000e06&| +0#0000000&|v+0#00e0e07&|:|f|a|l|s|e|;+0#0000000&| @56
+@8|\+0#e000e06&| +0#0000000&|v+0#00e0e07&|:|n|o|n|e|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@50
@2|l+0#af5f00255&|e|t| +0#0000000&|[|$+0#e000e06&|f|o@1|,+0#0000000&| |$+0#e000e06&|b|a|r|;+0#0000000&| |$+0#e000e06&|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@43
@2|l+0#af5f00255&|e|t| +0#0000000&|[|$+0#e000e06&|f|o@1|,+0#0000000&| @62
@8|\+0#e000e06&| +0#0000000&|$+0#e000e06&|b|a|r|;+0#0000000&| @59
@8|\+0#e000e06&| +0#0000000&|$+0#e000e06&|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52
-@2|l+0#af5f00255&|e|t| +0#0000000&|[|&+0#00e0e07&|f|o@1|,+0#0000000&| |&+0#00e0e07&|b|a|r|;+0#0000000&| |&+0#00e0e07&|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@43
-@2|l+0#af5f00255&|e|t| +0#0000000&|[|&+0#00e0e07&|f|o@1|,+0#0000000&| @62
-@8|\+0#e000e06&| +0#0000000&|&+0#00e0e07&|b|a|r|;+0#0000000&| @59
-@57|1|9@1|,|3| @8|5|2|%|
+@2|l+0#af5f00255&|e|t| +0#0000000&|[|&+0#00e0e07&|a|r|i|,+0#0000000&| |&+0#00e0e07&|b|k|c|;+0#0000000&| |&+0#00e0e07&|c|m|p|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@43
+@2|l+0#af5f00255&|e|t| +0#0000000&|[|&+0#00e0e07&|a|r|i|,+0#0000000&| @62
+@8|\+0#e000e06&| +0#0000000&|&+0#00e0e07&|b|k|c|;+0#0000000&| @59
+@57|1|9@1|,|3| @8|4|8|%|
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_12.dump b/runtime/syntax/testdir/dumps/vim_function_variables_12.dump
index 0f70ff7..1ffe2a8 100644
--- a/runtime/syntax/testdir/dumps/vim_function_variables_12.dump
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_12.dump
@@ -1,5 +1,5 @@
-| +0&#ffffff0@7|\+0#e000e06&| +0#0000000&|&+0#00e0e07&|b|a|r|;+0#0000000&| @59
-@8|\+0#e000e06&| +0#0000000&|&+0#00e0e07&|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52
+| +0&#ffffff0@7|\+0#e000e06&| +0#0000000&|&+0#00e0e07&|b|k|c|;+0#0000000&| @59
+@8|\+0#e000e06&| +0#0000000&|&+0#00e0e07&|c|m|p|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52
@2|l+0#af5f00255&|e|t| +0#0000000&|[|@+0#e000e06&|a|,+0#0000000&| |@+0#e000e06&|b|;+0#0000000&| |@+0#e000e06&|c|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@49
@2|l+0#af5f00255&|e|t| +0#0000000&|[|@+0#e000e06&|a|,+0#0000000&| @64
@8|\+0#e000e06&| +0#0000000&|@+0#e000e06&|b|;+0#0000000&| @61
@@ -17,4 +17,4 @@
@2|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |e|v|a|l| |E|N|D| +0#0000000&@47
| +0#e000002&@1|.@2| +0#0000000&@69
| +0#e000e06&@1|E|N|D| +0#0000000&@69
-@57|2|1|7|,|2|-|9| @6|5|7|%|
+@57|2|1|7|,|2|-|9| @6|5|3|%|
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_13.dump b/runtime/syntax/testdir/dumps/vim_function_variables_13.dump
index 3544a05..4de7e3c 100644
--- a/runtime/syntax/testdir/dumps/vim_function_variables_13.dump
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_13.dump
@@ -17,4 +17,4 @@
@2|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b|a|r| |"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@51
@2|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b|a|r| ||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@48
@2|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b|a|r| |"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@50
-@57|2|3|5|,|3| @8|6|2|%|
+@57|2|3|5|,|3| @8|5|8|%|
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_14.dump b/runtime/syntax/testdir/dumps/vim_function_variables_14.dump
index 24e6ea1..433231a 100644
--- a/runtime/syntax/testdir/dumps/vim_function_variables_14.dump
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_14.dump
@@ -17,4 +17,4 @@
@2|u+0#af5f00255&|n|l|e|t| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&@62
@2|u+0#af5f00255&|n|l|e|t|!| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&@61
@75
-@57|2|5|3|,|3| @8|6|7|%|
+@57|2|5|3|,|3| @8|6|2|%|
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_15.dump b/runtime/syntax/testdir/dumps/vim_function_variables_15.dump
index 589bb07..898c57e 100644
--- a/runtime/syntax/testdir/dumps/vim_function_variables_15.dump
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_15.dump
@@ -17,4 +17,4 @@
@75
@2|c+0#af5f00255&|o|n|s|t| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@49
@75
-@57|2|7|1|,|0|-|1| @6|7|2|%|
+@57|2|7|1|,|0|-|1| @6|6|7|%|
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_16.dump b/runtime/syntax/testdir/dumps/vim_function_variables_16.dump
index 049cea6..d9a11d2 100644
--- a/runtime/syntax/testdir/dumps/vim_function_variables_16.dump
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_16.dump
@@ -17,4 +17,4 @@
| +0#e000002&@3|.@2| +0#0000000&@67
| +0#e000e06&@1|E|N|D| +0#0000000&@69
@75
-@57|2|8|9|,|1| @8|7@1|%|
+@57|2|8|9|,|1| @8|7|1|%|
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_17.dump b/runtime/syntax/testdir/dumps/vim_function_variables_17.dump
index 7033588..add83c3 100644
--- a/runtime/syntax/testdir/dumps/vim_function_variables_17.dump
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_17.dump
@@ -17,4 +17,4 @@
@2|l+0#af5f00255&|o|c|k|v|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@61
@8|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@56
@8|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@61
-@57|3|0|7|,|0|-|1| @6|8|2|%|
+@57|3|0|7|,|0|-|1| @6|7|6|%|
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_18.dump b/runtime/syntax/testdir/dumps/vim_function_variables_18.dump
index 2d1a2cd..afed84a 100644
--- a/runtime/syntax/testdir/dumps/vim_function_variables_18.dump
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_18.dump
@@ -17,4 +17,4 @@
@2|l+0#af5f00255&|o|c|k|v|a|r|!| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@43
@75
@2|l+0#af5f00255&|o|c|k|v|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@59
-@57|3|2|5|,|3| @8|8|7|%|
+@57|3|2|5|,|3| @8|8|0|%|
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_19.dump b/runtime/syntax/testdir/dumps/vim_function_variables_19.dump
index 960ded8..4c2ac53 100644
--- a/runtime/syntax/testdir/dumps/vim_function_variables_19.dump
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_19.dump
@@ -17,4 +17,4 @@
@8|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@56
@8|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@61
@75
-@57|3|4|3|,|0|-|1| @6|9|2|%|
+@57|3|4|3|,|0|-|1| @6|8|5|%|
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_20.dump b/runtime/syntax/testdir/dumps/vim_function_variables_20.dump
index 59dcf21..ecee1dc 100644
--- a/runtime/syntax/testdir/dumps/vim_function_variables_20.dump
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_20.dump
@@ -17,4 +17,4 @@
@75
@2|u+0#af5f00255&|n|l|o|c|k|v|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@57
@2|u+0#af5f00255&|n|l|o|c|k|v|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@53
-@57|3|6|1|,|0|-|1| @6|9|7|%|
+@57|3|6|1|,|0|-|1| @6|9|0|%|
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_21.dump b/runtime/syntax/testdir/dumps/vim_function_variables_21.dump
index 58ee05f..6eb25b0 100644
--- a/runtime/syntax/testdir/dumps/vim_function_variables_21.dump
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_21.dump
@@ -7,14 +7,14 @@
@2|u+0#af5f00255&|n|l|o|c|k|v|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@44
@2|u+0#af5f00255&|n|l|o|c|k|v|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@43
@2|u+0#af5f00255&|n|l|o|c|k|v|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@40
-|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
@75
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|3|7|9|,|3| @8|B|o|t|
+|"+0#0000e05&| |S|c|o|p|e| |d|i|c|t|i|o|n|a|r|i|e|s| +0#0000000&@54
+@75
+|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|b+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51
+|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|w+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51
+|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|t+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51
+|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|g+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51
+|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|l+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51
+|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|s+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51
+|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|a+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51
+@57|3|7|9|,|3| @8|9|4|%|
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_22.dump b/runtime/syntax/testdir/dumps/vim_function_variables_22.dump
new file mode 100644
index 0000000..0b19595
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_22.dump
@@ -0,0 +1,20 @@
+|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|a+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51
+|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|v+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51
+@75
+|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|b+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|b+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35
+|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|w+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|w+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35
+>f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|t+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35
+|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|g+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35
+|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|l+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35
+|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|s+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|s+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35
+|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|a+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|a+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35
+|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|v+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|v+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35
+@75
+|"+0#0000e05&| |N|e|o|v|i|m|-|s|p|e|c|i|f|i|c| |v|a|r|i|a|b|l|e|s| |(|n|o|t| |h|i|g|h|l|i|g|h|t|e|d| |b|y| |d|e|f|a|u|l|t|)| +0#0000000&@18
+@75
+|e+0#af5f00255&|c|h|o| +0#0000000&|v+0#00e0e07&|:|l+0#0000000&|u|a| |v+0#00e0e07&|:|m+0#0000000&|s|g|p|a|c|k|_|t|y|p|e|s| |v+0#00e0e07&|:|r+0#0000000&|e|l|n|u|m| |v+0#00e0e07&|:|s+0#0000000&|t|d|e|r@1| |v+0#00e0e07&|:|t+0#0000000&|e|r|m|r|e|q|u|e|s|t| |v+0#00e0e07&|:|v+0#0000000&|i|r|t|n|u|m| @6
+@75
+|e+0#af5f00255&|c|h|o| +0#0000000&|&+0#00e0e07&|c+0#0000000&|h|a|n@1|e|l| |&+0#00e0e07&|i+0#0000000&|n|c@1|o|m@1|a|n|d| |&+0#00e0e07&|m+0#0000000&|o|u|s|e|s|c|r|o|l@1| |&+0#00e0e07&|p+0#0000000&|u|m|b|l|e|n|d| |&+0#00e0e07&|r+0#0000000&|e|d|r|a|w|d|e|b|u|g| |&+0#00e0e07&|s+0#0000000&|c|r|o|l@1|b|a|c|k| @1
+|e+0#af5f00255&|c|h|o| +0#0000000&|&+0#00e0e07&|s+0#0000000&|h|a|d|a| |&+0#00e0e07&|s+0#0000000&|h|a|d|a|f|i|l|e| |&+0#00e0e07&|s+0#0000000&|t|a|t|u|s|c|o|l|u|m|n| |&+0#00e0e07&|t+0#0000000&|e|r|m|p|a|s|t|e|f|i|l|t|e|r| |&+0#00e0e07&|t+0#0000000&|e|r|m|s|y|n|c| |&+0#00e0e07&|w+0#0000000&|i|n|b|a|r| @3
+|e+0#af5f00255&|c|h|o| +0#0000000&|&+0#00e0e07&|w+0#0000000&|i|n|b|l|e|n|d| |&+0#00e0e07&|w+0#0000000&|i|n|h|i|g|h|l|i|g|h|t| @46
+@57|3|9|7|,|1| @8|9@1|%|
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_23.dump b/runtime/syntax/testdir/dumps/vim_function_variables_23.dump
new file mode 100644
index 0000000..852ce0e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_23.dump
@@ -0,0 +1,20 @@
+|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|&+0#00e0e07&|w+0#0000000&|i|n|b|l|e|n|d| |&+0#00e0e07&|w+0#0000000&|i|n|h|i|g|h|l|i|g|h|t| @46
+@75
+|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
+> @74
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|4|1|3|,|0|-|1| @6|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_lambda_04.dump b/runtime/syntax/testdir/dumps/vim_lambda_04.dump
index a26e67e..72e1236 100644
--- a/runtime/syntax/testdir/dumps/vim_lambda_04.dump
+++ b/runtime/syntax/testdir/dumps/vim_lambda_04.dump
@@ -8,8 +8,8 @@
@6|\+0#e000e06&|}@1| +0#0000000&@65
@75
|l+0#af5f00255&|e|t| +0#0000000&|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|{+0#e000e06&|-+0#af5f00255&|>| +0#0000000&|#+0#e000e06&|{| +0#0000000&@58
-@6|\+0#e000e06&| +0#0000000&|a+0#00e0e07&|:+0#0000000&| |4+0#e000002&|2|,+0#0000000&| @60
-@6|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|:+0#0000000&| |8+0#e000002&|3| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|a+0#00e0e07&|:| +0#0000000&|4+0#e000002&|2|,+0#0000000&| @60
+@6|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|:| +0#0000000&|8+0#e000002&|3| +0#0000000&@61
@6|\+0#e000e06&|}@1| +0#0000000&@65
@75
|l+0#af5f00255&|e|t| +0#0000000&|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|{+0#e000e06&|-+0#af5f00255&|>| +0#0000000&|{+0#e000e06&|-+0#af5f00255&|>|[+0#e000e06&| +0#0000000&@56
diff --git a/runtime/syntax/testdir/dumps/vim_lambda_05.dump b/runtime/syntax/testdir/dumps/vim_lambda_05.dump
index 01e9e22..e8d31d9 100644
--- a/runtime/syntax/testdir/dumps/vim_lambda_05.dump
+++ b/runtime/syntax/testdir/dumps/vim_lambda_05.dump
@@ -5,8 +5,8 @@
@6|\+0#e000e06&|}@2| +0#0000000&@64
> @74
|l+0#af5f00255&|e|t| +0#0000000&|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|{+0#e000e06&|-+0#af5f00255&|>| +0#0000000&|{+0#e000e06&|-+0#af5f00255&|>| +0#0000000&|#+0#e000e06&|{| +0#0000000&@54
-@6|\+0#e000e06&| +0#0000000&|a+0#00e0e07&|:+0#0000000&| |4+0#e000002&|2|,+0#0000000&| @60
-@6|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|:+0#0000000&| |8+0#e000002&|3| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|a+0#00e0e07&|:| +0#0000000&|4+0#e000002&|2|,+0#0000000&| @60
+@6|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|:| +0#0000000&|8+0#e000002&|3| +0#0000000&@61
@6|\+0#e000e06&|}@2| +0#0000000&@64
@75
|"+0#0000e05&| |:|h|e|l|p| |l|a|m|b|d|a| +0#0000000&@60
diff --git a/runtime/syntax/testdir/dumps/vim_line_continuation_02.dump b/runtime/syntax/testdir/dumps/vim_line_continuation_02.dump
index 3dde6fa..b9abdc0 100644
--- a/runtime/syntax/testdir/dumps/vim_line_continuation_02.dump
+++ b/runtime/syntax/testdir/dumps/vim_line_continuation_02.dump
@@ -1,9 +1,9 @@
| +0&#ffffff0@74
|l+0#af5f00255&|e|t| +0#0000000&|d+0#00e0e07&|i|c|t| +0#0000000&|=+0#af5f00255&| +0#0000000&|#+0#e000e06&|{| +0#0000000&@61
@6|"+0#0000e05&|\| |p|a|i|r| |1| +0#0000000&@59
-@6|\+0#e000e06&| +0#0000000&|a+0#00e0e07&|:+0#0000000&| |1+0#e000002&|,+0#0000000&| @61
+@6|\+0#e000e06&| +0#0000000&|a+0#00e0e07&|:| +0#0000000&|1+0#e000002&|,+0#0000000&| @61
@6|"+0#0000e05&|\| |p|a|i|r| |2| +0#0000000&@59
-@6>\+0#e000e06&| +0#0000000&|b+0#00e0e07&|:+0#0000000&| |2+0#e000002&|,+0#0000000&| @61
+@6>\+0#e000e06&| +0#0000000&|b+0#00e0e07&|:| +0#0000000&|2+0#e000002&|,+0#0000000&| @61
@6|"+0#0000e05&|\| |p|a|i|r| |3| +0#0000000&@59
@6|\+0#e000e06&| +0#0000000&|c+0#00e0e07&|:+0#0000000&| |3+0#e000002&| +0#0000000&@62
@6|\+0#e000e06&|}| +0#0000000&@66
diff --git a/runtime/syntax/testdir/dumps/vim_nvim_variables_00.dump b/runtime/syntax/testdir/dumps/vim_nvim_variables_00.dump
new file mode 100644
index 0000000..c7dab67
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_nvim_variables_00.dump
@@ -0,0 +1,20 @@
+>"+0#0000e05#ffffff0| |N|e|o|v|i|m| |v|a|r|i|a|b|l|e| |h|i|g|h|l|i|g|h|t|i|n|g| +0#0000000&@44
+|"+0#0000e05&| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|v|i|m|s|y|n|_|v|i|m|_|f|e|a|t|u|r|e|s| |=| |[|"|n|v|i|m|"|]| +0#0000000&@21
+@75
+|e+0#af5f00255&|c|h|o| +0#0000000&|v+0#00e0e07&|:|l|u|a| +0#0000000&|v+0#00e0e07&|:|m|s|g|p|a|c|k|_|t|y|p|e|s| +0#0000000&|v+0#00e0e07&|:|r|e|l|n|u|m| +0#0000000&|v+0#00e0e07&|:|s|t|d|e|r@1| +0#0000000&|v+0#00e0e07&|:|t|e|r|m|r|e|q|u|e|s|t| +0#0000000&|v+0#00e0e07&|:|v|i|r|t|n|u|m| +0#0000000&@6
+@75
+|e+0#af5f00255&|c|h|o| +0#0000000&|&+0#00e0e07&|c|h|a|n@1|e|l| +0#0000000&|&+0#00e0e07&|i|n|c@1|o|m@1|a|n|d| +0#0000000&|&+0#00e0e07&|m|o|u|s|e|s|c|r|o|l@1| +0#0000000&|&+0#00e0e07&|p|u|m|b|l|e|n|d| +0#0000000&|&+0#00e0e07&|r|e|d|r|a|w|d|e|b|u|g| +0#0000000&|&+0#00e0e07&|s|c|r|o|l@1|b|a|c|k| +0#0000000&@1
+|e+0#af5f00255&|c|h|o| +0#0000000&|&+0#00e0e07&|s|h|a|d|a| +0#0000000&|&+0#00e0e07&|s|h|a|d|a|f|i|l|e| +0#0000000&|&+0#00e0e07&|s|t|a|t|u|s|c|o|l|u|m|n| +0#0000000&|&+0#00e0e07&|t|e|r|m|p|a|s|t|e|f|i|l|t|e|r| +0#0000000&|&+0#00e0e07&|t|e|r|m|s|y|n|c| +0#0000000&|&+0#00e0e07&|w|i|n|b|a|r| +0#0000000&@3
+|e+0#af5f00255&|c|h|o| +0#0000000&|&+0#00e0e07&|w|i|n|b|l|e|n|d| +0#0000000&|&+0#00e0e07&|w|i|n|h|i|g|h|l|i|g|h|t| +0#0000000&@46
+@75
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|,|1| @10|A|l@1|
diff --git a/runtime/syntax/testdir/dumps/vim_variables_02.dump b/runtime/syntax/testdir/dumps/vim_variables_02.dump
index bd23de5..ce0a8c3 100644
--- a/runtime/syntax/testdir/dumps/vim_variables_02.dump
+++ b/runtime/syntax/testdir/dumps/vim_variables_02.dump
@@ -1,7 +1,7 @@
|l+0#af5f00255#ffffff0|e|t| +0#0000000&|b+0#00e0e07&|:|f|o@1|[+0#0000000&|:|]| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
@75
-|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|f|o@1|[+0#0000000&|"+0#e000002&|k|e|y|"|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52
-|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|f|o@1|[+0#0000000&|'+0#e000002&|k|e|y|'|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52
+|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|:|f|o@1|[+0#0000000&|"+0#e000002&|k|e|y|"|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51
+|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|:|f|o@1|[+0#0000000&|'+0#e000002&|k|e|y|'|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51
@75
>l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|:|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
@@ -17,4 +17,4 @@
@75
|l+0#af5f00255&|e|t| +0#0000000&|g+0#00e0e07&|:|f|o@1|[+0#0000000&|1+0#e000002&|:+0#0000000&|2+0#e000002&|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
|l+0#af5f00255&|e|t| +0#0000000&|g+0#00e0e07&|:|f|o@1|[+0#0000000&|:|2+0#e000002&|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
-@57|3|7|,|1| @10|8|%|
+@57|3|7|,|1| @10|7|%|
diff --git a/runtime/syntax/testdir/dumps/vim_variables_03.dump b/runtime/syntax/testdir/dumps/vim_variables_03.dump
index e2ff94d..ac24e5e 100644
--- a/runtime/syntax/testdir/dumps/vim_variables_03.dump
+++ b/runtime/syntax/testdir/dumps/vim_variables_03.dump
@@ -17,4 +17,4 @@
@75
|l+0#af5f00255&|e|t| +0#0000000&|s+0#00e0e07&|:|f|o@1|[+0#0000000&|0+0#e000002&|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
@75
-@57|5@1|,|1| @9|1|3|%|
+@57|5@1|,|1| @9|1|2|%|
diff --git a/runtime/syntax/testdir/dumps/vim_variables_04.dump b/runtime/syntax/testdir/dumps/vim_variables_04.dump
index 2958aed..4f3b2aa 100644
--- a/runtime/syntax/testdir/dumps/vim_variables_04.dump
+++ b/runtime/syntax/testdir/dumps/vim_variables_04.dump
@@ -17,4 +17,4 @@
@75
|l+0#af5f00255&|e|t| +0#0000000&|t+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58
@75
-@57|7|3|,|0|-|1| @7|1|8|%|
+@57|7|3|,|0|-|1| @7|1|7|%|
diff --git a/runtime/syntax/testdir/dumps/vim_variables_05.dump b/runtime/syntax/testdir/dumps/vim_variables_05.dump
index 3933933..0601c43 100644
--- a/runtime/syntax/testdir/dumps/vim_variables_05.dump
+++ b/runtime/syntax/testdir/dumps/vim_variables_05.dump
@@ -17,4 +17,4 @@
|l+0#af5f00255&|e|t| +0#0000000&|t+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
|l+0#af5f00255&|e|t| +0#0000000&|t+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
@75
-@57|9|1|,|1| @9|2|3|%|
+@57|9|1|,|1| @9|2|1|%|
diff --git a/runtime/syntax/testdir/dumps/vim_variables_06.dump b/runtime/syntax/testdir/dumps/vim_variables_06.dump
index be006fc..833f52b 100644
--- a/runtime/syntax/testdir/dumps/vim_variables_06.dump
+++ b/runtime/syntax/testdir/dumps/vim_variables_06.dump
@@ -1,20 +1,20 @@
| +0&#ffffff0@74
-|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58
+|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
@75
-|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1|[+0#0000000&|0+0#e000002&|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
+|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e|[+0#0000000&|0+0#e000002&|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
@75
->l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1|[+0#0000000&|1+0#e000002&|:+0#0000000&|2+0#e000002&|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
-|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1|[+0#0000000&|:|2+0#e000002&|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
-|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1|[+0#0000000&|1+0#e000002&|:+0#0000000&|]| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
-|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1|[+0#0000000&|:|]| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
+>l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e|[+0#0000000&|1+0#e000002&|:+0#0000000&|2+0#e000002&|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52
+|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e|[+0#0000000&|:|2+0#e000002&|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
+|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e|[+0#0000000&|1+0#e000002&|:+0#0000000&|]| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
+|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e|[+0#0000000&|:|]| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
@75
-|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1|[+0#0000000&|"+0#e000002&|k|e|y|"|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51
-|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1|[+0#0000000&|'+0#e000002&|k|e|y|'|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51
+|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e|[+0#0000000&|"+0#e000002&|k|e|y|"|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@50
+|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e|[+0#0000000&|'+0#e000002&|k|e|y|'|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@50
@75
-|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
-|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
-|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
-|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
-|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1| +0#0000000&|%+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
-|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
-@57|1|0|9|,|1| @8|2|8|%|
+|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
+|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
+|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
+|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
+|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|%+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
+|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
+@57|1|0|9|,|1| @8|2|6|%|
diff --git a/runtime/syntax/testdir/dumps/vim_variables_07.dump b/runtime/syntax/testdir/dumps/vim_variables_07.dump
index 7851c85..ded6062 100644
--- a/runtime/syntax/testdir/dumps/vim_variables_07.dump
+++ b/runtime/syntax/testdir/dumps/vim_variables_07.dump
@@ -1,5 +1,5 @@
-|l+0#af5f00255#ffffff0|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
-|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
+|l+0#af5f00255#ffffff0|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
+|l+0#af5f00255&|e|t| +0#0000000&|v+0#00e0e07&|:|t|r|u|e| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
@75
|l+0#af5f00255&|e|t| +0#0000000&|w+0#00e0e07&|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58
@75
@@ -17,4 +17,4 @@
|l+0#af5f00255&|e|t| +0#0000000&|w+0#00e0e07&|:|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
|l+0#af5f00255&|e|t| +0#0000000&|w+0#00e0e07&|:|f|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
|l+0#af5f00255&|e|t| +0#0000000&|w+0#00e0e07&|:|f|o@1| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
-@57|1|2|7|,|1| @8|3@1|%|
+@57|1|2|7|,|1| @8|3|0|%|
diff --git a/runtime/syntax/testdir/dumps/vim_variables_08.dump b/runtime/syntax/testdir/dumps/vim_variables_08.dump
index 33de2cf..d209554 100644
--- a/runtime/syntax/testdir/dumps/vim_variables_08.dump
+++ b/runtime/syntax/testdir/dumps/vim_variables_08.dump
@@ -11,10 +11,10 @@
|l+0#af5f00255&|e|t| +0#0000000&|@+0#e000e06&|f| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60
|l+0#af5f00255&|e|t| +0#0000000&|@+0#e000e06&|f| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
@75
-|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
+|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|a|r|i| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
@75
|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|t|_|k|1| +0#0000000&|=+0#af5f00255&| +0#0000000&|"+0#e000002&|\+0#e000e06&|<|E|s|c|>|[+0#e000002&|2|3|4|;|"| +0#0000000&@49
@75
-|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|f|o@1| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58
-|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
-@57|1|4|5|,|1| @8|3|8|%|
+|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|a|r|i| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58
+|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|a|r|i| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
+@57|1|4|5|,|1| @8|3|5|%|
diff --git a/runtime/syntax/testdir/dumps/vim_variables_09.dump b/runtime/syntax/testdir/dumps/vim_variables_09.dump
index 101d7a2..6627a38 100644
--- a/runtime/syntax/testdir/dumps/vim_variables_09.dump
+++ b/runtime/syntax/testdir/dumps/vim_variables_09.dump
@@ -1,20 +1,20 @@
-|l+0#af5f00255#ffffff0|e|t| +0#0000000&|&+0#00e0e07&|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
-|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58
-|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58
+|l+0#af5f00255#ffffff0|e|t| +0#0000000&|&+0#00e0e07&|a|r|i| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
+|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|a|r|i| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58
+|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|a|r|i| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58
@75
-|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
+|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|a|l|e|p|h| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
> @74
-|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
-|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
-|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
-|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
+|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|a|l|e|p|h| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
+|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|a|l|e|p|h| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
+|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|a|l|e|p|h| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
+|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|a|l|e|p|h| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
@75
-|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
+|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|a|l|e|p|h| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
@75
-|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|f|o@1| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
-|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
-|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
-|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
+|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|a|l|e|p|h| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
+|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|a|l|e|p|h| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
+|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|a|l|e|p|h| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
+|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|a|l|e|p|h| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
@75
|l+0#af5f00255&|e|t| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
-@57|1|6|3|,|0|-|1| @6|4|3|%|
+@57|1|6|3|,|0|-|1| @6|4|0|%|
diff --git a/runtime/syntax/testdir/dumps/vim_variables_10.dump b/runtime/syntax/testdir/dumps/vim_variables_10.dump
index 254ec89..29931ed 100644
--- a/runtime/syntax/testdir/dumps/vim_variables_10.dump
+++ b/runtime/syntax/testdir/dumps/vim_variables_10.dump
@@ -1,12 +1,12 @@
|l+0#af5f00255#ffffff0|e|t| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
|l+0#af5f00255&|e|t| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| @65
@6|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
-|l+0#af5f00255&|e|t| +0#0000000&|[|v+0#00e0e07&|:|f|o@1|,+0#0000000&| |v+0#00e0e07&|:|b|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@49
-|l+0#af5f00255&|e|t| +0#0000000&|[|v+0#00e0e07&|:|f|o@1|,+0#0000000&| @63
-@6>\+0#e000e06&| +0#0000000&|v+0#00e0e07&|:|b|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
-|l+0#af5f00255&|e|t| +0#0000000&|[|&+0#00e0e07&|f|o@1|,+0#0000000&| |&+0#00e0e07&|b|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51
-|l+0#af5f00255&|e|t| +0#0000000&|[|&+0#00e0e07&|f|o@1|,+0#0000000&| @64
-@6|\+0#e000e06&| +0#0000000&@1|&+0#00e0e07&|b|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
+|l+0#af5f00255&|e|t| +0#0000000&|[|v+0#00e0e07&|:|t|r|u|e|,+0#0000000&| |v+0#00e0e07&|:|f|a|l|s|e|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@46
+|l+0#af5f00255&|e|t| +0#0000000&|[|v+0#00e0e07&|:|t|r|u|e|,+0#0000000&| @62
+@6>\+0#e000e06&| +0#0000000&|v+0#00e0e07&|:|f|a|l|s|e|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51
+|l+0#af5f00255&|e|t| +0#0000000&|[|&+0#00e0e07&|a|r|i|,+0#0000000&| |&+0#00e0e07&|b|k|c|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51
+|l+0#af5f00255&|e|t| +0#0000000&|[|&+0#00e0e07&|a|r|i|,+0#0000000&| @64
+@6|\+0#e000e06&| +0#0000000&@1|&+0#00e0e07&|b|k|c|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
|l+0#af5f00255&|e|t| +0#0000000&|[|$+0#e000e06&|f|o@1|,+0#0000000&| |$+0#e000e06&|b|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51
|l+0#af5f00255&|e|t| +0#0000000&|[|$+0#e000e06&|f|o@1|,+0#0000000&| @64
@6|\+0#e000e06&| +0#0000000&@1|$+0#e000e06&|b|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
@@ -17,4 +17,4 @@
|l+0#af5f00255&|e|t| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#0000000&| |.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52
|l+0#af5f00255&|e|t| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#0000000&| |.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51
|l+0#af5f00255&|e|t| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#0000000&| |++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52
-@57|1|8|1|,|7| @8|4|8|%|
+@57|1|8|1|,|7| @8|4@1|%|
diff --git a/runtime/syntax/testdir/dumps/vim_variables_11.dump b/runtime/syntax/testdir/dumps/vim_variables_11.dump
index 7bb6003..40fcb3a 100644
--- a/runtime/syntax/testdir/dumps/vim_variables_11.dump
+++ b/runtime/syntax/testdir/dumps/vim_variables_11.dump
@@ -5,16 +5,16 @@
|l+0#af5f00255&|e|t| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| @65
@6>\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|r|;+0#0000000&| @62
@6|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
-|l+0#af5f00255&|e|t| +0#0000000&|[|v+0#00e0e07&|:|f|o@1|,+0#0000000&| |v+0#00e0e07&|:|b|a|r|;+0#0000000&| |v+0#00e0e07&|:|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@42
-|l+0#af5f00255&|e|t| +0#0000000&|[|v+0#00e0e07&|:|f|o@1|,+0#0000000&| @63
-@6|\+0#e000e06&| +0#0000000&|v+0#00e0e07&|:|b|a|r|;+0#0000000&| @60
-@6|\+0#e000e06&| +0#0000000&|v+0#00e0e07&|:|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
+|l+0#af5f00255&|e|t| +0#0000000&|[|v+0#00e0e07&|:|t|r|u|e|,+0#0000000&| |v+0#00e0e07&|:|f|a|l|s|e|;+0#0000000&| |v+0#00e0e07&|:|n|o|n|e|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@38
+|l+0#af5f00255&|e|t| +0#0000000&|[|v+0#00e0e07&|:|t|r|u|e|,+0#0000000&| @62
+@6|\+0#e000e06&| +0#0000000&|v+0#00e0e07&|:|f|a|l|s|e|;+0#0000000&| @58
+@6|\+0#e000e06&| +0#0000000&|v+0#00e0e07&|:|n|o|n|e|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52
|l+0#af5f00255&|e|t| +0#0000000&|[|$+0#e000e06&|f|o@1|,+0#0000000&| |$+0#e000e06&|b|a|r|;+0#0000000&| |$+0#e000e06&|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@45
|l+0#af5f00255&|e|t| +0#0000000&|[|$+0#e000e06&|f|o@1|,+0#0000000&| @64
@6|\+0#e000e06&| +0#0000000&|$+0#e000e06&|b|a|r|;+0#0000000&| @61
@6|\+0#e000e06&| +0#0000000&|$+0#e000e06&|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
-|l+0#af5f00255&|e|t| +0#0000000&|[|&+0#00e0e07&|f|o@1|,+0#0000000&| |&+0#00e0e07&|b|a|r|;+0#0000000&| |&+0#00e0e07&|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@45
-|l+0#af5f00255&|e|t| +0#0000000&|[|&+0#00e0e07&|f|o@1|,+0#0000000&| @64
-@6|\+0#e000e06&| +0#0000000&|&+0#00e0e07&|b|a|r|;+0#0000000&| @61
-@6|\+0#e000e06&| +0#0000000&|&+0#00e0e07&|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
-@57|1|9@1|,|7| @8|5|3|%|
+|l+0#af5f00255&|e|t| +0#0000000&|[|&+0#00e0e07&|a|r|i|,+0#0000000&| |&+0#00e0e07&|b|k|c|;+0#0000000&| |&+0#00e0e07&|c|m|p|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@45
+|l+0#af5f00255&|e|t| +0#0000000&|[|&+0#00e0e07&|a|r|i|,+0#0000000&| @64
+@6|\+0#e000e06&| +0#0000000&|&+0#00e0e07&|b|k|c|;+0#0000000&| @61
+@6|\+0#e000e06&| +0#0000000&|&+0#00e0e07&|c|m|p|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
+@57|1|9@1|,|7| @8|4|9|%|
diff --git a/runtime/syntax/testdir/dumps/vim_variables_12.dump b/runtime/syntax/testdir/dumps/vim_variables_12.dump
index db1c966..5117e1a 100644
--- a/runtime/syntax/testdir/dumps/vim_variables_12.dump
+++ b/runtime/syntax/testdir/dumps/vim_variables_12.dump
@@ -1,4 +1,4 @@
-| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|&+0#00e0e07&|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
+| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|&+0#00e0e07&|c|m|p|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
|l+0#af5f00255&|e|t| +0#0000000&|[|@+0#e000e06&|a|,+0#0000000&| |@+0#e000e06&|b|;+0#0000000&| |@+0#e000e06&|c|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51
|l+0#af5f00255&|e|t| +0#0000000&|[|@+0#e000e06&|a|,+0#0000000&| @66
@6|\+0#e000e06&| +0#0000000&|@+0#e000e06&|b|;+0#0000000&| @63
@@ -17,4 +17,4 @@
|.+0#e000002&@2| +0#0000000&@71
|E+0#e000e06&|N|D| +0#0000000&@71
|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |e|v|a|l| |t|r|i|m| |E|N|D| +0#0000000&@49
-@57|2|1|7|,|0|-|1| @6|5|8|%|
+@57|2|1|7|,|0|-|1| @6|5|3|%|
diff --git a/runtime/syntax/testdir/dumps/vim_variables_13.dump b/runtime/syntax/testdir/dumps/vim_variables_13.dump
index 64706fd..bfa8428 100644
--- a/runtime/syntax/testdir/dumps/vim_variables_13.dump
+++ b/runtime/syntax/testdir/dumps/vim_variables_13.dump
@@ -17,4 +17,4 @@
|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b|a|r| ||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@50
|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b|a|r| |"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@52
@75
-@57|2|3|5|,|0|-|1| @6|6|3|%|
+@57|2|3|5|,|0|-|1| @6|5|8|%|
diff --git a/runtime/syntax/testdir/dumps/vim_variables_14.dump b/runtime/syntax/testdir/dumps/vim_variables_14.dump
index cdda808..4cb8061 100644
--- a/runtime/syntax/testdir/dumps/vim_variables_14.dump
+++ b/runtime/syntax/testdir/dumps/vim_variables_14.dump
@@ -17,4 +17,4 @@
|u+0#af5f00255&|n|l|e|t|!| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&@63
@75
|u+0#af5f00255&|n|l|e|t| +0#0000000&|l+0#00e0e07&|i|s|t|[+0#0000000&|3+0#e000002&|]+0#0000000&| @61
-@57|2|5|3|,|1| @8|6|8|%|
+@57|2|5|3|,|1| @8|6|3|%|
diff --git a/runtime/syntax/testdir/dumps/vim_variables_15.dump b/runtime/syntax/testdir/dumps/vim_variables_15.dump
index 44a9223..73cc0c6 100644
--- a/runtime/syntax/testdir/dumps/vim_variables_15.dump
+++ b/runtime/syntax/testdir/dumps/vim_variables_15.dump
@@ -17,4 +17,4 @@
|c+0#af5f00255&|o|n|s|t| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51
@75
|c+0#af5f00255&|o|n|s|t| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|;+0#0000000&| |b+0#00e0e07&|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@46
-@57|2|7|1|,|1| @8|7|3|%|
+@57|2|7|1|,|1| @8|6|7|%|
diff --git a/runtime/syntax/testdir/dumps/vim_variables_16.dump b/runtime/syntax/testdir/dumps/vim_variables_16.dump
index 5821a4c..1b0ddfa 100644
--- a/runtime/syntax/testdir/dumps/vim_variables_16.dump
+++ b/runtime/syntax/testdir/dumps/vim_variables_16.dump
@@ -17,4 +17,4 @@
|E+0#e000e06&|N|D| +0#0000000&@71
@75
|c+0#af5f00255&|o|n|s|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@65
-@57|2|8|9|,|1| @8|7@1|%|
+@57|2|8|9|,|1| @8|7|2|%|
diff --git a/runtime/syntax/testdir/dumps/vim_variables_17.dump b/runtime/syntax/testdir/dumps/vim_variables_17.dump
index 1ba8505..07cb153 100644
--- a/runtime/syntax/testdir/dumps/vim_variables_17.dump
+++ b/runtime/syntax/testdir/dumps/vim_variables_17.dump
@@ -17,4 +17,4 @@
@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
@6|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@63
@75
-@57|3|0|7|,|1| @8|8|2|%|
+@57|3|0|7|,|1| @8|7|6|%|
diff --git a/runtime/syntax/testdir/dumps/vim_variables_18.dump b/runtime/syntax/testdir/dumps/vim_variables_18.dump
index 9a79802..75c9d80 100644
--- a/runtime/syntax/testdir/dumps/vim_variables_18.dump
+++ b/runtime/syntax/testdir/dumps/vim_variables_18.dump
@@ -17,4 +17,4 @@
@75
|l+0#af5f00255&|o|c|k|v|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@61
|l+0#af5f00255&|o|c|k|v|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@57
-@57|3|2|5|,|0|-|1| @6|8|7|%|
+@57|3|2|5|,|0|-|1| @6|8|1|%|
diff --git a/runtime/syntax/testdir/dumps/vim_variables_19.dump b/runtime/syntax/testdir/dumps/vim_variables_19.dump
index dcaa8aa..853644e 100644
--- a/runtime/syntax/testdir/dumps/vim_variables_19.dump
+++ b/runtime/syntax/testdir/dumps/vim_variables_19.dump
@@ -17,4 +17,4 @@
@6|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@63
@75
|u+0#af5f00255&|n|l|o|c|k|v|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@51
-@57|3|4|3|,|1| @8|9|2|%|
+@57|3|4|3|,|1| @8|8|6|%|
diff --git a/runtime/syntax/testdir/dumps/vim_variables_20.dump b/runtime/syntax/testdir/dumps/vim_variables_20.dump
index 4eb79fd..e280dd0 100644
--- a/runtime/syntax/testdir/dumps/vim_variables_20.dump
+++ b/runtime/syntax/testdir/dumps/vim_variables_20.dump
@@ -17,4 +17,4 @@
|u+0#af5f00255&|n|l|o|c|k|v|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@59
|u+0#af5f00255&|n|l|o|c|k|v|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@55
|u+0#af5f00255&|n|l|o|c|k|v|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@59
-@57|3|6|1|,|1| @8|9|7|%|
+@57|3|6|1|,|1| @8|9|0|%|
diff --git a/runtime/syntax/testdir/dumps/vim_variables_21.dump b/runtime/syntax/testdir/dumps/vim_variables_21.dump
index 36a08af..ecc9a4b 100644
--- a/runtime/syntax/testdir/dumps/vim_variables_21.dump
+++ b/runtime/syntax/testdir/dumps/vim_variables_21.dump
@@ -7,14 +7,14 @@
|u+0#af5f00255&|n|l|o|c|k|v|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@45
|u+0#af5f00255&|n|l|o|c|k|v|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@42
@75
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|3|7|9|,|1| @8|B|o|t|
+|"+0#0000e05&| |S|c|o|p|e| |d|i|c|t|i|o|n|a|r|i|e|s| +0#0000000&@54
+@75
+|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|b+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51
+|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|w+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51
+|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|t+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51
+|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|g+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51
+|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|l+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51
+|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|s+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51
+|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|a+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51
+|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|v+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51
+@57|3|7|9|,|1| @8|9|5|%|
diff --git a/runtime/syntax/testdir/dumps/vim_variables_22.dump b/runtime/syntax/testdir/dumps/vim_variables_22.dump
new file mode 100644
index 0000000..afb4dbf
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_variables_22.dump
@@ -0,0 +1,20 @@
+|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|g+0#00e0e07&|e|t|(+0#e000e06&|v+0#00e0e07&|:|,+0#0000000&| |'+0#e000002&|f|o@1|'|,+0#0000000&| |4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51
+@75
+|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|b+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|b+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35
+|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|w+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|w+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35
+|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|t+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35
+>f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|g+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35
+|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|l+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35
+|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|s+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|s+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35
+|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|a+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|a+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35
+|f+0#af5f00255&|o|r| +0#0000000&|k+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|k+0#00e0e07&|e|y|s|(+0#e000e06&|v+0#00e0e07&|:|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|v+0#00e0e07&|:|[+0#0000000&|k+0#00e0e07&|]+0#0000000&| ||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@35
+@75
+|"+0#0000e05&| |N|e|o|v|i|m|-|s|p|e|c|i|f|i|c| |v|a|r|i|a|b|l|e|s| |(|n|o|t| |h|i|g|h|l|i|g|h|t|e|d| |b|y| |d|e|f|a|u|l|t|)| +0#0000000&@18
+@75
+|e+0#af5f00255&|c|h|o| +0#0000000&|v+0#00e0e07&|:|l+0#0000000&|u|a| |v+0#00e0e07&|:|m+0#0000000&|s|g|p|a|c|k|_|t|y|p|e|s| |v+0#00e0e07&|:|r+0#0000000&|e|l|n|u|m| |v+0#00e0e07&|:|s+0#0000000&|t|d|e|r@1| |v+0#00e0e07&|:|t+0#0000000&|e|r|m|r|e|q|u|e|s|t| |v+0#00e0e07&|:|v+0#0000000&|i|r|t|n|u|m| @6
+@75
+|e+0#af5f00255&|c|h|o| +0#0000000&|&+0#00e0e07&|c+0#0000000&|h|a|n@1|e|l| |&+0#00e0e07&|i+0#0000000&|n|c@1|o|m@1|a|n|d| |&+0#00e0e07&|m+0#0000000&|o|u|s|e|s|c|r|o|l@1| |&+0#00e0e07&|p+0#0000000&|u|m|b|l|e|n|d| |&+0#00e0e07&|r+0#0000000&|e|d|r|a|w|d|e|b|u|g| |&+0#00e0e07&|s+0#0000000&|c|r|o|l@1|b|a|c|k| @1
+|e+0#af5f00255&|c|h|o| +0#0000000&|&+0#00e0e07&|s+0#0000000&|h|a|d|a| |&+0#00e0e07&|s+0#0000000&|h|a|d|a|f|i|l|e| |&+0#00e0e07&|s+0#0000000&|t|a|t|u|s|c|o|l|u|m|n| |&+0#00e0e07&|t+0#0000000&|e|r|m|p|a|s|t|e|f|i|l|t|e|r| |&+0#00e0e07&|t+0#0000000&|e|r|m|s|y|n|c| |&+0#00e0e07&|w+0#0000000&|i|n|b|a|r| @3
+|e+0#af5f00255&|c|h|o| +0#0000000&|&+0#00e0e07&|w+0#0000000&|i|n|b|l|e|n|d| |&+0#00e0e07&|w+0#0000000&|i|n|h|i|g|h|l|i|g|h|t| @46
+@75
+@57|3|9|7|,|1| @8|B|o|t|
diff --git a/runtime/syntax/testdir/input/vim9_def_variables.vim b/runtime/syntax/testdir/input/vim9_def_variables.vim
index 94ef810..4580c0e 100644
--- a/runtime/syntax/testdir/input/vim9_def_variables.vim
+++ b/runtime/syntax/testdir/input/vim9_def_variables.vim
@@ -12,7 +12,7 @@
t:foo = expr
w:foo = expr
- v:foo = expr
+ v:true = expr
$FOO = expr
@@ -59,6 +59,9 @@
foo[1:] = expr
foo[:] = expr
+ foo["key"] = expr
+ foo['key'] = expr
+
foo += expr
foo -= expr
foo *= expr
@@ -107,36 +110,36 @@
@f = expr
@f ..= expr
- &foo = expr
+ &ari = expr
&t_k1 = "\<Esc>[234;"
- &foo ..= expr
+ &ari ..= expr
- &foo += expr
- &foo -= expr
+ &ari += expr
+ &ari -= expr
- &l:foo = expr
+ &l:aleph = expr
- &l:foo ..= expr
- &l:foo += expr
- &l:foo -= expr
+ &l:aleph ..= expr
+ &l:aleph += expr
+ &l:aleph -= expr
- &g:foo = expr
+ &g:aleph = expr
- &g:foo ..= expr
- &g:foo += expr
- &g:foo -= expr
+ &g:aleph ..= expr
+ &g:aleph += expr
+ &g:aleph -= expr
[foo, bar] = expr
[foo,
\ bar] = expr
- [v:foo, v:bar] = expr
- [v:foo,
- \ v:bar] = expr
- [&foo, &bar] = expr
- [&foo,
- \ &bar] = expr
+ [v:true, v:false] = expr
+ [v:true,
+ \ v:false] = expr
+ [&ari, &bkc] = expr
+ [&ari,
+ \ &bkc] = expr
[$foo, $bar] = expr
[$foo,
\ $bar] = expr
@@ -155,18 +158,18 @@
[foo,
\ bar;
\ baz] = expr
- [v:foo, v:bar; v:baz] = expr
- [v:foo,
- \ v:bar;
- \ v:baz] = expr
+ [v:true, v:false; v:none] = expr
+ [v:true,
+ \ v:false;
+ \ v:none] = expr
[$foo, $bar; $baz] = expr
[$foo,
\ $bar;
\ $baz] = expr
- [&foo, &bar; &baz] = expr
- [&foo,
- \ &bar;
- \ &baz] = expr
+ [&ari, &bkc; &cmp] = expr
+ [&ari,
+ \ &bkc;
+ \ &cmp] = expr
[@a, @b; @c] = expr
[@a,
\ @b;
@@ -195,6 +198,28 @@
for [foo, bar] in expr
endfor
-enddef
+# Scope dictionaries
+
+echo get(b:, 'foo', 42)
+echo get(w:, 'foo', 42)
+echo get(t:, 'foo', 42)
+echo get(g:, 'foo', 42)
+echo get(v:, 'foo', 42)
+
+for k in keys(b:) | echo b:[k] | endfor
+for k in keys(w:) | echo w:[k] | endfor
+for k in keys(t:) | echo t:[k] | endfor
+for k in keys(g:) | echo g:[k] | endfor
+for k in keys(v:) | echo v:[k] | endfor
+
+# Neovim-specific variables (not highlighted by default)
+
+echo v:lua v:msgpack_types v:relnum v:stderr v:termrequest v:virtnum
+
+echo &channel &inccommand &mousescroll &pumblend &redrawdebug &scrollback
+echo &shada &shadafile &statuscolumn &termpastefilter &termsync &winbar
+echo &winblend &winhighlight
+
+enddef
diff --git a/runtime/syntax/testdir/input/vim9_expr.vim b/runtime/syntax/testdir/input/vim9_expr.vim
index fd9cbb0..fc94abd 100644
--- a/runtime/syntax/testdir/input/vim9_expr.vim
+++ b/runtime/syntax/testdir/input/vim9_expr.vim
@@ -2,6 +2,55 @@
# Vim9-script expressions
+# Dictionary
+
+echo {}
+echo { foo: 21 * 2 }
+echo { -foo-: 21 * 2 }
+echo { 42: 21 * 2 }
+echo { 'foo': 21 * 2 }
+echo { "foo": 21 * 2 }
+
+echo { foo: { bar: 21 * 2 } }
+echo { foo: { -bar-: 21 * 2 } }
+echo { foo: { 42: 21 * 2 } }
+echo { foo: { 'bar': 21 * 2 } }
+echo { foo: { "bar": 21 * 2 } }
+
+echo { -foo-: { bar: 21 * 2 } }
+echo { -foo-: { -bar-: 21 * 2 } }
+echo { -foo-: { 42: 21 * 2 } }
+echo { -foo-: { 'bar': 21 * 2 } }
+echo { -foo-: { "bar": 21 * 2 } }
+
+echo { 42: { bar: 21 * 2 } }
+echo { 42: { -bar-: 21 * 2 } }
+echo { 42: { 42: 21 * 2 } }
+echo { 42: { 'bar': 21 * 2 } }
+echo { 42: { "bar": 21 * 2 } }
+
+echo { 'foo': { bar: 21 * 2 } }
+echo { 'foo': { -bar-: 21 * 2 } }
+echo { 'foo': { 42: 21 * 2 } }
+echo { 'foo': { "bar": 21 * 2 } }
+echo { 'foo': { 'bar': 21 * 2 } }
+
+echo { "foo": { bar: 21 * 2 } }
+echo { "foo": { -bar-: 21 * 2 } }
+echo { "foo": { 42: 21 * 2 } }
+echo { "foo": { 'bar': 21 * 2 } }
+echo { "foo": { "bar": 21 * 2 } }
+
+echo {
+ # comment
+ foo: {
+ bar: 21 * 2
+ }
+}
+
+# match as keys not scope dictionaries
+echo { b: 42, w: 42, t: 42, g: 42, l: 42, s: 42, a: 42, v: 42 }
+
# Operators
# Ternary
diff --git a/runtime/syntax/testdir/input/vim9_variables.vim b/runtime/syntax/testdir/input/vim9_variables.vim
index 88dfb58..14b1d1d 100644
--- a/runtime/syntax/testdir/input/vim9_variables.vim
+++ b/runtime/syntax/testdir/input/vim9_variables.vim
@@ -11,7 +11,7 @@
t:foo = expr
w:foo = expr
-v:foo = expr
+v:true = expr
$FOO = expr
@@ -58,6 +58,9 @@
foo[1:] = expr
foo[:] = expr
+foo["key"] = expr
+foo['key'] = expr
+
foo += expr
foo -= expr
foo *= expr
@@ -106,36 +109,36 @@
@f = expr
@f ..= expr
-&foo = expr
+&ari = expr
&t_k1 = "\<Esc>[234;"
-&foo ..= expr
+&ari ..= expr
-&foo += expr
-&foo -= expr
+&ari += expr
+&ari -= expr
-&l:foo = expr
+&l:aleph = expr
-&l:foo ..= expr
-&l:foo += expr
-&l:foo -= expr
+&l:aleph ..= expr
+&l:aleph += expr
+&l:aleph -= expr
-&g:foo = expr
+&g:aleph = expr
-&g:foo ..= expr
-&g:foo += expr
-&g:foo -= expr
+&g:aleph ..= expr
+&g:aleph += expr
+&g:aleph -= expr
[foo, bar] = expr
[foo,
\ bar] = expr
-[v:foo, v:bar] = expr
-[v:foo,
- \ v:bar] = expr
-[&foo, &bar] = expr
-[&foo,
- \ &bar] = expr
+[v:true, v:false] = expr
+[v:true,
+ \ v:false] = expr
+[&ari, &bkc] = expr
+[&ari,
+ \ &bkc] = expr
[$foo, $bar] = expr
[$foo,
\ $bar] = expr
@@ -154,18 +157,18 @@
[foo,
\ bar;
\ baz] = expr
-[v:foo, v:bar; v:baz] = expr
-[v:foo,
- \ v:bar;
- \ v:baz] = expr
+[v:true, v:false; v:none] = expr
+[v:true,
+ \ v:false;
+ \ v:none] = expr
[$foo, $bar; $baz] = expr
[$foo,
\ $bar;
\ $baz] = expr
-[&foo, &bar; &baz] = expr
-[&foo,
- \ &bar;
- \ &baz] = expr
+[&ari, &bkc; &cmp] = expr
+[&ari,
+ \ &bkc;
+ \ &cmp] = expr
[@a, @b; @c] = expr
[@a,
\ @b;
@@ -195,3 +198,25 @@
for [foo, bar] in expr
endfor
+# Scope dictionaries
+
+echo get(b:, 'foo', 42)
+echo get(w:, 'foo', 42)
+echo get(t:, 'foo', 42)
+echo get(g:, 'foo', 42)
+echo get(v:, 'foo', 42)
+
+for k in keys(b:) | echo b:[k] | endfor
+for k in keys(w:) | echo w:[k] | endfor
+for k in keys(t:) | echo t:[k] | endfor
+for k in keys(g:) | echo g:[k] | endfor
+for k in keys(v:) | echo v:[k] | endfor
+
+# Neovim-specific variables (not highlighted by default)
+
+echo v:lua v:msgpack_types v:relnum v:stderr v:termrequest v:virtnum
+
+echo &channel &inccommand &mousescroll &pumblend &redrawdebug &scrollback
+echo &shada &shadafile &statuscolumn &termpastefilter &termsync &winbar
+echo &winblend &winhighlight
+
diff --git a/runtime/syntax/testdir/input/vim_ex_function.vim b/runtime/syntax/testdir/input/vim_ex_function.vim
index 1b78191..c09019e 100644
--- a/runtime/syntax/testdir/input/vim_ex_function.vim
+++ b/runtime/syntax/testdir/input/vim_ex_function.vim
@@ -163,6 +163,20 @@
return 42
endfunction
+
+" arguments
+
+function Foo(a, b, c)
+ echo a:a a:b a:c
+endfunction
+
+function Foo(...)
+ echo a:000
+ echo a:0
+ echo a:1 a:2 a:3 a:4 a:5 a:6 a:7 a:8 a:9 a:10 a:11 a:12 a:13 a:14 a:15 a:16 a:17 a:18 a:19 a:20
+endfunction
+
+
" Issue #16243 (vimscript def parameters syntax highlight is wrong)
function Test(lines = [line('.'), line('.')])
diff --git a/runtime/syntax/testdir/input/vim_ex_function_fold.vim b/runtime/syntax/testdir/input/vim_ex_function_fold.vim
index bd0cf61..1be9c25 100644
--- a/runtime/syntax/testdir/input/vim_ex_function_fold.vim
+++ b/runtime/syntax/testdir/input/vim_ex_function_fold.vim
@@ -166,6 +166,19 @@
endfunction
+" arguments
+
+function Foo(a, b, c)
+ echo a:a a:b a:c
+endfunction
+
+function Foo(...)
+ echo a:000
+ echo a:0
+ echo a:1 a:2 a:3 a:4 a:5 a:6 a:7 a:8 a:9 a:10 a:11 a:12 a:13 a:14 a:15 a:16 a:17 a:18 a:19 a:20
+endfunction
+
+
" comments
function Foo()
diff --git a/runtime/syntax/testdir/input/vim_expr.vim b/runtime/syntax/testdir/input/vim_expr.vim
index d71166d..9786ff8 100644
--- a/runtime/syntax/testdir/input/vim_expr.vim
+++ b/runtime/syntax/testdir/input/vim_expr.vim
@@ -100,6 +100,79 @@
" Issue #5830 (Incorrect syntax highlighting in Vim script when omitting space in list of string)
let l = ['a','b','c']
+" Dictionary
+
+echo {}
+echo { 'foo': 21 * 2 }
+echo { "foo": 21 * 2 }
+echo { 42: 21 * 2 }
+
+echo { "foo": { 'bar': 21 * 2 } }
+echo { "foo": { "bar": 21 * 2 } }
+echo { "foo": { 42: 21 * 2 } }
+echo { "foo": #{ bar: 21 * 2 } }
+echo { "foo": #{ -bar-: 21 * 2 } }
+echo { "foo": #{ 42: 21 * 2 } }
+
+echo { 'foo': { 'bar': 21 * 2 } }
+echo { 'foo': { "bar": 21 * 2 } }
+echo { 'foo': { 42: 21 * 2 } }
+echo { 'foo': #{ bar: 21 * 2 } }
+echo { 'foo': #{ -bar-: 21 * 2 } }
+echo { 'foo': #{ 42: 21 * 2 } }
+
+echo { 42: { 'bar': 21 * 2 } }
+echo { 42: { "bar": 21 * 2 } }
+echo { 42: { 42: 21 * 2 } }
+echo { 42: #{ bar: 21 * 2 } }
+echo { 42: #{ -bar-: 21 * 2 } }
+echo { 42: #{ 42: 21 * 2 } }
+
+echo {
+ "\ comment
+ \ "foo": { "bar": 21 * 2 }
+ \}
+
+" TODO: arbitrary expression keys
+
+" Literal Dictionary
+
+echo #{}
+echo #{ foo: 21 * 2 }
+echo #{ -foo-: 21 * 2 }
+echo #{ 42: 21 * 2 }
+
+echo #{ foo: #{ bar: 21 * 2 } }
+echo #{ foo: #{ -bar-: 21 * 2 } }
+echo #{ foo: #{ 42: 21 * 2 } }
+echo #{ foo: { "bar": 21 * 2 } }
+echo #{ foo: { 'bar': 21 * 2 } }
+echo #{ foo: { 42: 21 * 2 } }
+
+echo #{ -foo-: #{ bar: 21 * 2 } }
+echo #{ -foo-: #{ -bar-: 21 * 2 } }
+echo #{ -foo-: #{ 42: 21 * 2 } }
+echo #{ -foo-: { "bar": 21 * 2 } }
+echo #{ -foo-: { 'bar': 21 * 2 } }
+echo #{ -foo-: { 42: 21 * 2 } }
+
+echo #{ 42: #{ bar: 21 * 2 } }
+echo #{ 42: #{ -bar-: 21 * 2 } }
+echo #{ 42: #{ 42: 21 * 2 } }
+echo #{ 42: { "bar": 21 * 2 } }
+echo #{ 42: { 'bar': 21 * 2 } }
+echo #{ 42: { 42: 21 * 2 } }
+
+echo #{
+ "\ comment
+ \ foo: #{
+ \ bar: 21 * 2
+ \ }
+ \}
+
+" match as keys not scope dictionaries
+echo #{ b: 42, w: 42, t: 42, g: 42, l: 42, s: 42, a: 42, v: 42 }
+
" Register
echo @"
diff --git a/runtime/syntax/testdir/input/vim_function_variables.vim b/runtime/syntax/testdir/input/vim_function_variables.vim
index 9a9d4f9..490896d 100644
--- a/runtime/syntax/testdir/input/vim_function_variables.vim
+++ b/runtime/syntax/testdir/input/vim_function_variables.vim
@@ -32,8 +32,8 @@
let b:foo[1:] = expr
let b:foo[:] = expr
- let bfoo["key"] = expr
- let bfoo['key'] = expr
+ let b:foo["key"] = expr
+ let b:foo['key'] = expr
let b:foo += expr
let b:foo -= expr
@@ -103,25 +103,25 @@
let t:foo .= expr
let t:foo ..= expr
- let v:foo = expr
+ let v:true = expr
- let v:foo[0] = expr
+ let v:true[0] = expr
- let v:foo[1:2] = expr
- let v:foo[:2] = expr
- let v:foo[1:] = expr
- let v:foo[:] = expr
+ let v:true[1:2] = expr
+ let v:true[:2] = expr
+ let v:true[1:] = expr
+ let v:true[:] = expr
- let v:foo["key"] = expr
- let v:foo['key'] = expr
+ let v:true["key"] = expr
+ let v:true['key'] = expr
- let v:foo += expr
- let v:foo -= expr
- let v:foo *= expr
- let v:foo /= expr
- let v:foo %= expr
- let v:foo .= expr
- let v:foo ..= expr
+ let v:true += expr
+ let v:true -= expr
+ let v:true *= expr
+ let v:true /= expr
+ let v:true %= expr
+ let v:true .= expr
+ let v:true ..= expr
let w:foo = expr
@@ -151,38 +151,38 @@
let @f .= expr
let @f ..= expr
- let &foo = expr
+ let &ari = expr
let &t_k1 = "\<Esc>[234;"
- let &foo .= expr
- let &foo ..= expr
- let &foo += expr
- let &foo -= expr
+ let &ari .= expr
+ let &ari ..= expr
+ let &ari += expr
+ let &ari -= expr
- let &l:foo = expr
+ let &l:aleph = expr
- let &l:foo .= expr
- let &l:foo ..= expr
- let &l:foo += expr
- let &l:foo -= expr
+ let &l:aleph .= expr
+ let &l:aleph ..= expr
+ let &l:aleph += expr
+ let &l:aleph -= expr
- let &g:foo = expr
+ let &g:aleph = expr
- let &g:foo .= expr
- let &g:foo ..= expr
- let &g:foo += expr
- let &g:foo -= expr
+ let &g:aleph .= expr
+ let &g:aleph ..= expr
+ let &g:aleph += expr
+ let &g:aleph -= expr
let [foo, bar] = expr
let [foo,
\ bar] = expr
- let [v:foo, v:bar] = expr
- let [v:foo,
- \ v:bar] = expr
- let [&foo, &bar] = expr
- let [&foo,
- \ &bar] = expr
+ let [v:true, v:false] = expr
+ let [v:true,
+ \ v:false] = expr
+ let [&ari, &bkc] = expr
+ let [&ari,
+ \ &bkc] = expr
let [$foo, $bar] = expr
let [$foo,
\ $bar] = expr
@@ -199,18 +199,18 @@
let [foo,
\ bar;
\ baz] = expr
- let [v:foo, v:bar; v:baz] = expr
- let [v:foo,
- \ v:bar;
- \ v:baz] = expr
+ let [v:true, v:false; v:none] = expr
+ let [v:true,
+ \ v:false;
+ \ v:none] = expr
let [$foo, $bar; $baz] = expr
let [$foo,
\ $bar;
\ $baz] = expr
- let [&foo, &bar; &baz] = expr
- let [&foo,
- \ &bar;
- \ &baz] = expr
+ let [&ari, &bkc; &cmp] = expr
+ let [&ari,
+ \ &bkc;
+ \ &cmp] = expr
let [@a, @b; @c] = expr
let [@a,
\ @b;
@@ -380,5 +380,34 @@
unlockvar 2 foo | echo "Foo"
unlockvar 2 foo bar " comment
unlockvar 2 foo bar | echo "Foo"
+
+" Scope dictionaries
+
+echo get(b:, 'foo', 42)
+echo get(w:, 'foo', 42)
+echo get(t:, 'foo', 42)
+echo get(g:, 'foo', 42)
+echo get(l:, 'foo', 42)
+echo get(s:, 'foo', 42)
+echo get(a:, 'foo', 42)
+echo get(v:, 'foo', 42)
+
+for k in keys(b:) | echo b:[k] | endfor
+for k in keys(w:) | echo w:[k] | endfor
+for k in keys(t:) | echo t:[k] | endfor
+for k in keys(g:) | echo g:[k] | endfor
+for k in keys(l:) | echo l:[k] | endfor
+for k in keys(s:) | echo s:[k] | endfor
+for k in keys(a:) | echo a:[k] | endfor
+for k in keys(v:) | echo v:[k] | endfor
+
+" Neovim-specific variables (not highlighted by default)
+
+echo v:lua v:msgpack_types v:relnum v:stderr v:termrequest v:virtnum
+
+echo &channel &inccommand &mousescroll &pumblend &redrawdebug &scrollback
+echo &shada &shadafile &statuscolumn &termpastefilter &termsync &winbar
+echo &winblend &winhighlight
+
endfunction
diff --git a/runtime/syntax/testdir/input/vim_nvim_variables.vim b/runtime/syntax/testdir/input/vim_nvim_variables.vim
new file mode 100644
index 0000000..661d047
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim_nvim_variables.vim
@@ -0,0 +1,9 @@
+" Neovim variable highlighting
+" VIM_TEST_SETUP let g:vimsyn_vim_features = ["nvim"]
+
+echo v:lua v:msgpack_types v:relnum v:stderr v:termrequest v:virtnum
+
+echo &channel &inccommand &mousescroll &pumblend &redrawdebug &scrollback
+echo &shada &shadafile &statuscolumn &termpastefilter &termsync &winbar
+echo &winblend &winhighlight
+
diff --git a/runtime/syntax/testdir/input/vim_variables.vim b/runtime/syntax/testdir/input/vim_variables.vim
index af02fa8..da9e409 100644
--- a/runtime/syntax/testdir/input/vim_variables.vim
+++ b/runtime/syntax/testdir/input/vim_variables.vim
@@ -31,8 +31,8 @@
let b:foo[1:] = expr
let b:foo[:] = expr
-let bfoo["key"] = expr
-let bfoo['key'] = expr
+let b:foo["key"] = expr
+let b:foo['key'] = expr
let b:foo += expr
let b:foo -= expr
@@ -102,25 +102,25 @@
let t:foo .= expr
let t:foo ..= expr
-let v:foo = expr
+let v:true = expr
-let v:foo[0] = expr
+let v:true[0] = expr
-let v:foo[1:2] = expr
-let v:foo[:2] = expr
-let v:foo[1:] = expr
-let v:foo[:] = expr
+let v:true[1:2] = expr
+let v:true[:2] = expr
+let v:true[1:] = expr
+let v:true[:] = expr
-let v:foo["key"] = expr
-let v:foo['key'] = expr
+let v:true["key"] = expr
+let v:true['key'] = expr
-let v:foo += expr
-let v:foo -= expr
-let v:foo *= expr
-let v:foo /= expr
-let v:foo %= expr
-let v:foo .= expr
-let v:foo ..= expr
+let v:true += expr
+let v:true -= expr
+let v:true *= expr
+let v:true /= expr
+let v:true %= expr
+let v:true .= expr
+let v:true ..= expr
let w:foo = expr
@@ -150,38 +150,38 @@
let @f .= expr
let @f ..= expr
-let &foo = expr
+let &ari = expr
let &t_k1 = "\<Esc>[234;"
-let &foo .= expr
-let &foo ..= expr
-let &foo += expr
-let &foo -= expr
+let &ari .= expr
+let &ari ..= expr
+let &ari += expr
+let &ari -= expr
-let &l:foo = expr
+let &l:aleph = expr
-let &l:foo .= expr
-let &l:foo ..= expr
-let &l:foo += expr
-let &l:foo -= expr
+let &l:aleph .= expr
+let &l:aleph ..= expr
+let &l:aleph += expr
+let &l:aleph -= expr
-let &g:foo = expr
+let &g:aleph = expr
-let &g:foo .= expr
-let &g:foo ..= expr
-let &g:foo += expr
-let &g:foo -= expr
+let &g:aleph .= expr
+let &g:aleph ..= expr
+let &g:aleph += expr
+let &g:aleph -= expr
let [foo, bar] = expr
let [foo,
\ bar] = expr
-let [v:foo, v:bar] = expr
-let [v:foo,
- \ v:bar] = expr
-let [&foo, &bar] = expr
-let [&foo,
- \ &bar] = expr
+let [v:true, v:false] = expr
+let [v:true,
+ \ v:false] = expr
+let [&ari, &bkc] = expr
+let [&ari,
+ \ &bkc] = expr
let [$foo, $bar] = expr
let [$foo,
\ $bar] = expr
@@ -198,18 +198,18 @@
let [foo,
\ bar;
\ baz] = expr
-let [v:foo, v:bar; v:baz] = expr
-let [v:foo,
- \ v:bar;
- \ v:baz] = expr
+let [v:true, v:false; v:none] = expr
+let [v:true,
+ \ v:false;
+ \ v:none] = expr
let [$foo, $bar; $baz] = expr
let [$foo,
\ $bar;
\ $baz] = expr
-let [&foo, &bar; &baz] = expr
-let [&foo,
- \ &bar;
- \ &baz] = expr
+let [&ari, &bkc; &cmp] = expr
+let [&ari,
+ \ &bkc;
+ \ &cmp] = expr
let [@a, @b; @c] = expr
let [@a,
\ @b;
@@ -380,3 +380,31 @@
unlockvar 2 foo bar " comment
unlockvar 2 foo bar | echo "Foo"
+" Scope dictionaries
+
+echo get(b:, 'foo', 42)
+echo get(w:, 'foo', 42)
+echo get(t:, 'foo', 42)
+echo get(g:, 'foo', 42)
+echo get(l:, 'foo', 42)
+echo get(s:, 'foo', 42)
+echo get(a:, 'foo', 42)
+echo get(v:, 'foo', 42)
+
+for k in keys(b:) | echo b:[k] | endfor
+for k in keys(w:) | echo w:[k] | endfor
+for k in keys(t:) | echo t:[k] | endfor
+for k in keys(g:) | echo g:[k] | endfor
+for k in keys(l:) | echo l:[k] | endfor
+for k in keys(s:) | echo s:[k] | endfor
+for k in keys(a:) | echo a:[k] | endfor
+for k in keys(v:) | echo v:[k] | endfor
+
+" Neovim-specific variables (not highlighted by default)
+
+echo v:lua v:msgpack_types v:relnum v:stderr v:termrequest v:virtnum
+
+echo &channel &inccommand &mousescroll &pumblend &redrawdebug &scrollback
+echo &shada &shadafile &statuscolumn &termpastefilter &termsync &winbar
+echo &winblend &winhighlight
+
diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim
index ac295e0..4ccaa62 100644
--- a/runtime/syntax/vim.vim
+++ b/runtime/syntax/vim.vim
@@ -2,24 +2,30 @@
" Language: Vim script
" Maintainer: Hirohito Higashi <h.east.727 ATMARK gmail.com>
" Doug Kearns <dougkearns@gmail.com>
-" Last Change: 2025 Mar 06
+" Last Change: 2025 Mar 09
" Former Maintainer: Charles E. Campbell
" DO NOT CHANGE DIRECTLY.
" THIS FILE PARTLY GENERATED BY gen_syntax_vim.vim.
" (Search string "GEN_SYN_VIM:" in this file)
-" Automatically generated keyword lists: {{{1
-
-" Quit when a syntax file was already loaded {{{2
+" Quit when a syntax file was already loaded {{{1
if exists("b:current_syntax")
finish
endif
let s:keepcpo= &cpo
set cpo&vim
+" Feature testing {{{1
+
let s:vim9script = "\n" .. getline(1, 32)->join("\n") =~# '\n\s*vim9\%[script]\>'
+function s:has(feature)
+ return has(a:feature) || index(get(g:, "vimsyn_vim_features", []), a:feature) != -1
+endfunction
+
+" Automatically generated keyword lists: {{{1
+
" vimTodo: contains common special-notices for comments {{{2
" Use the vimCommentGroup cluster to add your own.
syn keyword vimTodo contained COMBAK FIXME TODO XXX
@@ -63,7 +69,6 @@
syn keyword vimOption contained invet invexpandtab invex invexrc invfic invfileignorecase invfixeol invfixendofline invfen invfoldenable invfs invfsync invgd invgdefault invguipty invhid invhidden invhk invhkmap invhkp invhkmapp invhls invhlsearch invicon invic invignorecase invimc invimcmdline invimd invimdisable invis invincsearch invinf invinfercase invim invinsertmode invjs invjoinspaces invlnr invlangnoremap invlrm invlangremap invlz invlazyredraw invlbr invlinebreak invlisp invlist invlpl invloadplugins invmagic invml invmodeline invmle invmodelineexpr invma invmodifiable invmod invmodified invmore invmousef invmousefocus invmh invmousehide invmousemev invmousemoveevent invnu invnumber invodev invopendevice invpaste invpi invpreserveindent invpvw invpreviewwindow
syn keyword vimOption contained invprompt invro invreadonly invrnu invrelativenumber invremap invrs invrestorescreen invri invrevins invrl invrightleft invru invruler invscb invscrollbind invscf invscrollfocus invsecure invssl invshellslash invstmp invshelltemp invsr invshiftround invsn invshortname invsc invshowcmd invsft invshowfulltag invsm invshowmatch invsmd invshowmode invscs invsmartcase invsi invsmartindent invsta invsmarttab invsms invsmoothscroll invspell invsb invsplitbelow invspr invsplitright invsol invstartofline invswf invswapfile invtbs invtagbsearch invtr invtagrelative invtgst invtagstack invtbidi invtermbidi invtgc invtermguicolors invterse invta invtextauto invtx invtextmode invtop invtildeop invto invtimeout invtitle invttimeout invtbi invttybuiltin
syn keyword vimOption contained invtf invttyfast invudf invundofile invvb invvisualbell invwarn invwiv invweirdinvert invwic invwildignorecase invwmnu invwildmenu invwfb invwinfixbuf invwfh invwinfixheight invwfw invwinfixwidth invwrap invws invwrapscan invwrite invwa invwriteany invwb invwritebackup invxtermcodes
-
" termcap codes (which can also be set) {{{2
" GEN_SYN_VIM: vimOption term output code, START_STR='syn keyword vimOption contained', END_STR='skipwhite nextgroup=vimSetEqual,vimSetMod'
syn keyword vimOption contained t_AB t_AF t_AU t_AL t_al t_bc t_BE t_BD t_cd t_ce t_Ce t_CF t_cl t_cm t_Co t_CS t_Cs t_cs t_CV t_da t_db t_DL t_dl t_ds t_Ds t_EC t_EI t_fs t_fd t_fe t_GP t_IE t_IS t_ke t_ks t_le t_mb t_md t_me t_mr t_ms t_nd t_op t_RF t_RB t_RC t_RI t_Ri t_RK t_RS t_RT t_RV t_Sb t_SC t_se t_Sf t_SH t_SI t_Si t_so t_SR t_sr t_ST t_Te t_te t_TE t_ti t_TI t_Ts t_ts t_u7 t_ue t_us t_Us t_ut t_vb t_ve t_vi t_VS t_vs t_WP t_WS t_XM t_xn t_xs t_ZH t_ZR t_8f t_8b t_8u t_xo skipwhite nextgroup=vimSetEqual,vimSetMod
@@ -78,6 +83,29 @@
syn match vimOption contained "t_%i"
syn match vimOption contained "t_k;"
+" vimOptions: These are the variable names {{{2
+" GEN_SYN_VIM: vimOption normal variable, START_STR='syn keyword vimOptionVarName contained', END_STR=''
+syn keyword vimOptionVarName contained al aleph ari allowrevins ambw ambiwidth arab arabic arshape arabicshape acd autochdir ai autoindent ar autoread asd autoshelldir aw autowrite awa autowriteall bg background bs backspace bk backup bkc backupcopy bdir backupdir bex backupext bsk backupskip bdlay balloondelay beval ballooneval bevalterm balloonevalterm bexpr balloonexpr bo belloff bin binary bomb brk breakat bri breakindent briopt breakindentopt bsdir browsedir bh bufhidden bl buflisted bt buftype cmp casemap cdh cdhome cd cdpath cedit ccv charconvert cin cindent cink cinkeys cino cinoptions cinsd cinscopedecls cinw cinwords cb clipboard ch cmdheight cwh cmdwinheight cc colorcolumn co columns com comments cms commentstring cp compatible cpt complete cfu completefunc
+syn keyword vimOptionVarName contained cfc completefuzzycollect cia completeitemalign cot completeopt cpp completepopup csl completeslash cocu concealcursor cole conceallevel cf confirm ci copyindent cpo cpoptions cm cryptmethod cspc cscopepathcomp csprg cscopeprg csqf cscopequickfix csre cscoperelative cst cscopetag csto cscopetagorder csverb cscopeverbose crb cursorbind cuc cursorcolumn cul cursorline culopt cursorlineopt debug def define deco delcombine dict dictionary diff dex diffexpr dip diffopt dg digraph dir directory dy display ead eadirection ed edcompatible emo emoji enc encoding eof endoffile eol endofline ea equalalways ep equalprg eb errorbells ef errorfile efm errorformat ek esckeys ei eventignore eiw eventignorewin et expandtab ex exrc fenc fileencoding
+syn keyword vimOptionVarName contained fencs fileencodings ff fileformat ffs fileformats fic fileignorecase ft filetype fcs fillchars ffu findfunc fixeol fixendofline fcl foldclose fdc foldcolumn fen foldenable fde foldexpr fdi foldignore fdl foldlevel fdls foldlevelstart fmr foldmarker fdm foldmethod fml foldminlines fdn foldnestmax fdo foldopen fdt foldtext fex formatexpr flp formatlistpat fo formatoptions fp formatprg fs fsync gd gdefault gfm grepformat gp grepprg gcr guicursor gfn guifont gfs guifontset gfw guifontwide ghr guiheadroom gli guiligatures go guioptions guipty gtl guitablabel gtt guitabtooltip hf helpfile hh helpheight hlg helplang hid hidden hl highlight hi history hk hkmap hkp hkmapp hls hlsearch icon iconstring ic ignorecase imaf imactivatefunc
+syn keyword vimOptionVarName contained imak imactivatekey imc imcmdline imd imdisable imi iminsert ims imsearch imsf imstatusfunc imst imstyle inc include inex includeexpr is incsearch inde indentexpr indk indentkeys inf infercase im insertmode isf isfname isi isident isk iskeyword isp isprint js joinspaces jop jumpoptions key kmp keymap km keymodel kpc keyprotocol kp keywordprg lmap langmap lm langmenu lnr langnoremap lrm langremap ls laststatus lz lazyredraw lbr linebreak lines lsp linespace lisp lop lispoptions lw lispwords list lcs listchars lpl loadplugins luadll magic mef makeef menc makeencoding mp makeprg mps matchpairs mat matchtime mco maxcombine mfd maxfuncdepth mmd maxmapdepth mm maxmem mmp maxmempattern mmt maxmemtot mis menuitems mopt messagesopt
+syn keyword vimOptionVarName contained msm mkspellmem ml modeline mle modelineexpr mls modelines ma modifiable mod modified more mouse mousef mousefocus mh mousehide mousem mousemodel mousemev mousemoveevent mouses mouseshape mouset mousetime mzq mzquantum mzschemedll mzschemegcdll nf nrformats nu number nuw numberwidth ofu omnifunc odev opendevice opfunc operatorfunc pp packpath para paragraphs paste pt pastetoggle pex patchexpr pm patchmode pa path perldll pi preserveindent pvh previewheight pvp previewpopup pvw previewwindow pdev printdevice penc printencoding pexpr printexpr pfn printfont pheader printheader pmbcs printmbcharset pmbfn printmbfont popt printoptions prompt ph pumheight pw pumwidth pythondll pythonhome pythonthreedll pythonthreehome pyx pyxversion
+syn keyword vimOptionVarName contained qftf quickfixtextfunc qe quoteescape ro readonly rdt redrawtime re regexpengine rnu relativenumber remap rop renderoptions report rs restorescreen ri revins rl rightleft rlc rightleftcmd rubydll ru ruler ruf rulerformat rtp runtimepath scr scroll scb scrollbind scf scrollfocus sj scrolljump so scrolloff sbo scrollopt sect sections secure sel selection slm selectmode ssop sessionoptions sh shell shcf shellcmdflag sp shellpipe shq shellquote srr shellredir ssl shellslash stmp shelltemp st shelltype sxe shellxescape sxq shellxquote sr shiftround sw shiftwidth shm shortmess sn shortname sbr showbreak sc showcmd sloc showcmdloc sft showfulltag sm showmatch smd showmode stal showtabline ss sidescroll siso sidescrolloff scl signcolumn
+syn keyword vimOptionVarName contained scs smartcase si smartindent sta smarttab sms smoothscroll sts softtabstop spell spc spellcapcheck spf spellfile spl spelllang spo spelloptions sps spellsuggest sb splitbelow spk splitkeep spr splitright sol startofline stl statusline su suffixes sua suffixesadd swf swapfile sws swapsync swb switchbuf smc synmaxcol syn syntax tcl tabclose tal tabline tpm tabpagemax ts tabstop tbs tagbsearch tc tagcase tfu tagfunc tl taglength tr tagrelative tag tags tgst tagstack tcldll term tbidi termbidi tenc termencoding tgc termguicolors twk termwinkey twsl termwinscroll tws termwinsize twt termwintype terse ta textauto tx textmode tw textwidth tsr thesaurus tsrfu thesaurusfunc top tildeop to timeout tm timeoutlen title titlelen titleold
+syn keyword vimOptionVarName contained titlestring tb toolbar tbis toolbariconsize ttimeout ttm ttimeoutlen tbi ttybuiltin tf ttyfast ttym ttymouse tsl ttyscroll tty ttytype udir undodir udf undofile ul undolevels ur undoreload uc updatecount ut updatetime vsts varsofttabstop vts vartabstop vbs verbose vfile verbosefile vdir viewdir vop viewoptions vi viminfo vif viminfofile ve virtualedit vb visualbell warn wiv weirdinvert ww whichwrap wc wildchar wcm wildcharm wig wildignore wic wildignorecase wmnu wildmenu wim wildmode wop wildoptions wak winaltkeys wcr wincolor wi window wfb winfixbuf wfh winfixheight wfw winfixwidth wh winheight wmh winminheight wmw winminwidth winptydll wiw winwidth wrap wm wrapmargin ws wrapscan write wa writeany wb writebackup wd writedelay
+syn keyword vimOptionVarName contained xtermcodes
+" GEN_SYN_VIM: vimOption term output code variable, START_STR='syn keyword vimOptionVarName contained', END_STR=''
+syn keyword vimOptionVarName contained t_AB t_AF t_AU t_AL t_al t_bc t_BE t_BD t_cd t_ce t_Ce t_CF t_cl t_cm t_Co t_CS t_Cs t_cs t_CV t_da t_db t_DL t_dl t_ds t_Ds t_EC t_EI t_fs t_fd t_fe t_GP t_IE t_IS t_ke t_ks t_le t_mb t_md t_me t_mr t_ms t_nd t_op t_RF t_RB t_RC t_RI t_Ri t_RK t_RS t_RT t_RV t_Sb t_SC t_se t_Sf t_SH t_SI t_Si t_so t_SR t_sr t_ST t_Te t_te t_TE t_ti t_TI t_Ts t_ts t_u7 t_ue t_us t_Us t_ut t_vb t_ve t_vi t_VS t_vs t_WP t_WS t_XM t_xn t_xs t_ZH t_ZR t_8f t_8b t_8u t_xo
+syn keyword vimOptionVarName contained t_F1 t_F2 t_F3 t_F4 t_F5 t_F6 t_F7 t_F8 t_F9 t_k1 t_K1 t_k2 t_k3 t_K3 t_k4 t_K4 t_k5 t_K5 t_k6 t_K6 t_k7 t_K7 t_k8 t_K8 t_k9 t_K9 t_KA t_kb t_kB t_KB t_KC t_kd t_kD t_KD t_KE t_KF t_KG t_kh t_KH t_kI t_KI t_KJ t_KK t_kl t_KL t_kN t_kP t_kr t_ku
+syn match vimOptionVarName contained "t_%1"
+syn match vimOptionVarName contained "t_#2"
+syn match vimOptionVarName contained "t_#4"
+syn match vimOptionVarName contained "t_@7"
+syn match vimOptionVarName contained "t_*7"
+syn match vimOptionVarName contained "t_&8"
+syn match vimOptionVarName contained "t_%i"
+syn match vimOptionVarName contained "t_k;"
+
" unsupported settings: some were supported by vi but don't do anything in vim {{{2
" GEN_SYN_VIM: Missing vimOption, START_STR='syn keyword vimErrSetting contained', END_STR=''
syn keyword vimErrSetting contained akm altkeymap anti antialias ap autoprint bf beautify biosk bioskey consk conskey fk fkmap fl flash gr graphic ht hardtabs macatsui mesg novice open opt optimize oft osfiletype redraw slow slowopen sourceany w1200 w300 w9600
@@ -110,10 +138,22 @@
syn keyword vimFuncName contained spellsuggest split sqrt srand state str2blob str2float str2list str2nr strcharlen strcharpart strchars strdisplaywidth strftime strgetchar stridx string strlen strpart strptime strridx strtrans strutf16len strwidth submatch substitute swapfilelist swapinfo swapname synID synIDattr synIDtrans synconcealed synstack system systemlist tabpagebuflist tabpagenr tabpagewinnr tagfiles taglist tan tanh tempname term_dumpdiff term_dumpload term_dumpwrite term_getaltscreen term_getansicolors term_getattr term_getcursor term_getjob term_getline term_getscrolled term_getsize term_getstatus term_gettitle term_gettty term_list term_scrape term_sendkeys term_setansicolors term_setapi term_setkill term_setrestore term_setsize term_start term_wait
syn keyword vimFuncName contained terminalprops test_alloc_fail test_autochdir test_feedinput test_garbagecollect_now test_garbagecollect_soon test_getvalue test_gui_event test_ignore_error test_mswin_event test_null_blob test_null_channel test_null_dict test_null_function test_null_job test_null_list test_null_partial test_null_string test_option_not_set test_override test_refcount test_setmouse test_settime test_srand_seed test_unknown test_void timer_info timer_pause timer_start timer_stop timer_stopall tolower toupper tr trim trunc type typename undofile undotree uniq utf16idx values virtcol virtcol2col visualmode wildmenumode win_execute win_findbuf win_getid win_gettype win_gotoid win_id2tabwin win_id2win win_move_separator win_move_statusline win_screenpos
syn keyword vimFuncName contained win_splitmove winbufnr wincol windowsversion winheight winlayout winline winnr winrestcmd winrestview winsaveview winwidth wordcount writefile xor
+" Predefined variable names {{{2
+" GEN_SYN_VIM: vimVarName, START_STR='syn keyword vimVimVarName contained', END_STR=''
+syn keyword vimVimVarName contained count count1 prevcount errmsg warningmsg statusmsg shell_error this_session version lnum termresponse fname lang lc_time ctype charconvert_from charconvert_to fname_in fname_out fname_new fname_diff cmdarg foldstart foldend folddashes foldlevel progname servername dying exception throwpoint register cmdbang insertmode val key profiling fcs_reason fcs_choice beval_bufnr beval_winnr beval_winid beval_lnum beval_col beval_text scrollstart swapname swapchoice swapcommand char mouse_win mouse_winid mouse_lnum mouse_col operator searchforward hlsearch oldfiles windowid progpath completed_item option_new option_old option_oldlocal option_oldglobal option_command option_type errors false true none null numbermax numbermin numbersize
+syn keyword vimVimVarName contained vim_did_enter testing t_number t_string t_func t_list t_dict t_float t_bool t_none t_job t_channel t_blob t_class t_object termrfgresp termrbgresp termu7resp termstyleresp termblinkresp event versionlong echospace argv collate exiting colornames sizeofint sizeoflong sizeofpointer maxcol python3_version t_typealias t_enum t_enumvalue stacktrace
-"--- syntax here and above generated by mkvimvim ---
+"--- syntax here and above generated by runtime/syntax/generator/gen_syntax_vim.vim ---
+
" Special Vim Highlighting (not automatic) {{{1
+" Neovim keyword list additions {{{2
+
+if s:has("nvim")
+ syn keyword vimOptionVarName contained channel inccommand mousescroll pumblend redrawdebug scrollback shada shadafile statuscolumn termpastefilter termsync winbar winblend winhighlight
+ syn keyword vimVimVarName contained lua msgpack_types relnum stderr termrequest virtnum
+endif
+
" Set up commands for this syntax highlighting file {{{2
com! -nargs=* Vim9 execute <q-args> s:vim9script ? "" : "contained"
@@ -251,14 +291,17 @@
syn region vimSubscript contained matchgroup=vimSubscriptBracket start="\[" end="]" nextgroup=vimSubscript contains=@vimExprList
syn match vimVar contained "\<\h[a-zA-Z0-9#_]*\>" nextgroup=vimSubscript contains=vim9Super,vim9This
-syn match vimVar "\<[bwglstav]:\h[a-zA-Z0-9#_]*\>" nextgroup=vimSubscript
-syn match vimVar "\<a:\%(000\|\d\+\)\>" nextgroup=vimSubscript
-syn match vimFBVar contained "\<[bwglsta]:\h[a-zA-Z0-9#_]*\>" nextgroup=vimSubscript
+syn match vimVar "\<[bwglstav]:\h[a-zA-Z0-9#_]*\>" nextgroup=vimSubscript contains=vimVarScope
+syn match vimVar "\<a:\%(000\|1\=[0-9]\|20\)\>" nextgroup=vimSubscript contains=vimVarScope
+syn match vimFBVar contained "\<[bwglsta]:\h[a-zA-Z0-9#_]*\>" nextgroup=vimSubscript contains=vimVarScope
-syn match vimVimVar "\<v:\h\w*\>" nextgroup=vimSubscript
-syn match vimOptionVar "&\%([lg]:\)\=\a\+\>" nextgroup=vimSubscript
-syn match vimOptionVar "&t_\S[a-zA-Z0-9]\>" nextgroup=vimSubscript
-syn match vimOptionVar "&t_k;" nextgroup=vimSubscript
+" match the scope prefix independently of the retrofitted scope dictionary
+syn match vimVarScope contained "\<[bwglstav]:"
+syn match vimVimVar contained "\<[bwglstav]:\%(\h\|\d\)\@!" nextgroup=vimSubscript
+
+syn match vimVarNameError contained "\<\h\w*\>"
+syn match vimVimVar "\<v:" nextgroup=vimSubscript,vimVimVarName,vimVarNameError
+syn match vimOptionVar "&\%([lg]:\)\=" nextgroup=vimSubscript,vimOptionVarName,vimVarNameError
syn cluster vimSpecialVar contains=vimEnvvar,vimLetRegister,vimOptionVar,vimVimVar
Vim9 syn match vim9LhsVariable "\s\=\h[a-zA-Z0-9#_]*\ze\s\+[-+/*%]\=="
@@ -779,7 +822,7 @@
syn region vimUnletVars contained
\ start="$\I\|\h" skip=+\n\s*\\\|\n\s*"\\ \|^\s*"\\ + end="$" end="\ze[|"]"
\ nextgroup=vimCmdSep,vimComment
- \ contains=@vimContinue,vimEnvvar,vimVar
+ \ contains=@vimContinue,vimEnvvar,vimVar,vimVimVar
VimFoldh syn region vimLetHereDoc matchgroup=vimLetHereDocStart start='\%(^\z(\s*\)\S.*\)\@<==<<\s*trim\%(\s\+\)\@>\z(\L\S*\)' matchgroup=vimLetHereDocStop end='^\z1\=\z2$' extend
VimFoldh syn region vimLetHereDoc matchgroup=vimLetHereDocStart start='=<<\%(\s*\)\@>\z(\L\S*\)' matchgroup=vimLetHereDocStop end='^\z1$' extend
@@ -1497,7 +1540,7 @@
hi def link vimFuncMod Special
hi def link vimFuncParam vimVar
hi def link vimFuncParamEquals vimOper
- hi def link vimFuncScope vimVar
+ hi def link vimFuncScope vimVarScope
hi def link vimFuncSID vimNotation
hi def link vimGroupAdd vimSynOption
hi def link vimGroupName vimGroup
@@ -1567,7 +1610,7 @@
hi def link vimOperContinueComment vimContinueComment
hi def link vimOption PreProc
hi def link vimOptionVar Identifier
- hi def link vimVimVar Identifier
+ hi def link vimOptionVarName Identifier
hi def link vimParenSep Delimiter
hi def link vimPatSepErr vimError
hi def link vimPatSepR vimPatSep
@@ -1651,6 +1694,9 @@
hi def link vimUserCmdKey vimCommand
hi def link vimUserFunc Normal
hi def link vimVar Normal
+ hi def link vimVarScope Identifier
+ hi def link vimVimVar Identifier
+ hi def link vimVimVarName Identifier
hi def link vimWarn WarningMsg
hi def link vim9Abstract vimCommand