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