runtime(vim): Update base-syntax, improve variable matching

- Match variables after operators, including line continuations.
- Match option variables without leading whitespace.
- Explicitly match expression subscripts.
- Match Vim9 variables in LHS of assignments and method calls.
- Match option variables (&option) with a dedicated syntax group like
  environment variables.
- Match list literals, fixes: #5830
- Match :{un}lockvar arguments.
- Match registers and environment variables in :let unpack lists.
- Match lambda expressions
- Match Vim9 scope blocks
- Match variables in :for subject
- Highlight user variables with Normal
- Improve this/super keyword matching, fixes: #15970

closes: #16476

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/runtime/syntax/generator/vim.vim.base b/runtime/syntax/generator/vim.vim.base
index c30034c..452cec2 100644
--- a/runtime/syntax/generator/vim.vim.base
+++ b/runtime/syntax/generator/vim.vim.base
@@ -2,7 +2,7 @@
 " Language:	   Vim script
 " Maintainer:	   Hirohito Higashi <h.east.727 ATMARK gmail.com>
 "	   Doug Kearns <dougkearns@gmail.com>
-" Last Change:	   2025 Feb 03
+" Last Change:	   2025 Feb 08
 " Former Maintainer: Charles E. Campbell
 
 " DO NOT CHANGE DIRECTLY.
@@ -192,32 +192,51 @@
 " Numbers {{{2
 " =======
 syn case ignore
-syn match	vimNumber	'\<\d\+\%(\.\d\+\%(e[+-]\=\d\+\)\=\)\='	skipwhite nextgroup=vimGlobal,vimSubst1,@vimComment
-syn match	vimNumber	'\<0b[01]\+'			skipwhite nextgroup=vimGlobal,vimSubst1,@vimComment
-syn match	vimNumber	'\<0o\=\o\+'			skipwhite nextgroup=vimGlobal,vimSubst1,@vimComment
-syn match	vimNumber	'\<0x\x\+'			skipwhite nextgroup=vimGlobal,vimSubst1,@vimComment
+syn match	vimNumber	'\<\d\+'			skipwhite nextgroup=vimGlobal,vimSubst1,@vimComment,vimSubscript
+syn match	vimNumber	'\<\d\+\.\d\+\%(e[+-]\=\d\+\)\='		skipwhite nextgroup=vimGlobal,vimSubst1,@vimComment
+syn match	vimNumber	'\<0b[01]\+'			skipwhite nextgroup=vimGlobal,vimSubst1,@vimComment,vimSubscript
+syn match	vimNumber	'\<0o\=\o\+'			skipwhite nextgroup=vimGlobal,vimSubst1,@vimComment,vimSubscript
+syn match	vimNumber	'\<0x\x\+'			skipwhite nextgroup=vimGlobal,vimSubst1,@vimComment,vimSubscript
 syn match	vimNumber	'\<0z\>'			skipwhite nextgroup=vimGlobal,vimSubst1,@vimComment
-syn match	vimNumber	'\<0z\%(\x\x\)\+\%(\.\%(\x\x\)\+\)*'	skipwhite nextgroup=vimGlobal,vimSubst1,@vimComment
+syn match	vimNumber	'\<0z\%(\x\x\)\+\%(\.\%(\x\x\)\+\)*'	skipwhite nextgroup=vimGlobal,vimSubst1,@vimComment,vimSubscript
 syn match	vimNumber	'\%(^\|\A\)\zs#\x\{6}'		skipwhite nextgroup=vimGlobal,vimSubst1,@vimComment
 syn case match
 
 " All vimCommands are contained by vimIsCommand. {{{2
-syn cluster vimCmdList	contains=vimAbb,vimAddress,vimAutoCmd,vimAugroup,vimBehave,vimCall,vimCatch,vimConst,vimDebuggreedy,vimDef,vimDefFold,vimDelcommand,@vimEcho,vimEnddef,vimEndfunction,vimExecute,vimIsCommand,vimExtCmd,vimFor,vimFunction,vimFuncFold,vimGlobal,vimHighlight,vimLet,vimLoadkeymap,vimMap,vimMark,vimMatch,vimNotFunc,vimNormal,vimSet,vimSleep,vimSyntax,vimThrow,vimUnlet,vimUnmap,vimUserCmd,vimMenu,vimMenutranslate,@vim9CmdList
+syn cluster vimCmdList	contains=vimAbb,vimAddress,vimAutoCmd,vimAugroup,vimBehave,vimCall,vimCatch,vimConst,vimDebuggreedy,vimDef,vimDefFold,vimDelcommand,@vimEcho,vimEnddef,vimEndfunction,vimExecute,vimIsCommand,vimExtCmd,vimFor,vimFunction,vimFuncFold,vimGlobal,vimHighlight,vimLet,vimLoadkeymap,vimLockvar,vimMap,vimMark,vimMatch,vimNotFunc,vimNormal,vimSet,vimSleep,vimSyntax,vimThrow,vimUnlet,vimUnlockvar,vimUnmap,vimUserCmd,vimMenu,vimMenutranslate,@vim9CmdList
 syn cluster vim9CmdList	contains=vim9Abstract,vim9Class,vim9Const,vim9Enum,vim9Export,vim9Final,vim9For,vim9Interface,vim9Type,vim9Var
 syn match vimCmdSep	"[:|]\+"	skipwhite nextgroup=@vimCmdList,vimSubst1
 syn match vimCount	contained	"\d\+"
 syn match vimIsCommand	"\<\%(\h\w*\|[23]mat\%[ch]\)\>"	 nextgroup=vimBang contains=vimCommand
 syn match vimBang	      contained	"!"
-syn match vimVar	      contained	"\<\h[a-zA-Z0-9#_]*\>"
-syn match vimVar		"\<[bwglstav]:\h[a-zA-Z0-9#_]*\>"
-syn match vimVar	      	"\s\zs&\%([lg]:\)\=\a\+\>"
-syn match vimVar		"\s\zs&t_\S[a-zA-Z0-9]\>"
-syn match vimVar        	"\s\zs&t_k;"
-syn match vimFBVar      contained   "\<[bwglstav]:\h[a-zA-Z0-9#_]*\>"
-syn keyword vimCommand  contained	in
 
-syn cluster vimExprList	contains=vimEnvvar,vimFunc,vimNumber,vimOper,vimOperParen,vimLetRegister,vimString,vimVar,@vim9ExprList
-syn cluster vim9ExprList	contains=vim9Boolean,vim9Null
+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 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
+syn cluster vimSpecialVar	contains=vimEnvvar,vimLetRegister,vimOptionVar,vimVimVar
+
+Vim9 syn match vim9LhsVariable	"\s\=\h[a-zA-Z0-9#_]*\ze\s\+[-+/*%]\=="
+Vim9 syn match vim9LhsVariable	"\s\=\h[a-zA-Z0-9#_]*\ze\s\+\.\.="
+Vim9 syn match vim9LhsVariable	"\s\=\h[a-zA-Z0-9#_]*\ze\s\+=<<"
+Vim9 syn match vim9LhsVariable	"\s\=\h[a-zA-Z0-9#_]*\ze\s*->"		contains=vim9Super,vim9This
+Vim9 syn match vim9LhsVariable	"\s\=\h[a-zA-Z0-9#_]*\ze\["	nextgroup=vimSubscript
+Vim9 syn match vim9LhsVariable	"\s\=\h[a-zA-Z0-9#_]*\ze\."	nextgroup=vimOper contains=vim9Super,vim9This
+
+Vim9 syn match vim9LhsVariableList	"\[\_[^]]\+]\ze\s\+[-+/*%]\=="	contains=vimVar,@vimSpecialVar
+Vim9 syn match vim9LhsVariableList	"\[\_[^]]\+]\ze\s\+\.\.="	contains=vimVar,@vimSpecialVar
+
+Vim9 syn match vim9LhsRegister	"@["0-9\-a-zA-Z#=*+_/]\ze\s\+\%(\.\.\)\=="
+
+syn cluster vimExprList	contains=@vimSpecialVar,vimFunc,vimNumber,vimOper,vimOperParen,vimLambda,vimString,vimVar,@vim9ExprList
+syn cluster vim9ExprList	contains=vim9Boolean,vim9LambdaParams,vim9Null
 
 " Insertions And Appends: insert append {{{2
 "   (buftype != nofile test avoids having append, change, insert show up in the command window)
@@ -268,7 +287,7 @@
 
 " Augroup : vimAugroupError removed because long augroups caused sync'ing problems. {{{2
 " ======= : Trade-off: Increasing synclines with slower editing vs augroup END error checking.
-syn cluster vimAugroupList	contains=@vimCmdList,vimFilter,vimFunc,vimLineComment,vimSpecFile,vimOper,vimNumber,vimOperParen,@vimComment,vimString,vimSubst,vimRegister,vimCmplxRepeat,vimNotation,vimCtrlChar,vimFuncVar,vimContinue
+syn cluster vimAugroupList	contains=@vimCmdList,vimFilter,vimFunc,vimLineComment,vimSpecFile,vimOper,vimNumber,vimOperParen,@vimComment,vimString,vimSubst,vimRegister,vimCmplxRepeat,vimNotation,vimCtrlChar,vimContinue
 syn match   vimAugroup	"\<aug\%[roup]\>" contains=vimAugroupKey,vimAugroupBang skipwhite nextgroup=vimAugroupBang,vimAutoCmdGroup
 if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'a'
   syn region  vimAugroup  fold	start="\<aug\%[roup]\>\ze\s\+\%([eE][nN][dD]\)\@!\S\+" matchgroup=vimAugroupKey end="\<aug\%[roup]\>\ze\s\+[eE][nN][dD]\>" contains=vimAutoCmd,@vimAugroupList,vimAugroupkey skipwhite nextgroup=vimAugroupEnd
@@ -286,31 +305,64 @@
 
 " Operators: {{{2
 " =========
-syn cluster	vimOperGroup	contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimRegister,@vimContinue,vim9Comment,vimVar,vimBoolean,vimNull
-syn match	vimOper	"\a\@<!!"			skipwhite nextgroup=vimString,vimSpecFile
-syn match	vimOper	"||\|&&\|[-+*/%.]"		skipwhite nextgroup=vimString,vimSpecFile
-syn match	vimOper	"?"			skipwhite nextgroup=@vimExprList
+syn cluster	vimOperGroup	contains=@vimSpecialVar,vimFunc,vimLambda,vimOper,vimOperParen,vimNumber,vimString,vimRegister,@vimContinue,vim9Comment,vimVar,vimBoolean,vim9LambdaParams,vimNull
+syn match	vimOper	"\a\@<!!"			skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList,vimSpecFile
+syn match	vimOper	"||\|&&\|[-+*/%.]"		skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList,vimSpecFile
+syn match	vimOper	"?"			skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList
 " distinguish ternary : from ex-colon
-syn match	vimOper	"\s\@1<=:\ze\s\|\s\@1<=:$"		skipwhite nextgroup=@vimExprList
-syn match	vimOper	"??"			skipwhite nextgroup=@vimExprList
-syn match	vimOper	"="			skipwhite nextgroup=vimString,vimSpecFile
-syn match	vimOper	"\%#=1\%(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\)[?#]\="	skipwhite nextgroup=vimString,vimSpecFile
-syn match	vimOper	"\<is\%(not\)\=\>"		skipwhite nextgroup=vimString,vimSpecFile
-syn match	vimOper	"\<is\%(not\)\=[?#]"		skipwhite nextgroup=vimString,vimSpecFile
-syn region	vimOperParen 	matchgroup=vimParenSep	start="(" end=")" contains=@vimOperGroup
-syn region	vimOperParen	matchgroup=vimSep		start="#\={" end="}" contains=@vimOperGroup nextgroup=vimVar,vimFuncVar
+syn match	vimOper	"\s\@1<=:\ze\s\|\s\@1<=:$"		skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList
+syn match	vimOper	"??"			skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList
+syn match	vimOper	"="			skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList,vimSpecFile
+syn match	vimOper	"\%#=1\%(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\)[?#]\="	skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList,vimSpecFile
+syn match	vimOper	"\<is\%(not\)\=\>"		skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList,vimSpecFile
+syn match	vimOper	"\<is\%(not\)\=[?#]"		skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList,vimSpecFile
+syn region	vimOperParen 		matchgroup=vimParenSep start="("    end=")" contains=@vimOperGroup nextgroup=vimSubscript
+syn region	vimOperParen		matchgroup=vimSep	     start="#\={" end="}" contains=@vimOperGroup nextgroup=vimSubscript,vimVar
+syn region	vimOperParen	contained	matchgroup=vimSep	     start="\["	end="]" contains=@vimOperGroup nextgroup=vimSubscript,vimVar
 if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noopererror")
  syn match	vimOperError	")"
 endif
 
+syn match	vimOperContinue		contained	"^\s*\zs\\"	 skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList
+syn match         vimOperContinueComment	contained	'^\s*\zs["#]\\ .*' skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList
+syn cluster	vimOperContinue		contains=vimOperContinue,vimOperContinueComment
+
+" Lambda Expressions: {{{2
+" ==================
+syn match	vimLambdaOperator	contained	"->" skipwhite nextgroup=@vimExprList
+syn region	vimLambda	contained	matchgroup=Delimiter start="{\ze[[:space:][:alnum:]_.,]*->" end="}" end="$" skip=+\s*\n\s*\\\|\s*\n\s*"\\ + contains=@vimContinue,@vimExprList,vimLambdaParams
+syn match	vimLambdaParams	contained	"{\@1<=.\{-}\%(->\)\@=" nextgroup=vimLambdaOperator contains=vimFuncParam
+
+syn match	vim9LambdaOperator    contained	"=>" skipwhite skipempty nextgroup=@vimExprList,vim9LambdaBlock,vim9LambdaOperatorComment
+syn match	vim9LambdaParamsParen contained	"[()]"
+syn region	vim9LambdaParams	    contained
+      \ matchgroup=vim9LambdaParamsParen
+      \ start="(\ze\s*\(\.\.\.\)\=\h\w*[,:]\%(\s\|$\)"
+      \ start="(\ze\s*\n
+        "\ line continuations
+        \\%(\s*\%(#\\ .*\|\\\s*\)\n\)*\s*\\\s*
+        "\ parameter names
+        \\(\.\.\.\)\=\h\w*[,:]\%(\s\|$\)"
+      \ end=")\ze\%(:\s\|\s\+=>\)"
+      \ matchgroup=vimContinue
+      \ end="^\s*\\\ze\s\+=>"
+      \ skipwhite nextgroup=vim9LambdaReturnType,vim9LambdaOperator
+      \ contains=@vim9Continue,vimDefParam,vim9LambdaParamsParen
+syn match	vim9LambdaParams	    contained     "(\s*)\|(\s*\(\.\.\.\)\=\h\w*\s*)\ze\%(:\s\|\s\+=>\)" skipwhite nextgroup=vim9LambdaReturnType,vim9LambdaOperator contains=vimDefParam,vim9LambdaParamsParen
+
+syn region	vim9LambdaReturnType  contained	start=":\s" end="$" end="\ze#" end="\ze=>" skipwhite skipempty nextgroup=vim9LambdaOperator,vim9LamdaOperatorComment contains=vimTypeSep transparent
+syn region	vim9LambdaBlock	    contained	matchgroup=vimSep start="{" end="^\s*\zs}" contains=@vimDefBodyList
+
+syn match	vim9LambdaOperatorComment contained "#.*" skipwhite skipempty nextgroup=@vimExprList,vim9LambdaBlock,vim9LambdaOperatorComment
+
 " Functions: Tag is provided for those who wish to highlight tagged functions {{{2
 " =========
-syn cluster	vimFuncList	contains=vimFuncBang,vimFunctionError,vimFuncKey,vimFuncSID,Tag
-syn cluster	vimDefList	contains=vimFuncBang,vimFunctionError,vimDefKey,vimFuncSID,Tag
+syn cluster	vimFuncList	contains=vimFuncBang,vimFunctionError,vimFuncKey,vimFuncScope,vimFuncSID,Tag
+syn cluster	vimDefList	contains=vimFuncBang,vimFunctionError,vimDefKey,vimFuncScope,vimFuncSID,Tag
 
-syn cluster	vimFuncBodyCommon	contains=@vimCmdList,vimCmplxRepeat,vimContinue,vimCtrlChar,vimDef,vimEnvvar,vimFBVar,vimFunc,vimFunction,vimLetHereDoc,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegister,vimSpecFile,vimString,vimSubst,vimFuncFold,vimDefFold
-syn cluster	vimFuncBodyList	contains=@vimFuncBodyCommon,vimComment,vimLineComment,vimFuncVar,vimInsert,vimConst,vimLet,vimSearch
-syn cluster	vimDefBodyList	contains=@vimFuncBodyCommon,vim9Comment,vim9LineComment,vim9Const,vim9Final,vim9Var,vim9Null,vim9Boolean,vim9For,vim9Search
+syn cluster	vimFuncBodyCommon	contains=@vimCmdList,vimCmplxRepeat,vimContinue,vimCtrlChar,vimDef,vimFBVar,vimFunc,vimFunction,vimLetHereDoc,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegister,vimSpecFile,vimString,vimSubst,vimFuncFold,vimDefFold
+syn cluster	vimFuncBodyList	contains=@vimFuncBodyCommon,vimComment,vimLineComment,vimInsert,vimConst,vimLet,vimSearch
+syn cluster	vimDefBodyList	contains=@vimFuncBodyCommon,vim9Comment,vim9LineComment,vim9Block,vim9Const,vim9Final,vim9Var,vim9Null,vim9Boolean,vim9For,vim9LhsVariable,vim9LhsVariableList,vim9LhsRegister,vim9Search,@vimSpecialVar
 
 syn region	vimFuncPattern	contained		matchgroup=vimOper start="/" end="$" contains=@vimSubstList
 syn match	vimFunction	"\<fu\%[nction]\>"	skipwhite nextgroup=vimCmdSep,vimComment,vimFuncPattern contains=vimFuncKey
@@ -324,7 +376,7 @@
 
 syn match	vimFuncBang	contained	"!"
 syn match	vimFuncSID	contained	"\c<sid>"
-syn match	vimFuncSID	contained	"\<[sg]:"
+syn match	vimFuncScope	contained	"\<[sg]:"
 syn keyword	vimFuncKey	contained	fu[nction]
 syn keyword	vimDefKey	contained	def
 
@@ -347,7 +399,6 @@
  syn region	vimDefFold	start="\<def\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\)\+("	                 end="\<enddef\>"	       contains=vimDef      fold keepend extend transparent
 endif
 
-syn match	vimFuncVar   contained	"a:\%(\K\k*\|\d\+\)\>"
 syn match	vimFuncBlank contained	"\s\+"
 
 " Types: {{{2
@@ -370,12 +421,24 @@
 
 if s:vim9script
   " Methods {{{3
-  syn match	vim9MethodDef		contained	"\<def\>"	skipwhite nextgroup=vim9MethodDefName
+  syn match	vim9MethodDef		contained	"\<def\>"	skipwhite nextgroup=vim9MethodDefName,vim9ConstructorDefName
   syn match	vim9MethodDefName		contained	"\<\h\w*\>"	nextgroup=vim9MethodDefParams contains=@vim9MethodName
   syn region	vim9MethodDefParams	contained
         \ matchgroup=Delimiter start="(" end=")"
         \ skipwhite skipnl nextgroup=vim9MethodDefBody,vimDefComment,vimEnddef,vim9MethodDefReturnType,vimCommentError
         \ contains=vimDefParam,vim9Comment,vimFuncParamEquals
+
+  syn match	vim9ConstructorDefName	contained	"\<new\w*\>"
+        \ nextgroup=vim9ConstructorDefParams
+        \ contains=@vim9MethodName
+  syn match	vim9ConstructorDefParam	contained	"\<\%(this\.\)\=\h\w*\>"
+        \ skipwhite nextgroup=vimParamType,vimFuncParamEquals
+        \ contains=vim9This,vimOper
+  syn region	vim9ConstructorDefParams	contained
+        \ matchgroup=Delimiter start="(" end=")"
+        \ skipwhite skipnl nextgroup=vim9MethodDefBody,vimDefComment,vimEnddef,vimCommentError
+        \ contains=vim9ConstructorDefParam,vim9Comment,vimFuncParamEquals
+
   syn region	vim9MethodDefReturnType	contained
         \ start=":\s" end="$" matchgroup=vim9Comment end="\ze[#"]"
         \ skipwhite skipnl nextgroup=vim9MethodDefBody,vimDefComment,vimCommentError
@@ -391,7 +454,7 @@
   if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimfunctionerror")
     syn match	vim9MethodNameError contained	"\<[a-z0-9]\i\>"
   endif
-  syn match	vim9MethodName	contained	"\<new\i*\>"
+  syn match	vim9MethodName	contained	"\<new\w*\>"
   syn keyword	vim9MethodName	contained	empty len string
 
   syn cluster	vim9MethodName	contains=vim9MethodName,vim9MethodNameError
@@ -416,8 +479,11 @@
   syn keyword	vim9Implements		contained	implements	skipwhite skipnl nextgroup=vim9ImplementedInterface
   syn keyword	vim9Public		contained	public
   syn keyword	vim9Static		contained	static
-  syn keyword	vim9This		contained	this
-  syn keyword	vim9Super		contained	super
+  " FIXME: don't match as dictionary keys, remove when operators are not
+  "        shared between Vim9 and legacy script
+  syn match	vim9This		contained	"\.\@1<!\<this\>:\@!"
+  " super must be folowed by '.'
+  syn match	vim9Super		contained	"\.\@1<!\<super\.\@="
 
   VimFoldc syn region	vim9ClassBody	start="\<class\>" matchgroup=vimCommand end="\<endclass\>" contains=@vim9ClassBodyList transparent
 
@@ -450,15 +516,19 @@
 
   VimFoldi syn region	vim9InterfaceBody	start="\<interface\>" matchgroup=vimCommand end="\<endinterface\>" contains=@vim9InterfaceBodyList transparent
 
-  " type {{{3
+  " Type Aliases {{{3
   syn match	vim9Type		"\<ty\%[pe]\>"	skipwhite nextgroup=vim9TypeAlias,vim9TypeAliasError
   syn match	vim9TypeAlias	 contained	"\<\u\w*\>"	skipwhite nextgroup=vim9TypeEquals
   syn match	vim9TypeEquals	 contained	"="	skipwhite nextgroup=@vimType
   if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_notypealiaserror")
-    syn match	vim9TypeAliasError contained	"\<\U\w*"
+    syn match	vim9TypeAliasError contained	"\<\l\w*\>"	skipwhite nextgroup=vim9TypeEquals
   endif
 endif
 
+" Blocks: {{{2
+" ======
+Vim9 syn region	vim9Block	matchgroup=vimSep start="{" end="^\s*\zs}" contains=@vimDefBodyList
+
 " Keymaps: {{{2
 " =======
 
@@ -523,7 +593,7 @@
 syn match	vimUserCmdAttrAddr	contained	"?"
 syn case match
 
-syn region	vimUserCmdBlock	contained	matchgroup=vimSep start="{" end="}" contains=@vimDefBodyList
+syn region	vimUserCmdBlock	contained	matchgroup=vimSep start="{" end="^\s*\zs}" contains=@vimDefBodyList
 
 syn match	vimDelcommand		"\<delc\%[ommand]\>" skipwhite nextgroup=vimDelcommandAttr
 syn match	vimDelcommandAttr	contained	"-buffer\>"
@@ -570,8 +640,8 @@
 syn region	vimPatRegion	contained transparent matchgroup=vimPatSepR start="\\[z%]\=(" end="\\)"	contains=@vimSubstList oneline
 syn match	vimNotPatSep	contained	"\\\\"
 syn cluster	vimStringGroup	contains=vimEscape,vimEscapeBrace,vimPatSep,vimNotPatSep,vimPatSepErr,vimPatSepZone,@Spell
-syn region	vimString	oneline keepend	matchgroup=vimString start=+[^a-zA-Z>\\@]"+lc=1 skip=+\\\\\|\\"+ matchgroup=vimStringEnd end=+"+	contains=@vimStringGroup extend
-syn region	vimString	oneline	matchgroup=vimString start=+[^a-zA-Z>\\@]'+lc=1 end=+'+ contains=vimQuoteEscape extend
+syn region	vimString	oneline keepend	matchgroup=vimString start=+[^a-zA-Z>\\@]"+lc=1 skip=+\\\\\|\\"+ matchgroup=vimStringEnd end=+"+ nextgroup=vimSubscript contains=@vimStringGroup extend
+syn region	vimString	oneline	matchgroup=vimString start=+[^a-zA-Z>\\@]'+lc=1 end=+'+		       nextgroup=vimSubscript contains=vimQuoteEscape  extend
 "syn region	vimString	oneline	start="\s/\s*\A"lc=1 skip="\\\\\|\\+" end="/"	contains=@vimStringGroup  " see tst45.vim
 syn match	vimString	contained	+"[^"]*\\$+	skipnl nextgroup=vimStringCont
 syn match	vimStringCont	contained	+\(\\\\\|.\)\{-}[^\\]"+
@@ -583,8 +653,8 @@
 syn match	vimEscape	contained	"\\<\*[^>]*>\=>"
 syn match	vimQuoteEscape	contained	"''"
 
-syn region	vimString	oneline matchgroup=vimString start=+$'+ skip=+''+ end=+'+ contains=vimQuoteEscape,@vimStringInterpolation  extend
-syn region	vimString	oneline matchgroup=vimString start=+$"+           end=+"+ contains=@vimStringGroup,@vimStringInterpolation extend
+syn region	vimString	oneline matchgroup=vimString start=+$'+ skip=+''+ end=+'+ nextgroup=vimSubscript contains=vimQuoteEscape,@vimStringInterpolation  extend
+syn region	vimString	oneline matchgroup=vimString start=+$"+           end=+"+ nextgroup=vimSubscript contains=@vimStringGroup,@vimStringInterpolation extend
 syn region	vimStringInterpolationExpr  oneline contained matchgroup=vimSep start=+{+ end=+}+ contains=@vimExprList
 syn match	vimStringInterpolationBrace contained "{{"
 syn match	vimStringInterpolationBrace contained "}}"
@@ -660,13 +730,18 @@
 
 " Variable Declarations: {{{2
 " =====================
-VimL syn keyword	vimLet	let		skipwhite nextgroup=vimVar,vimFuncVar,vimLetRegister,vimVarList
-VimL syn keyword	vimConst	cons[t]		skipwhite nextgroup=vimVar,vimVarList
-syn region	vimVarList	contained	start="\[" end="]" contains=vimVar,@vimContinue
+VimL syn keyword	vimLet	let		skipwhite nextgroup=@vimSpecialVar,vimVar,vimVarList
+VimL syn keyword	vimConst	cons[t]		skipwhite nextgroup=@vimSpecialVar,vimVar,vimVarList
+syn region	vimVarList	contained
+      \ start="\[" end="]"
+      \ contains=@vimContinue,@vimSpecialVar,vimVar
 
-VimL syn keyword	vimUnlet	unl[et]		skipwhite nextgroup=vimUnletBang,vimUnletVars
-syn match	vimUnletBang	contained	"!"	skipwhite nextgroup=vimUnletVars
-syn region	vimUnletVars	contained	start="$\I\|\h" skip="\n\s*\\" end="$" end="|" contains=vimVar,vimEnvvar,vimContinue,vimString,vimNumber
+VimL syn keyword	vimUnlet		unl[et]	skipwhite nextgroup=vimUnletBang,vimUnletVars
+syn match	vimUnletBang	contained	"\a\@1<=!"	skipwhite nextgroup=vimUnletVars
+syn region	vimUnletVars	contained
+      \ start="$\I\|\h" skip=+\n\s*\\\|\n\s*"\\ \|^\s*"\\ + end="$" end="\ze[|"]"
+      \ nextgroup=vimCmdSep,vimComment
+      \ contains=@vimContinue,vimEnvvar,vimVar
 
 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
@@ -678,15 +753,39 @@
 Vim9 syn keyword	vim9Var	var	skipwhite nextgroup=vim9Variable,vim9VariableList
 
 syn match	vim9Variable	contained	"\<\h\w*\>"	skipwhite nextgroup=vimTypeSep,vimLetHereDoc,vimOper
-syn region	vim9VariableList	contained	start="\[" end="]" contains=vim9Variable,@vimContinue
+syn region	vim9VariableList	contained	start="\[" end="]" contains=@vimContinue,@vimSpecialVar,vim9Variable
+
+" Lockvar and Unlockvar: {{{2
+" =====================
+syn keyword	vimLockvar	lockv[ar]	skipwhite nextgroup=vimLockvarBang,vimLockvarDepth,vimLockvarVars
+syn keyword	vimUnlockvar	unlo[ckvar]	skipwhite nextgroup=vimLockvarBang,vimLockvarDepth,vimLockvarVars
+syn match	vimLockvarBang	contained	"\a\@1<=!"	skipwhite nextgroup=vimLockvarVars
+syn match	vimLockvarDepth	contained	"\<[0-3]\>"	skipwhite nextgroup=vimLockvarVars
+syn region	vimLockvarVars	contained
+      \ start="\h" skip=+\n\s*\\\|\n\s*"\\ \|^\s*"\\ + end="$" end="\ze[|"]"
+      \ nextgroup=vimCmdSep,vimComment
+      \ contains=@vimContinue,vimVar
+
+hi def link vimLockvar vimCommand
+hi def link vimUnlockvar vimCommand
+hi def link vimLockvarBang vimBang
+hi def link vimLockvarDepth vimNumber
 
 " For: {{{2
 " ===
-if s:vim9script
-  syn keyword	vim9For	for	skipwhite nextgroup=vim9Variable,vim9VariableList
-else
-  syn keyword	vimFor	for	skipwhite nextgroup=vimVar,vimVarList
-endif
+" handles Vim9 and legacy for now
+syn region	vimFor
+      \ matchgroup=vimCommand
+      \ start="\<for\>" end="\<in\>"
+      \ skipwhite skipnl nextgroup=@vimForInContinue,vim9ForInComment,@vimExprList
+      \ contains=@vimContinue,vimVar,vimVarList,vim9VariableList
+      \ transparent
+
+syn match	vim9ForInComment		contained	"#.*"	skipwhite skipempty nextgroup=vimForInComment,@vimExprList
+
+syn match	vimForInContinue		contained	"^\s*\zs\\"	 skipwhite skipnl nextgroup=@vimForInContinue,@vimExprList
+syn match         vimForInContinueComment	contained	'^\s*\zs["#]\\ .*' skipwhite skipnl nextgroup=@vimForInContinue,@vimExprList
+syn cluster	vimForInContinue		contains=vimForInContinue,vimForInContinueComment
 
 " Abbreviations: {{{2
 " =============
@@ -702,7 +801,7 @@
 syn keyword	vimAutoCmd	au[tocmd]		skipwhite nextgroup=vimAutoCmdBang,vimAutoEventList
 syn keyword	vimAutoCmd	do[autocmd] doautoa[ll]	skipwhite nextgroup=vimAutoEventList
 syn match	vimAutoCmdMod	"\(++\)\=\(once\|nested\)"	skipwhite nextgroup=vimAutoCmdBlock
-syn region	vimAutoCmdBlock	contained	matchgroup=vimSep start="{" end="}" contains=@vimDefBodyList
+syn region	vimAutoCmdBlock	contained	matchgroup=vimSep start="{" end="^\s*\zs}" contains=@vimDefBodyList
 
 " Echo And Execute: -- prefer strings! {{{2
 " ================
@@ -799,8 +898,8 @@
 " User Function Highlighting: {{{2
 " (following Gautam Iyer's suggestion)
 " ==========================
-syn match	vimFunc              	"\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\ze\s*("                	contains=vimFuncEcho,vimFuncName,vimUserFunc,vimExecute
-syn match	vimUserFunc	contained        	"\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\|\<\u[a-zA-Z0-9.]*\>\|\<if\>"	contains=vimNotation,vim9MethodName
+syn match	vimFunc              	"\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\ze\s*("                	skipwhite nextgroup=vimOperParen contains=vimFuncEcho,vimFuncName,vimUserFunc,vimExecute
+syn match	vimUserFunc	contained        	"\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\|\<\u[a-zA-Z0-9.]*\>\|\<if\>"	contains=vimNotation,vim9MethodName,vim9Super,vim9This
 syn keyword	vimFuncEcho	contained      	ec ech echo
 
 syn match	vimMap	"\<map\%(\s\+(\)\@="	skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
@@ -1312,7 +1411,7 @@
  hi def link vimDebuggreedy	vimCommand
  hi def link vimDefComment	vim9Comment
  hi def link vimDefKey	vimCommand
- hi def link vimDefParam vimVar
+ hi def link vimDefParam	vimVar
  hi def link vimDelcommand	vimCommand
  hi def link vimDelcommandAttr	vimUserCmdAttr
  hi def link vimEcho	vimCommand
@@ -1328,6 +1427,8 @@
  hi def link vimFgBgAttrib	vimHiAttrib
  hi def link vimFuncEcho	vimCommand
  hi def link vimFor	vimCommand
+ hi def link vimForInContinue	vimContinue
+ hi def link vimForInContinueComment	vimContinueComment
  hi def link vimFTCmd	vimCommand
  hi def link vimFTOption	vimSynType
  hi def link vimFuncBang	vimBang
@@ -1337,8 +1438,8 @@
  hi def link vimFuncMod	Special
  hi def link vimFuncParam	vimVar
  hi def link vimFuncParamEquals	vimOper
- hi def link vimFuncSID	Special
- hi def link vimFuncVar	Identifier
+ hi def link vimFuncScope	vimVar
+ hi def link vimFuncSID	vimNotation
  hi def link vimGroupAdd	vimSynOption
  hi def link vimGroupName	vimGroup
  hi def link vimGroupRem	vimSynOption
@@ -1367,6 +1468,7 @@
  hi def link vim9KeymapLineComment	vimKeymapLineComment
  hi def link vimKeymapLineComment	vimComment
  hi def link vimKeymapTailComment	vimComment
+ hi def link vimLambdaOperator	vimOper
  hi def link vimLet	vimCommand
  hi def link vimLetHereDoc	vimString
  hi def link vimLetHereDocStart	Special
@@ -1400,7 +1502,11 @@
  hi def link vimNumber	Number
  hi def link vimOperError	Error
  hi def link vimOper	Operator
+ hi def link vimOperContinue	vimContinue
+ hi def link vimOperContinueComment	vimContinueComment
  hi def link vimOption	PreProc
+ hi def link vimOptionVar	Identifier
+ hi def link vimVimVar	Identifier
  hi def link vimParenSep	Delimiter
  hi def link vimPatSepErr	vimError
  hi def link vimPatSepR	vimPatSep
@@ -1483,7 +1589,7 @@
  hi def link vimUserCmdError	Error
  hi def link vimUserCmdKey	vimCommand
  hi def link vimUserFunc	Normal
- hi def link vimVar	Identifier
+ hi def link vimVar	Normal
  hi def link vimWarn	WarningMsg
 
  hi def link vim9Abstract	vimCommand
@@ -1492,6 +1598,7 @@
  hi def link vim9Comment	Comment
  hi def link vim9CommentError	vimError
  hi def link vim9CommentTitle	PreProc
+ hi def link vim9ConstructorDefParam	vimVar
  hi def link vim9Const	vimCommand
  hi def link vim9ContinueComment	vimContinueComment
  hi def link vim9Enum	vimCommand
@@ -1499,9 +1606,15 @@
  hi def link vim9Extends	Keyword
  hi def link vim9Final	vimCommand
  hi def link vim9For	vimCommand
+ hi def link vim9ForInComment	vim9Comment
  hi def link vim9Implements	Keyword
  hi def link vim9AbstractDef	vimCommand
  hi def link vim9Interface	vimCommand
+ hi def link vim9LambdaOperator	vimOper
+ hi def link vim9LambdaOperatorComment	vim9Comment
+ hi def link vim9LambdaParamsParen	vimParenSep
+ hi def link vim9LhsRegister	vimLetRegister
+ hi def link vim9LhsVariable	vimVar
  hi def link vim9LineComment	vimComment
  hi def link vim9MethodDef	vimCommand
  hi def link vim9MethodNameError	vimFunctionError
diff --git a/runtime/syntax/testdir/dumps/vim9_block_00.dump b/runtime/syntax/testdir/dumps/vim9_block_00.dump
new file mode 100644
index 0000000..6f4122a
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_block_00.dump
@@ -0,0 +1,20 @@
+>v+0#af5f00255#ffffff0|i|m|9|s|c|r|i|p|t| +0#0000000&@64
+@75
+|#+0#0000e05&| |V|i|m|9| |b|l|o|c|k|s| +0#0000000&@61
+@75
+@75
+|{+0#e000e06&| +0#0000000&@73
+@2|v+0#af5f00255&|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|4+0#e000002&|2| +0#0000000&@60
+|}+0#e000e06&| +0#0000000&@73
+@75
+|{+0#e000e06&| +0#0000000&@73
+@2|{+0#e000e06&| +0#0000000&@71
+@4|{+0#e000e06&| +0#0000000&@69
+@6|{+0#e000e06&| +0#0000000&@67
+@8|v+0#af5f00255&|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|4+0#e000002&|2| +0#0000000&@54
+@6|}+0#e000e06&| +0#0000000&@67
+@6|v+0#af5f00255&|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|4+0#e000002&|2| +0#0000000&@56
+@4|}+0#e000e06&| +0#0000000&@69
+@4|v+0#af5f00255&|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|4+0#e000002&|2| +0#0000000&@58
+@2|}+0#e000e06&| +0#0000000&@71
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim9_block_01.dump b/runtime/syntax/testdir/dumps/vim9_block_01.dump
new file mode 100644
index 0000000..ab9c996
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_block_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|v+0#af5f00255&|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|4+0#e000002&|2| +0#0000000&@54
+@6|}+0#e000e06&| +0#0000000&@67
+@6|v+0#af5f00255&|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|4+0#e000002&|2| +0#0000000&@56
+@4|}+0#e000e06&| +0#0000000&@69
+@4|v+0#af5f00255&|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|4+0#e000002&|2| +0#0000000&@58
+@2>}+0#e000e06&| +0#0000000&@71
+@2|v+0#af5f00255&|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|4+0#e000002&|2| +0#0000000&@60
+|}+0#e000e06&| +0#0000000&@73
+@75
+|d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@65
+@2|{+0#e000e06&| +0#0000000&@71
+@4|v+0#af5f00255&|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|4+0#e000002&|2| +0#0000000&@58
+@4|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@62
+@2|}+0#e000e06&| +0#0000000&@71
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
+@75
+|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&||| |{+0#e000e06&| +0#0000000&@60
+@2|v+0#af5f00255&|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|4+0#e000002&|2| +0#0000000&@60
+|}+0#e000e06&| +0#0000000&@73
+@57|1|9|,|3| @9|9|2|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_block_02.dump b/runtime/syntax/testdir/dumps/vim9_block_02.dump
new file mode 100644
index 0000000..32a4881
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_block_02.dump
@@ -0,0 +1,20 @@
+|}+0#e000e06#ffffff0| +0#0000000&@73
+> @74
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|3@1|,|0|-|1| @7|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim9_comment_03.dump b/runtime/syntax/testdir/dumps/vim9_comment_03.dump
index 8a0fda8..d026a44 100644
--- a/runtime/syntax/testdir/dumps/vim9_comment_03.dump
+++ b/runtime/syntax/testdir/dumps/vim9_comment_03.dump
@@ -5,7 +5,7 @@
 |#+0#0000e05&| +0#0000000&|I+0#e000e06&|s@1|u|e|:| +0#0000e05&|#|1|3|0|4|7| +0#0000000&@59
 > @74
 |i+0#af5f00255&|f| +0#0000000&|!+0#af5f00255&|e+0#00e0e07&|x|i|s|t|s|(+0#e000e06&|"+0#e000002&|:|D|i|f@1|O|r|i|g|"|)+0#e000e06&| +0#0000000&@51
-@2|c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&|D|i|f@1|O|r|i|g| |v+0#af5f00255&|e|r|t| +0#0000000&|n+0#af5f00255&|e|w| +0#0000000&||| |s+0#af5f00255&|e|t| +0#0000000&|b+0#e000e06&|t|=+0#af5f00255&|n+0#0000000&|o|f|i|l|e| ||| |r+0#af5f00255&| +0#0000000&|++0#af5f00255&@1|e|d|i|t| +0#0000000&|%+0#af5f00255&@1| +0#0000000&||| |0+0#e000002&|d+0#0000000&|_| ||| |d+0#af5f00255&|i|f@1|t|h|i|s| +0#0000000&
+@2|c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&|D|i|f@1|O|r|i|g| |v+0#af5f00255&|e|r|t| +0#0000000&|n+0#af5f00255&|e|w| +0#0000000&||| |s+0#af5f00255&|e|t| +0#0000000&|b+0#e000e06&|t|=+0#af5f00255&|n+0#0000000&|o|f|i|l|e| ||| |r+0#af5f00255&| +0#0000000&|++0#af5f00255&@1|e+0#00e0e07&|d|i|t| +0#0000000&|%+0#af5f00255&@1| +0#0000000&||| |0+0#e000002&|d+0#0000000&|_| ||| |d+0#af5f00255&|i|f@1|t|h|i|s| +0#0000000&
 @18|\+0#e000e06&| +0#0000000&||| |w+0#af5f00255&|i|n|c|m|d| +0#0000000&|p+0#af5f00255&| +0#0000000&||| |d+0#af5f00255&|i|f@1|t|h|i|s| +0#0000000&@33
 |e+0#af5f00255&|n|d|i|f| +0#0000000&@69
 @75
diff --git a/runtime/syntax/testdir/dumps/vim9_def_variables_00.dump b/runtime/syntax/testdir/dumps/vim9_def_variables_00.dump
new file mode 100644
index 0000000..a871473
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_def_variables_00.dump
@@ -0,0 +1,20 @@
+>v+0#af5f00255#ffffff0|i|m|9|s|c|r|i|p|t| +0#0000000&@64
+@75
+|#+0#0000e05&| |V|i|m|9| |f|u|n|c|t|i|o|n| |v|a|r|i|a|b|l|e| |h|i|g|h|l|i|g|h|t|i|n|g| +0#0000000&@37
+@75
+|d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@65
+| +0#0000e05&@1|#| |D|e|c|l|a|r|a|t|i|o|n|s| +0#0000000&@58
+@75
+@2|v+0#af5f00255&|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58
+@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|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
+@75
+@2|$+0#e000e06&|F|O@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
+@75
+@2|v+0#af5f00255&|a|r| +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
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim9_def_variables_01.dump b/runtime/syntax/testdir/dumps/vim9_def_variables_01.dump
new file mode 100644
index 0000000..e0a5b24
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_def_variables_01.dump
@@ -0,0 +1,20 @@
+| +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
+@75
+@2|$+0#e000e06&|F|O@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
+@75
+@2>v+0#af5f00255&|a|r| +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|v+0#af5f00255&|a|r| +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|v+0#af5f00255&|a|r| +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|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&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@52
+@75
+@2|v+0#af5f00255&|a|r| +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
+@2|v+0#af5f00255&|a|r| +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|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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_def_variables_02.dump b/runtime/syntax/testdir/dumps/vim9_def_variables_02.dump
new file mode 100644
index 0000000..34d583e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_def_variables_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|\+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
+@75
+@2|v+0#af5f00255&|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |E|N|D| +0#0000000&@57
+|.+0#e000002&@2| +0#0000000&@71
+>E+0#e000e06&|N|D| +0#0000000&@71
+@2|v+0#af5f00255&|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@52
+| +0#e000002&@1|.@2| +0#0000000&@69
+| +0#e000e06&@1|E|N|D| +0#0000000&@69
+@2|v+0#af5f00255&|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |e|v|a|l| |E|N|D| +0#0000000&@52
+|.+0#e000002&@2| +0#0000000&@71
+|E+0#e000e06&|N|D| +0#0000000&@71
+@2|v+0#af5f00255&|a|r| +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
+@2|v+0#af5f00255&|a|r| +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&@47
+| +0#e000002&@3|.@2| +0#0000000&@67
+| +0#e000e06&@1|E|N|D| +0#0000000&@69
+@75
+@57|3|7|,|1| @9|1|7|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_def_variables_03.dump b/runtime/syntax/testdir/dumps/vim9_def_variables_03.dump
new file mode 100644
index 0000000..8accf95
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_def_variables_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+| +0#0000e05&@1|#| |A|s@1|i|g|n|m|e|n|t|s| +0#0000000&@59
+@75
+@1| +0#00e0e07&|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62
+@75
+@1| +0#00e0e07&>f|o@1|[+0#0000000&|0+0#e000002&|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
+@75
+@1| +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&@57
+@1| +0#00e0e07&|f|o@1|[+0#0000000&|:|2+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&|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#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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_def_variables_04.dump b/runtime/syntax/testdir/dumps/vim9_def_variables_04.dump
new file mode 100644
index 0000000..bb8f803
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_def_variables_04.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+@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|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
+@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
+@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
+@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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_def_variables_05.dump b/runtime/syntax/testdir/dumps/vim9_def_variables_05.dump
new file mode 100644
index 0000000..f339756
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_def_variables_05.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@1|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
+@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
+@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&@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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_def_variables_06.dump b/runtime/syntax/testdir/dumps/vim9_def_variables_06.dump
new file mode 100644
index 0000000..23396ad
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_def_variables_06.dump
@@ -0,0 +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
+@75
+@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&|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
+@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
+@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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_def_variables_07.dump b/runtime/syntax/testdir/dumps/vim9_def_variables_07.dump
new file mode 100644
index 0000000..119cc25
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_def_variables_07.dump
@@ -0,0 +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
+@75
+@2|&+0#00e0e07&|g|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
+@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
+@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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_def_variables_08.dump b/runtime/syntax/testdir/dumps/vim9_def_variables_08.dump
new file mode 100644
index 0000000..686fa47
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_def_variables_08.dump
@@ -0,0 +1,20 @@
+| +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
+@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
+@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
+@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
+@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
+@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
+@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
+@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
+@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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_def_variables_09.dump b/runtime/syntax/testdir/dumps/vim9_def_variables_09.dump
new file mode 100644
index 0000000..0c5a48d
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_def_variables_09.dump
@@ -0,0 +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
+@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
+@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&|@|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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_def_variables_10.dump b/runtime/syntax/testdir/dumps/vim9_def_variables_10.dump
new file mode 100644
index 0000000..9cba855
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_def_variables_10.dump
@@ -0,0 +1,20 @@
+|.+0#e000002#ffffff0@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
+| +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
+|.+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
+| +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| |t|r|i|m| |E|N|D| +0#0000000&@51
+| +0#e000002&@3|.@2| +0#0000000&@67
+| +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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_def_variables_11.dump b/runtime/syntax/testdir/dumps/vim9_def_variables_11.dump
new file mode 100644
index 0000000..9948671
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_def_variables_11.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@1|e+0#af5f00255&|n|d|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|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| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_11.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_11.dump
index 8558f35..d2b6bdf 100644
--- a/runtime/syntax/testdir/dumps/vim9_ex_commands_11.dump
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_11.dump
@@ -10,7 +10,7 @@
 |:|f+0#af5f00255&|o|l|d@1|o|c|l|o|s|e|d| +0#0000000&@61
 |:|f+0#af5f00255&|o|l|d@1|o@1|p|e|n| +0#0000000&@63
 |:|f+0#af5f00255&|o|l|d|o|p|e|n| +0#0000000&@65
-|:|f+0#af5f00255&|o|r| +0#0000000&@70
+|:|f+0#af5f00255&|o|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@50
 |:|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&@65
 |:|g+0#af5f00255&|l|o|b|a|l|/|.+0#0000000&@2|/+0#af5f00255&| +0#0000000&@62
 |:|g+0#af5f00255&|o|t|o| +0#0000000&@69
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_43.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_43.dump
index f59746e..d36e35b 100644
--- a/runtime/syntax/testdir/dumps/vim9_ex_commands_43.dump
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_43.dump
@@ -16,5 +16,5 @@
 |F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|l|d@1|o|c|l|o|s|e|d| +0#0000000&@54
 |F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|l|d@1|o@1|p|e|n| +0#0000000&@56
 |F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|l|d|o|p|e|n| +0#0000000&@58
-|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|r| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@43
 @57|7@1|5|,|1| @8|6|4|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_44.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_44.dump
index 6d476cf..95e9cec 100644
--- a/runtime/syntax/testdir/dumps/vim9_ex_commands_44.dump
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_44.dump
@@ -1,4 +1,4 @@
-|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|r| +0#0000000&@63
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@43
 |F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&@58
 |F|o@1|(+0#e000e06&|)| +0#0000000&||| |g+0#af5f00255&|l|o|b|a|l|/|.+0#0000000&@2|/+0#af5f00255&| +0#0000000&@55
 |F|o@1|(+0#e000e06&|)| +0#0000000&||| |g+0#af5f00255&|o|t|o| +0#0000000&@62
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_for_00.dump b/runtime/syntax/testdir/dumps/vim9_ex_for_00.dump
new file mode 100644
index 0000000..3d1d628
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_for_00.dump
@@ -0,0 +1,20 @@
+>v+0#af5f00255#ffffff0|i|m|9|s|c|r|i|p|t| +0#0000000&@64
+@75
+|#+0#0000e05&| |V|i|m|9| |:|f|o|r| |c|o|m@1|a|n|d| +0#0000000&@55
+@75
+@75
+|#+0#0000e05&| |:|f|o|r| |{|v|a|r|}| |i|n| |{|o|b|j|e|c|t|}| +0#0000000&@50
+@75
+|v+0#af5f00255&|a|r| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|[+0#e000e06&|4+0#e000002&|2|]+0#e000e06&| +0#0000000&@59
+@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
+@2|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@64
+|e+0#af5f00255&|n|d|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&|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@49
+@2|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@64
+|e+0#af5f00255&|n|d|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&@64
+@6|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@59
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_for_01.dump b/runtime/syntax/testdir/dumps/vim9_ex_for_01.dump
new file mode 100644
index 0000000..600b850
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_for_01.dump
@@ -0,0 +1,20 @@
+|f+0#af5f00255#ffffff0|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&|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@49
+@2|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@64
+|e+0#af5f00255&|n|d|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&@64
+@6>#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@59
+@6|e+0#00e0e07&|x|p|r| +0#0000000&@64
+@2|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@64
+|e+0#af5f00255&|n|d|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&||| |e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@39
+@75
+|f+0#af5f00255&|o|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|[+0#e000e06&|4+0#e000002&|2|]+0#e000e06&| +0#0000000&@59
+@2|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@64
+|e+0#af5f00255&|n|d|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&|[+0#e000e06&|4+0#e000002&|2|]+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@39
+@75
+|f+0#af5f00255&|o|r| +0#0000000&|f+0#00e0e07&|o@1|:+0#0000000&| |n+0#00e0e07&|u|m|b|e|r| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|[+0#e000e06&|4+0#e000002&|2|]+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@31
+@57|1|9|,|7| @9|2|6|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_for_02.dump b/runtime/syntax/testdir/dumps/vim9_ex_for_02.dump
new file mode 100644
index 0000000..5560a5b
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_for_02.dump
@@ -0,0 +1,20 @@
+|f+0#af5f00255#ffffff0|o|r| +0#0000000&|f+0#00e0e07&|o@1|:+0#0000000&| |n+0#00e0e07&|u|m|b|e|r| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|[+0#e000e06&|4+0#e000002&|2|]+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@31
+@75
+|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&||| |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&@46
+@2|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@64
+|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@68
+> @74
+@75
+|#+0#0000e05&| |:|f|o|r| |[|{|v|a|r|1|}|,| |{|v|a|r|2|}|,| |.@2|]| |i|n| |{|l|i|s|t|l|i|s|t|}| +0#0000000&@32
+@75
+|v+0#af5f00255&|a|r| +0#0000000&|e+0#00e0e07&|x|p|r|2| +0#0000000&|=+0#af5f00255&| +0#0000000&|[+0#e000e06&@1|4+0#e000002&|2|,+0#0000000&| |8+0#e000002&|3|]+0#e000e06&@1| +0#0000000&@52
+@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|2| +0#0000000&@51
+@2|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@60
+|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@68
+@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|2| +0#0000000&|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@41
+@2|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@60
+|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@68
+@75
+@57|3|7|,|0|-|1| @7|6|3|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_for_03.dump b/runtime/syntax/testdir/dumps/vim9_ex_for_03.dump
new file mode 100644
index 0000000..8f16b2b
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_for_03.dump
@@ -0,0 +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&@57
+@6|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@59
+@6|e+0#00e0e07&|x|p|r|2| +0#0000000&@63
+@2|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@60
+>e+0#af5f00255&|n|d|f|o|r| +0#0000000&@68
+@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|2| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@27
+@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&|[+0#e000e06&@1|4+0#e000002&|2|,+0#0000000&| |8+0#e000002&|3|]+0#e000e06&@1| +0#0000000&@46
+@2|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@60
+|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@68
+@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&|[+0#e000e06&@1|4+0#e000002&|2|,+0#0000000&| |8+0#e000002&|3|]+0#e000e06&@1| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@22
+@75
+|f+0#af5f00255&|o|r| +0#0000000&|[|f+0#00e0e07&|o@1|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r|,+0#0000000&| |b+0#00e0e07&|a|r|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r|]+0#0000000&| |i+0#af5f00255&|n| +0#0000000&|e+0#00e0e07&|x|p|r|2| +0#0000000&@35
+@2|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@60
+|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@68
+@75
+@57|5@1|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_type_00.dump b/runtime/syntax/testdir/dumps/vim9_ex_type_00.dump
index 5c896c1..b52cb37 100644
--- a/runtime/syntax/testdir/dumps/vim9_ex_type_00.dump
+++ b/runtime/syntax/testdir/dumps/vim9_ex_type_00.dump
@@ -7,7 +7,7 @@
 @75
 |e+0#af5f00255&|x|p|o|r|t| +0#0000000&|t+0#af5f00255&|y|p|e| +0#0000000&|Q|u|x| |=+0#af5f00255&| +0#0000000&|B|a|z| @53
 @75
-|t+0#af5f00255&|y|p|e| +0#0000000&|f+0#ffffff16#ff404010|o@1| +0#0000000#ffffff0|=+0#af5f00255&| +0#0000000&|s|t|r|i|n|g| @57
+|t+0#af5f00255&|y|p|e| +0#0000000&|f+0#ffffff16#ff404010|o@1| +0#0000000#ffffff0|=+0#af5f00255&| +0#0000000&|s+0#00e0003&|t|r|i|n|g| +0#0000000&@57
 @75
 |~+0#4040ff13&| @73
 |~| @73
diff --git a/runtime/syntax/testdir/dumps/vim9_expr_01.dump b/runtime/syntax/testdir/dumps/vim9_expr_01.dump
index 3e822fd..2eafe8c 100644
--- a/runtime/syntax/testdir/dumps/vim9_expr_01.dump
+++ b/runtime/syntax/testdir/dumps/vim9_expr_01.dump
@@ -5,9 +5,9 @@
 @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|n|u|m| |=+0#af5f00255&@1| +0#0000000&|1+0#e000002&|0@2| +0#0000000&|?+0#af5f00255&| +0#0000000&@52
+@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|n|u|m| @54
+@16|l+0#00e0e07&|n|u|m| +0#0000000&@54
 @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
diff --git a/runtime/syntax/testdir/dumps/vim9_expr_05.dump b/runtime/syntax/testdir/dumps/vim9_expr_05.dump
index 925ce68..b2fea21 100644
--- a/runtime/syntax/testdir/dumps/vim9_expr_05.dump
+++ b/runtime/syntax/testdir/dumps/vim9_expr_05.dump
@@ -11,10 +11,10 @@
 |#+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|o@1| |=+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|o@1| |=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|f|o@1|'| +0#0000000&@52
+|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|o@1| |=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|f|o@1|'| +0#0000000&@52
+|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
 @57|9|1|,|7| @9|9|6|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_lambda_00.dump b/runtime/syntax/testdir/dumps/vim9_lambda_00.dump
new file mode 100644
index 0000000..6ae5c34
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_lambda_00.dump
@@ -0,0 +1,20 @@
+>v+0#af5f00255#ffffff0|i|m|9|s|c|r|i|p|t| +0#0000000&@64
+@75
+|#+0#0000e05&| |V|i|m| |9| |l|a|m|b|d|a| |e|x|p|r|e|s@1|i|o|n|s| +0#0000000&@48
+@75
+|v+0#af5f00255&|a|r| +0#0000000&|F+0#00e0e07&|o@1|:+0#0000000&| |f+0#00e0003&|u|n|c| +0#0000000&@61
+|v+0#af5f00255&|a|r| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|0+0#e000002&| +0#0000000&@62
+@75
+|#+0#0000e05&| |w|i|t|h|o|u|t| |r|e|t|u|r|n| |t|y|p|e| +0#0000000&@53
+|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|(+0#e000e06&|)| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58
+|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|(+0#e000e06&|_+0#00e0e07&|)+0#e000e06&| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
+|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|(+0#e000e06&|x+0#00e0e07&|)+0#e000e06&| +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&|(+0#e000e06&|.+0#0000000&@2|y+0#00e0e07&|)+0#e000e06&| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
+|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|(+0#e000e06&|_+0#00e0e07&|,+0#0000000&| |.@2|y+0#00e0e07&|)+0#e000e06&| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51
+|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|(+0#e000e06&|x+0#00e0e07&|,+0#0000000&| |.@2|y+0#00e0e07&|)+0#e000e06&| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51
+@75
+|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|(+0#e000e06&|x+0#00e0e07&|,+0#0000000&| |y+0#00e0e07&|)+0#e000e06&| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
+@75
+|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|(+0#e000e06&|_+0#00e0e07&|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r|)+0#e000e06&| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@49
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim9_lambda_01.dump b/runtime/syntax/testdir/dumps/vim9_lambda_01.dump
new file mode 100644
index 0000000..00b1a33
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_lambda_01.dump
@@ -0,0 +1,20 @@
+|F+0#00e0e07#ffffff0|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|(+0#e000e06&|_+0#00e0e07&|,+0#0000000&| |.@2|y+0#00e0e07&|)+0#e000e06&| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51
+|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|(+0#e000e06&|x+0#00e0e07&|,+0#0000000&| |.@2|y+0#00e0e07&|)+0#e000e06&| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51
+@75
+|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|(+0#e000e06&|x+0#00e0e07&|,+0#0000000&| |y+0#00e0e07&|)+0#e000e06&| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
+@75
+>F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|(+0#e000e06&|_+0#00e0e07&|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r|)+0#e000e06&| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@49
+|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|(+0#e000e06&|x+0#00e0e07&|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r|)+0#e000e06&| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@49
+@75
+|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|(+0#e000e06&|.+0#0000000&@2|y+0#00e0e07&|:+0#0000000&| |l+0#00e0003&|i|s|t|<|n|u|m|b|e|r|>|)+0#e000e06&| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@40
+|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|(+0#e000e06&|_+0#00e0e07&|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r|,+0#0000000&| |.@2|y+0#00e0e07&|:+0#0000000&| |l+0#00e0003&|i|s|t|<|n|u|m|b|e|r|>|)+0#e000e06&| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@29
+|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|(+0#e000e06&|x+0#00e0e07&|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r|,+0#0000000&| |.@2|y+0#00e0e07&|:+0#0000000&| |l+0#00e0003&|i|s|t|<|n|u|m|b|e|r|>|)+0#e000e06&| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@29
+@75
+|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|(+0#e000e06&|x+0#00e0e07&|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r|,+0#0000000&| |y+0#00e0e07&|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r|)+0#e000e06&| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@38
+@75
+|#+0#0000e05&| |w|i|t|h| |r|e|t|u|r|n| |t|y|p|e| +0#0000000&@56
+|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@50
+|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|(+0#e000e06&|_+0#00e0e07&|)+0#e000e06&|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@49
+|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|(+0#e000e06&|x+0#00e0e07&|)+0#e000e06&|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@49
+@75
+@57|1|9|,|1| @9|1|3|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_lambda_02.dump b/runtime/syntax/testdir/dumps/vim9_lambda_02.dump
new file mode 100644
index 0000000..5848c5c
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_lambda_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|(+0#e000e06&|.+0#0000000&@2|y+0#00e0e07&|)+0#e000e06&|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@46
+|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|(+0#e000e06&|_+0#00e0e07&|,+0#0000000&| |.@2|y+0#00e0e07&|)+0#e000e06&|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@43
+|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|(+0#e000e06&|x+0#00e0e07&|,+0#0000000&| |.@2|y+0#00e0e07&|)+0#e000e06&|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@43
+@75
+>F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|(+0#e000e06&|x+0#00e0e07&|,+0#0000000&| |y+0#00e0e07&|)+0#e000e06&|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@46
+@75
+|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|(+0#e000e06&|_+0#00e0e07&|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r|)+0#e000e06&|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@41
+|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|(+0#e000e06&|x+0#00e0e07&|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r|)+0#e000e06&|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@41
+@75
+|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|(+0#e000e06&|.+0#0000000&@2|y+0#00e0e07&|:+0#0000000&| |l+0#00e0003&|i|s|t|<|n|u|m|b|e|r|>|)+0#e000e06&|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@32
+|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|(+0#e000e06&|_+0#00e0e07&|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r|,+0#0000000&| |.@2|y+0#00e0e07&|:+0#0000000&| |l+0#00e0003&|i|s|t|<|n|u|m|b|e|r|>|)+0#e000e06&|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@21
+|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|(+0#e000e06&|x+0#00e0e07&|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r|,+0#0000000&| |.@2|y+0#00e0e07&|:+0#0000000&| |l+0#00e0003&|i|s|t|<|n|u|m|b|e|r|>|)+0#e000e06&|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@21
+@75
+|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|(+0#e000e06&|x+0#00e0e07&|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r|,+0#0000000&| |y+0#00e0e07&|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r|)+0#e000e06&|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@30
+@75
+@75
+|#+0#0000e05&| |p|o|s|t| |o|p|e|r|a|t|o|r| |c|o|m@1|e|n|t|s| +0#0000000&@50
+@75
+@57|3|7|,|1| @9|3|1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_lambda_03.dump b/runtime/syntax/testdir/dumps/vim9_lambda_03.dump
new file mode 100644
index 0000000..9191fe5
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_lambda_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|(+0#e000e06&|)| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@53
+@2|e+0#00e0e07&|x|p|r| +0#0000000&@68
+|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|(+0#e000e06&|)| +0#0000000&|=+0#af5f00255&|>| +0#0000000&@63
+@2|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@63
+@2>e+0#00e0e07&|x|p|r| +0#0000000&@68
+|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|(+0#e000e06&|)| +0#0000000&|=+0#af5f00255&|>| +0#0000000&@63
+@75
+@2|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@63
+@75
+@2|e+0#00e0e07&|x|p|r| +0#0000000&@68
+@75
+@75
+|#+0#0000e05&| |l|i|n|e| |c|o|n|t|i|n|u|a|t|i|o|n|s| +0#0000000&@54
+@75
+|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|(+0#e000e06&|x+0#00e0e07&|:+0#0000000&| |s+0#00e0003&|t|r|i|n|g|,+0#0000000&| @57
+@6|\+0#e000e06&| +0#0000000&|y+0#00e0e07&|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r|,+0#0000000&| @56
+@6|\+0#e000e06&| +0#0000000&|z+0#00e0e07&|:+0#0000000&| |b+0#00e0003&|o@1|l|)+0#e000e06&|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@42
+|#+0#0000e05&| |F+0#0000001#ffff4012|I|X|M|E| +0#0000000#ffffff0@67
+@57|5@1|,|3| @9|5|0|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_lambda_04.dump b/runtime/syntax/testdir/dumps/vim9_lambda_04.dump
new file mode 100644
index 0000000..d0bf413
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_lambda_04.dump
@@ -0,0 +1,20 @@
+|#+0#0000e05#ffffff0| |F+0#0000001#ffff4012|I|X|M|E| +0#0000000#ffffff0@67
+|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|(+0#e000e06&|x+0#00e0e07&|:+0#0000000&| |s+0#00e0003&|t|r|i|n|g|,+0#0000000&| @57
+@6|\+0#e000e06&| +0#0000000&|y+0#00e0e07&|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r|,+0#0000000&| @56
+@6|\+0#e000e06&| +0#0000000&|z+0#00e0e07&|:+0#0000000&| |b+0#00e0003&|o@1|l|)+0#e000e06&|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@50
+@6|\| |=+0#af5f00255&|>| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
+> @74
+@75
+|#+0#0000e05&| |f|u|n|c|r|e|f| |c|a|l@1| +0#0000000&@60
+@75
+|e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&@1|)| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|4+0#e000002&|2|)+0#e000e06&|(|)| +0#0000000&@57
+|e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&@1|x+0#00e0e07&|:+0#0000000&| |s+0#00e0003&|t|r|i|n|g|)+0#e000e06&|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|4+0#e000002&|2|)+0#e000e06&|(|"+0#e000002&|f|o@1|"|)+0#e000e06&| +0#0000000&@35
+@75
+@75
+|#+0#0000e05&| |:|h|e|l|p| |v|i|m|9|-|l|a|m|b|d|a| +0#0000000&@55
+@75
+|v+0#af5f00255&|a|r| +0#0000000&|l+0#00e0e07&|i|s|t| +0#0000000&|=+0#af5f00255&| +0#0000000&|[+0#e000e06&|1+0#e000002&|,+0#0000000&| |2+0#e000002&|,+0#0000000&| |3+0#e000002&|]+0#e000e06&| +0#0000000&@54
+|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|i|l|t|e|r|(+0#e000e06&|l+0#00e0e07&|i|s|t|,+0#0000000&| |(+0#e000e06&|k+0#00e0e07&|,+0#0000000&| |v+0#00e0e07&|)+0#e000e06&| +0#0000000&|=+0#af5f00255&|>| +0#0000000&@47
+@16|v+0#00e0e07&| +0#0000000&|>+0#af5f00255&| +0#0000000&|0+0#e000002&|)+0#e000e06&| +0#0000000&@52
+|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|i|l|t|e|r|(+0#e000e06&|l+0#00e0e07&|i|s|t|,+0#0000000&| |(+0#e000e06&|k+0#00e0e07&|,+0#0000000&| @53
+@57|7|3|,|0|-|1| @7|6|9|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_lambda_05.dump b/runtime/syntax/testdir/dumps/vim9_lambda_05.dump
new file mode 100644
index 0000000..bfdea5e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_lambda_05.dump
@@ -0,0 +1,20 @@
+|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|f+0#00e0e07&|i|l|t|e|r|(+0#e000e06&|l+0#00e0e07&|i|s|t|,+0#0000000&| |(+0#e000e06&|k+0#00e0e07&|,+0#0000000&| @53
+@6|\+0#e000e06&| +0#0000000&|v+0#00e0e07&|)+0#e000e06&| +0#0000000&@64
+| +0#e000e06&@5|\| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|v+0#00e0e07&| +0#0000000&|>+0#af5f00255&| +0#0000000&|0+0#e000002&|)+0#e000e06&| +0#0000000&@57
+@75
+|v+0#af5f00255&|a|r| +0#0000000&|C+0#00e0e07&|a|l@1|b|a|c|k| +0#0000000&|=+0#af5f00255&| +0#0000000&|(+0#e000e06&|.+0#0000000&@2|_+0#00e0e07&|)+0#e000e06&| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|'+0#e000002&|a|n|y|t|h|i|n|g|'| +0#0000000&@39
+>e+0#af5f00255&|c|h|o| +0#0000000&|C|a|l@1|b|a|c|k|(+0#e000e06&|1+0#e000002&|,+0#0000000&| |2+0#e000002&|,+0#0000000&| |3+0#e000002&|)+0#e000e06&| +0#0000000&@1|#| |d+0#00e0e07&|i|s|p|l|a|y|s| +0#0000000&|"+0#e000002&|a|n|y|t|h|i|n|g|"| +0#0000000&@29
+@75
+|v+0#af5f00255&|a|r| +0#0000000&|L+0#00e0e07&|a|m|b|d|a| +0#0000000&|=+0#af5f00255&| +0#0000000&|(+0#e000e06&|a+0#00e0e07&|r|g|)+0#e000e06&| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|{+0#e000e06&| +0#0000000&@51
+@8|g+0#00e0e07&|:|w|a|s|_|c|a|l@1|e|d| +0#0000000&|=+0#af5f00255&| +0#0000000&|'+0#e000002&|y|e|s|'| +0#0000000&@46
+@8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
+@4|}+0#e000e06&| +0#0000000&@69
+@75
+|v+0#af5f00255&|a|r| +0#0000000&|c+0#00e0e07&|o|u|n|t| +0#0000000&|=+0#af5f00255&| +0#0000000&|0+0#e000002&| +0#0000000&@61
+|v+0#af5f00255&|a|r| +0#0000000&|t+0#00e0e07&|i|m|e|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|t+0#00e0e07&|i|m|e|r|_|s|t|a|r|t|(+0#e000e06&|5+0#e000002&|0@1|,+0#0000000&| |(+0#e000e06&|_+0#00e0e07&|)+0#e000e06&| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|{+0#e000e06&| +0#0000000&@37
+@8| +0#00e0e07&|c|o|u|n|t| +0#0000000&|++0#af5f00255&|=| +0#0000000&|1+0#e000002&| +0#0000000&@55
+@9|e+0#af5f00255&|c|h|o|m| +0#0000000&|'+0#e000002&|H|a|n|d|l|e|r| |c|a|l@1|e|d| |'| +0#0000000&|.+0#af5f00255&@1| +0#0000000&|c+0#00e0e07&|o|u|n|t| +0#0000000&@33
+@5|}+0#e000e06&|,+0#0000000&| |{+0#e000e06&|r+0#00e0e07&|e|p|e|a|t|:+0#0000000&| |3+0#e000002&|}+0#e000e06&|)| +0#0000000&@54
+@75
+|v+0#af5f00255&|a|r| +0#0000000&|d+0#00e0e07&|i|c|t| +0#0000000&|=+0#af5f00255&| +0#0000000&|{+0#e000e06&|}| +0#0000000&@61
+@57|9|1|,|1| @9|8|7|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_lambda_06.dump b/runtime/syntax/testdir/dumps/vim9_lambda_06.dump
new file mode 100644
index 0000000..da23ee2
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_lambda_06.dump
@@ -0,0 +1,20 @@
+|v+0#af5f00255#ffffff0|a|r| +0#0000000&|d+0#00e0e07&|i|c|t| +0#0000000&|=+0#af5f00255&| +0#0000000&|{+0#e000e06&|}| +0#0000000&@61
+|v+0#af5f00255&|a|r| +0#0000000&|d+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|m+0#00e0e07&|a|p|n|e|w|(+0#e000e06&|d+0#00e0e07&|i|c|t|,+0#0000000&| |(+0#e000e06&|k+0#00e0e07&|,+0#0000000&| |v+0#00e0e07&|)+0#e000e06&|:+0#0000000&| |s+0#00e0003&|t|r|i|n|g| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|{+0#e000e06&| +0#0000000&@34
+@5|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|'+0#e000002&|v|a|l|u|e|'| +0#0000000&@55
+@3|}+0#e000e06&|)| +0#0000000&@69
+@75
+> @74
+|#+0#0000e05&| |I|s@1|u|e| |#|1|5|9|7|0| |(|v|i|m|9|:| |R|e|s|t|o|r|e| |a|n|d| |e|x|t|e|n|d| |t|h|e| |r|e|c|o|g|n|i|t|i|o|n| |o|f| |E|n|u|m| |b|o|d|y| |i|t|e|m|s
+|)| +0#0000000&@73
+@75
+|d+0#af5f00255&|e|f| +0#0000000&|O|p|(+0#e000e06&|)|:+0#0000000&| |f+0#00e0003&|u|n|c|(|f|u|n|c|(|n|u|m|b|e|r|,+0#0000000&| |n+0#00e0003&|u|m|b|e|r|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r|)|:+0#0000000&| |f+0#00e0003&|u|n|c|(|n|u|m|b|e|r|,+0#0000000&| |D|i|g|i|t|)+0#00e0003&|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@1
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(+0#e000e06&|F+0#00e0e07&|:+0#0000000&| |f+0#00e0003&|u|n|c|(|n|u|m|b|e|r|,+0#0000000&| |n+0#00e0003&|u|m|b|e|r|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r|)+0#e000e06&| +0#0000000&|=+0#af5f00255&|>| +0#0000000&@27
+@8|(+0#e000e06&|x+0#00e0e07&|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r|,+0#0000000&| |y+0#00e0e07&|:+0#0000000&| |D|i|g|i|t|)+0#e000e06&|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|F|(+0#e000e06&|x+0#00e0e07&|,+0#0000000&| |y+0#00e0e07&|.+0#af5f00255&|v+0#00e0e07&|a|l|u|e|)+0#e000e06&| +0#0000000&@20
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&|#+0#0000e05&@22| |^| |v|i|m|C|o|m@1|a|n|d|?| +0#0000000&@30
+@75
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|0|9|,|0|-|1| @6|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim9_legacy_header_00.dump b/runtime/syntax/testdir/dumps/vim9_legacy_header_00.dump
index a5f1802..f9896e2 100644
--- a/runtime/syntax/testdir/dumps/vim9_legacy_header_00.dump
+++ b/runtime/syntax/testdir/dumps/vim9_legacy_header_00.dump
@@ -2,7 +2,7 @@
 @75
 |i+0#af5f00255&|f| +0#0000000&|!+0#af5f00255&|h+0#00e0e07&|a|s|(+0#e000e06&|'+0#e000002&|v|i|m|9|s|c|r|i|p|t|'|)+0#e000e06&| +0#0000000&@53
 @2|#| |4+0#e000002&|2| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@58
-@2|s+0#af5f00255&|o|u|r|c|e| +0#0000000&|f|o@1|.+0#af5f00255&|v|i|m| +0#0000000&@58
+@2|s+0#af5f00255&|o|u|r|c|e| +0#00e0e07&|f|o@1|.+0#af5f00255&|v+0#00e0e07&|i|m| +0#0000000&@58
 @2|f+0#af5f00255&|i|n|i|s|h| +0#0000000&@66
 |e+0#af5f00255&|n|d|i|f| +0#0000000&@69
 @75
diff --git a/runtime/syntax/testdir/dumps/vim9_super_this_keywords2_00.dump b/runtime/syntax/testdir/dumps/vim9_super_this_keywords2_00.dump
new file mode 100644
index 0000000..054bba1
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_super_this_keywords2_00.dump
@@ -0,0 +1,20 @@
+>v+0#af5f00255#ffffff0|i|m|9|s|c|r|i|p|t| +0#0000000&@64
+@75
+|#+0#0000e05&| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |h|i| |l|i|n|k| |v|i|m|9|S|u|p|e|r| |T|o|d|o| +0#0000000&@35
+|#+0#0000e05&| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |h|i| |l|i|n|k| |v|i|m|9|T|h|i|s| |T|o|d|o| +0#0000000&@36
+|#+0#0000e05&| +0#0000000&|S+0#e000e06&|e@1|:| +0#0000e05&|h|t@1|p|s|:|/@1|g|i|t|h|u|b|.|c|o|m|/|v|i|m|/|v|i|m|/|p|u|l@1|/|1|6|4|7|6|#|i|s@1|u|e|c|o|m@1|e|n|t|-|2|6|3|8|1|9|1@2|0| +0#0000000&@6
+@75
+@75
+|c+0#af5f00255&|l|a|s@1| +0#0000000&|A| @67
+@2|v+0#af5f00255&|a|r| +0#0000000&|_+0#00e0e07&|v|a|l|u|e|:+0#0000000&| |a+0#00e0003&|n|y| +0#0000000&@57
+@75
+@2|d+0#af5f00255&|e|f| +0#0000000&|n+0#00e0e07&|e|w|(+0#e000e06&|v+0#00e0e07&|a|l|u|e|:+0#0000000&| |a+0#00e0003&|n|y|)+0#e000e06&| +0#0000000&@53
+@3| +0#00e0e07&|t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|_+0#0000000&|B|a|s|e|I|n|i|t|(+0#e000e06&|v+0#00e0e07&|a|l|u|e|)+0#e000e06&| +0#0000000&@49
+@2|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@66
+@75
+@2|d+0#af5f00255&|e|f| +0#0000000&|_|B|a|s|e|I|n|i|t|(+0#e000e06&|v+0#00e0e07&|a|l|u|e|:+0#0000000&| |a+0#00e0003&|n|y|)+0#e000e06&| +0#0000000&@47
+@3| +0#00e0e07&|t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|_+0#00e0e07&|v|a|l|u|e| +0#0000000&|=+0#af5f00255&| +0#0000000&|v+0#00e0e07&|a|l|u|e| +0#0000000&@51
+@2|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@66
+@75
+@2|d+0#af5f00255&|e|f| +0#0000000&|V|a|l|u|e|(+0#e000e06&|)|:+0#0000000&| |a+0#00e0003&|n|y| +0#0000000&@56
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim9_super_this_keywords2_01.dump b/runtime/syntax/testdir/dumps/vim9_super_this_keywords2_01.dump
new file mode 100644
index 0000000..aaa99d7
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_super_this_keywords2_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+@2|d+0#af5f00255&|e|f| +0#0000000&|_|B|a|s|e|I|n|i|t|(+0#e000e06&|v+0#00e0e07&|a|l|u|e|:+0#0000000&| |a+0#00e0003&|n|y|)+0#e000e06&| +0#0000000&@47
+@3| +0#00e0e07&|t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|_+0#00e0e07&|v|a|l|u|e| +0#0000000&|=+0#af5f00255&| +0#0000000&|v+0#00e0e07&|a|l|u|e| +0#0000000&@51
+@2|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@66
+@75
+@2>d+0#af5f00255&|e|f| +0#0000000&|V|a|l|u|e|(+0#e000e06&|)|:+0#0000000&| |a+0#00e0003&|n|y| +0#0000000&@56
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|_+0#00e0e07&|v|a|l|u|e| +0#0000000&@52
+@2|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@66
+|e+0#af5f00255&|n|d|c|l|a|s@1| +0#0000000&@66
+@75
+|c+0#af5f00255&|l|a|s@1| +0#0000000&|B| |e+0#af5f00255&|x|t|e|n|d|s| +0#0000000&|A| @57
+@2|d+0#af5f00255&|e|f| +0#0000000&|n+0#00e0e07&|e|w|(+0#e000e06&|v+0#00e0e07&|a|l|u|e|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r|)+0#e000e06&| +0#0000000&@50
+@3| +0#00e0e07&|s+0#0000001#ffff4012|u|p|e|r|.+0#af5f00255#ffffff0|_+0#0000000&|B|a|s|e|I|n|i|t|(+0#e000e06&|v+0#00e0e07&|a|l|u|e|)+0#e000e06&| +0#0000000&@48
+@2|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@66
+@75
+@2|d+0#af5f00255&|e|f| +0#0000000&|V|a|l|u|e|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@53
+@4|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#0000001#ffff4012|h|i|s| +0#0000000#ffffff0@61
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|s+0#0000001#ffff4012|u|p|e|r|.+0#af5f00255#ffffff0|_+0#00e0e07&|v|a|l|u|e| +0#0000000&@51
+@2|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@66
+@57|1|9|,|3| @9|2|9|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_super_this_keywords2_02.dump b/runtime/syntax/testdir/dumps/vim9_super_this_keywords2_02.dump
new file mode 100644
index 0000000..f9449f5
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_super_this_keywords2_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@1|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@66
+|e+0#af5f00255&|n|d|c|l|a|s@1| +0#0000000&@66
+@75
+|c+0#af5f00255&|l|a|s@1| +0#0000000&|C| |e+0#af5f00255&|x|t|e|n|d|s| +0#0000000&|A| @57
+@2|#+0#0000e05&@3| |E|1@1|7| +0#0000000&@63
+| +0#0000e05&@1>#| @2|d|e|f| |n|e|w|(|v|a|l|u|e|:| |s|t|r|i|n|g|)| +0#0000000&@46
+| +0#0000e05&@1|#| @6|s|u|p|e|r|(|v|a|l|u|e|)| +0#0000000&@52
+| +0#0000e05&@1|#| @2|e|n|d@1|e|f| +0#0000000&@62
+@75
+| +0#0000e05&@1|#@3| |E|1|0|3|4| +0#0000000&@62
+| +0#0000e05&@1|#| @2|d|e|f| |n|e|w|(|s|u|p|e|r|.|_|v|a|l|u|e|)| +0#0000000&@47
+| +0#0000e05&@1|#| @2|e|n|d@1|e|f| +0#0000000&@62
+@75
+| +0#0000e05&@1|#@3| |E|1|0|3|4| +0#0000000&@62
+| +0#0000e05&@1|#| @2|d|e|f| |n|e|w|(|v|a|l|u|e|:| |s|t|r|i|n|g|)| +0#0000000&@46
+| +0#0000e05&@1|#| @6|s|u|p|e|r|.|_|v|a|l|u|e| |=| |v|a|l|u|e| +0#0000000&@44
+| +0#0000e05&@1|#| @2|e|n|d@1|e|f| +0#0000000&@62
+@75
+| +0#0000e05&@1|#@3| |E|1|3|5|6| +0#0000000&@62
+@57|3|7|,|3| @9|7|0|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_super_this_keywords2_03.dump b/runtime/syntax/testdir/dumps/vim9_super_this_keywords2_03.dump
new file mode 100644
index 0000000..95ff495
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_super_this_keywords2_03.dump
@@ -0,0 +1,20 @@
+| +0#0000e05#ffffff0@1|#@3| |E|1|3|5|6| +0#0000000&@62
+| +0#0000e05&@1|#| @2|d|e|f| |S|u|p|e|r|(|)|:| |A| +0#0000000&@54
+| +0#0000e05&@1|#| @6|r|e|t|u|r|n| |s|u|p|e|r| +0#0000000&@52
+| +0#0000e05&@1|#| @2|e|n|d@1|e|f| +0#0000000&@62
+@75
+@2>d+0#af5f00255&|e|f| +0#0000000&|T|h|i|s|(+0#e000e06&|)|:+0#0000000&| |C| @59
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|t+0#0000001#ffff4012|h|i|s| +0#0000000#ffffff0@59
+@2|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@66
+|e+0#af5f00255&|n|d|c|l|a|s@1| +0#0000000&@66
+@75
+|e+0#af5f00255&|c|h|o| +0#0000000&|1+0#e000002&| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|A|.|n+0#00e0e07&|e|w|(+0#e000e06&|1+0#e000002&|)+0#e000e06&|.+0#af5f00255&|V+0#0000000&|a|l|u|e|(+0#e000e06&|)| +0#0000000&@48
+|e+0#af5f00255&|c|h|o| +0#0000000&|2+0#e000002&| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|B|.|n+0#00e0e07&|e|w|(+0#e000e06&|2+0#e000002&|)+0#e000e06&|.+0#af5f00255&|V+0#0000000&|a|l|u|e|(+0#e000e06&|)| +0#0000000&@48
+|d+0#af5f00255&|e|f|c|o|m|p|i|l|e| +0#0000000&|C| @62
+@75
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|5@1|,|3| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim9_super_this_keywords3_00.dump b/runtime/syntax/testdir/dumps/vim9_super_this_keywords3_00.dump
new file mode 100644
index 0000000..7f5ddfd
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_super_this_keywords3_00.dump
@@ -0,0 +1,20 @@
+>v+0#af5f00255#ffffff0|i|m|9|s|c|r|i|p|t| +0#0000000&@64
+@75
+|#+0#0000e05&| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |h|i| |l|i|n|k| |v|i|m|9|S|u|p|e|r| |T|o|d|o| +0#0000000&@35
+|#+0#0000e05&| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |h|i| |l|i|n|k| |v|i|m|9|T|h|i|s| |T|o|d|o| +0#0000000&@36
+|#+0#0000e05&| +0#0000000&|S+0#e000e06&|e@1|:| +0#0000e05&|h|t@1|p|s|:|/@1|g|i|t|h|u|b|.|c|o|m|/|v|i|m|/|v|i|m|/|p|u|l@1|/|1|6|4|7|6|#|i|s@1|u|e|c|o|m@1|e|n|t|-|2|6|3|5|1@1|9|4|7|8| +0#0000000&@6
+@75
+@75
+|c+0#af5f00255&|l|a|s@1| +0#0000000&|A| @67
+@4|c+0#af5f00255&|o|n|s|t| +0#0000000&|_+0#00e0e07&|v|a|l|u|e|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@50
+@75
+@4|d+0#af5f00255&|e|f| +0#0000000&|n+0#00e0e07&|e|w|(+0#e000e06&|t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|_+0#00e0e07&|v|a|l|u|e|)+0#e000e06&| +0#0000000&@50
+@4|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@64
+@75
+@4|d+0#af5f00255&|e|f| +0#0000000&|K|(+0#e000e06&|)|:+0#0000000&| |f+0#00e0003&|u|n|c|(|a|n|y|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@44
+@8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(+0#e000e06&@1|_+0#00e0e07&|:+0#0000000&| |a+0#00e0003&|n|y|)+0#e000e06&| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|_+0#00e0e07&|v|a|l|u|e|)+0#e000e06&| +0#0000000&@34
+@4|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@64
+|e+0#af5f00255&|n|d|c|l|a|s@1| +0#0000000&@66
+@75
+|c+0#af5f00255&|l|a|s@1| +0#0000000&|B| |e+0#af5f00255&|x|t|e|n|d|s| +0#0000000&|A| @57
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim9_super_this_keywords3_01.dump b/runtime/syntax/testdir/dumps/vim9_super_this_keywords3_01.dump
new file mode 100644
index 0000000..f9aa042
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_super_this_keywords3_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|d+0#af5f00255&|e|f| +0#0000000&|K|(+0#e000e06&|)|:+0#0000000&| |f+0#00e0003&|u|n|c|(|a|n|y|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@44
+@8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(+0#e000e06&@1|_+0#00e0e07&|:+0#0000000&| |a+0#00e0003&|n|y|)+0#e000e06&| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|_+0#00e0e07&|v|a|l|u|e|)+0#e000e06&| +0#0000000&@34
+@4|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@64
+|e+0#af5f00255&|n|d|c|l|a|s@1| +0#0000000&@66
+@75
+>c+0#af5f00255&|l|a|s@1| +0#0000000&|B| |e+0#af5f00255&|x|t|e|n|d|s| +0#0000000&|A| @57
+@4|d+0#af5f00255&|e|f| +0#0000000&|K|(+0#e000e06&|)|:+0#0000000&| |f+0#00e0003&|u|n|c|(|a|n|y|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@44
+@8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(+0#e000e06&@1|_+0#00e0e07&|:+0#0000000&| |a+0#00e0003&|n|y|)+0#e000e06&| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|s+0#0000001#ffff4012|u|p|e|r|.+0#af5f00255#ffffff0|_+0#00e0e07&|v|a|l|u|e|)+0#e000e06&| +0#0000000&@33
+@4|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@64
+|e+0#af5f00255&|n|d|c|l|a|s@1| +0#0000000&@66
+@75
+|e+0#af5f00255&|c|h|o| +0#0000000&|1+0#e000002&| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|A|.|n+0#00e0e07&|e|w|(+0#e000e06&|1+0#e000002&|)+0#e000e06&|.+0#af5f00255&|K+0#0000000&|(+0#e000e06&|)|(|n+0#00e0e07&|u|l@1|)+0#e000e06&| +0#0000000&@46
+|e+0#af5f00255&|c|h|o| +0#0000000&|2+0#e000002&| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|B|.|n+0#00e0e07&|e|w|(+0#e000e06&|2+0#e000002&|)+0#e000e06&|.+0#af5f00255&|K+0#0000000&|(+0#e000e06&|)|(|n+0#00e0e07&|u|l@1|)+0#e000e06&| +0#0000000&@46
+@75
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|9|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim9_super_this_keywords_00.dump b/runtime/syntax/testdir/dumps/vim9_super_this_keywords_00.dump
new file mode 100644
index 0000000..f62ef1e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_super_this_keywords_00.dump
@@ -0,0 +1,20 @@
+>v+0#af5f00255#ffffff0|i|m|9|s|c|r|i|p|t| +0#0000000&@64
+@75
+|#+0#0000e05&| |V|i|m|9| |t|h|i|s| |a|n|d| |s|u|p|e|r| |k|e|y|w|o|r|d|s| +0#0000000&@44
+|#+0#0000e05&| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |h|i| |l|i|n|k| |v|i|m|9|T|h|i|s| |T|o|d|o| +0#0000000&@36
+|#+0#0000e05&| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |h|i| |l|i|n|k| |v|i|m|9|S|u|p|e|r| |T|o|d|o| +0#0000000&@35
+@75
+|d+0#af5f00255&|e|f| +0#0000000&|E|c|h|o|(+0#e000e06&|.+0#0000000&@2|a+0#00e0e07&|r|g|s|:+0#0000000&| |l+0#00e0003&|i|s|t|<|a|n|y|>|)+0#e000e06&| +0#0000000&@46
+@2|e+0#af5f00255&|c|h|o| +0#0000000&|a+0#00e0e07&|r|g|s| +0#0000000&@63
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
+@75
+|c+0#af5f00255&|l|a|s@1| +0#0000000&|F|o@1| @65
+@2|v+0#af5f00255&|a|r| +0#0000000&|x+0#00e0e07&|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|4+0#e000002&|2| +0#0000000&@54
+@2|v+0#af5f00255&|a|r| +0#0000000&|y+0#00e0e07&|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|x+0#00e0e07&| +0#0000000&|++0#af5f00255&| +0#0000000&|4+0#e000002&|1| +0#0000000&@45
+@2|v+0#af5f00255&|a|r| +0#0000000&|z+0#00e0e07&|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|x+0#00e0e07&| +0#0000000&|++0#af5f00255&| +0#0000000&|t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|y+0#00e0e07&| +0#0000000&@41
+@75
+@2|d+0#af5f00255&|e|f| +0#0000000&|n+0#00e0e07&|e|w|(+0#e000e06&|)| +0#0000000&@63
+@4|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|x+0#00e0e07&| +0#0000000&|t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|y+0#00e0e07&| +0#0000000&|t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|z+0#00e0e07&| +0#0000000&@45
+@2|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@66
+@75
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim9_super_this_keywords_01.dump b/runtime/syntax/testdir/dumps/vim9_super_this_keywords_01.dump
new file mode 100644
index 0000000..1777272
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_super_this_keywords_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@1|v+0#af5f00255&|a|r| +0#0000000&|z+0#00e0e07&|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|x+0#00e0e07&| +0#0000000&|++0#af5f00255&| +0#0000000&|t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|y+0#00e0e07&| +0#0000000&@41
+@75
+@2|d+0#af5f00255&|e|f| +0#0000000&|n+0#00e0e07&|e|w|(+0#e000e06&|)| +0#0000000&@63
+@4|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|x+0#00e0e07&| +0#0000000&|t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|y+0#00e0e07&| +0#0000000&|t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|z+0#00e0e07&| +0#0000000&@45
+@2|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@66
+> @74
+@2|d+0#af5f00255&|e|f| +0#0000000&|n+0#00e0e07&|e|w|X|Y|(+0#e000e06&|t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|x+0#00e0e07&|,+0#0000000&| |t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|y+0#00e0e07&|,+0#0000000&| |t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|z+0#00e0e07&|)+0#e000e06&| +0#0000000&@39
+@2|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@66
+@75
+@2|d+0#af5f00255&|e|f| +0#0000000&|D|e|f|1|(+0#e000e06&|a+0#00e0e07&|r|g| +0#0000000&|=+0#af5f00255&| +0#0000000&|t+0#0000001#ffff4012|h|i|s|.+0#0000000#ffffff0|x+0#00e0e07&|)+0#e000e06&| +0#0000000&@50
+@3| +0#00e0e07&|t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|y+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|a+0#00e0e07&|r|g| +0#0000000&@58
+@3| +0#00e0e07&|t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|z+0#00e0e07&| +0#0000000&|++0#af5f00255&|=| +0#0000000&|a+0#00e0e07&|r|g| +0#0000000&@57
+@2|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@66
+@75
+@2|d+0#af5f00255&|e|f| +0#0000000&|D|e|f|2|(+0#e000e06&|a+0#00e0e07&|r|g| +0#0000000&|=+0#af5f00255&| +0#0000000&|(+0#e000e06&|t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|x+0#00e0e07&| +0#0000000&|++0#af5f00255&| +0#0000000&|t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|y+0#00e0e07&| +0#0000000&|++0#af5f00255&| +0#0000000&|t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|z+0#00e0e07&|)+0#e000e06&@1| +0#0000000&@30
+@4|E|c|h|o|(+0#e000e06&|t+0#0000001#ffff4012|h|i|s|,+0#0000000#ffffff0| |t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|x+0#00e0e07&|,+0#0000000&| |t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|y+0#00e0e07&|,+0#0000000&| |t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|z+0#00e0e07&|)+0#e000e06&| +0#0000000&@36
+@3| +0#00e0e07&|t+0#0000001#ffff4012|h|i|s|-+0#af5f00255#ffffff0|>|E+0#0000000&|c|h|o|(+0#e000e06&|t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|x+0#00e0e07&|,+0#0000000&| |t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|y+0#00e0e07&|,+0#0000000&| |t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|z+0#00e0e07&|)+0#e000e06&| +0#0000000&@36
+@2|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@66
+@75
+@57|1|9|,|0|-|1| @7|1|9|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_super_this_keywords_02.dump b/runtime/syntax/testdir/dumps/vim9_super_this_keywords_02.dump
new file mode 100644
index 0000000..6ec09d3
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_super_this_keywords_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+@2|d+0#af5f00255&|e|f| +0#0000000&|D|e|f|3|(+0#e000e06&|)|:+0#0000000&| |F|o@1| @57
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|t+0#0000001#ffff4012|h|i|s| +0#0000000#ffffff0@59
+@2|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@66
+@75
+@2>d+0#af5f00255&|e|f| +0#0000000&|D|e|f|4|(+0#e000e06&|a+0#00e0e07&|r|g|:+0#0000000&| |F|o@1| |=+0#af5f00255&| +0#0000000&|t+0#0000001#ffff4012|h|i|s|)+0#e000e06#ffffff0|:+0#0000000&| |F|o@1| @42
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|a+0#00e0e07&|r|g| +0#0000000&@60
+@2|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@66
+|e+0#af5f00255&|n|d|c|l|a|s@1| +0#0000000&@66
+@75
+|c+0#af5f00255&|l|a|s@1| +0#0000000&|B|a|r| |e+0#af5f00255&|x|t|e|n|d|s| +0#0000000&|F|o@1| @53
+@2|d+0#af5f00255&|e|f| +0#0000000&|D|e|f|1|(+0#e000e06&|)| +0#0000000&@62
+@3| +0#00e0e07&|s+0#0000001#ffff4012|u|p|e|r|.+0#af5f00255#ffffff0|D+0#0000000&|e|f|1|(+0#e000e06&|)| +0#0000000&@58
+@2|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@66
+@75
+@2|d+0#af5f00255&|e|f| +0#0000000&|D|e|f|2|(+0#e000e06&|)| +0#0000000&@62
+@4|v+0#af5f00255&|a|r| +0#0000000&|a+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|s+0#0000001#ffff4012|u|p|e|r|.+0#af5f00255#ffffff0|x+0#00e0e07&| +0#0000000&|*+0#af5f00255&| +0#0000000&|s+0#0000001#ffff4012|u|p|e|r|.+0#af5f00255#ffffff0|y+0#00e0e07&| +0#0000000&|*+0#af5f00255&| +0#0000000&|s+0#0000001#ffff4012|u|p|e|r|.+0#af5f00255#ffffff0|z+0#00e0e07&| +0#0000000&@35
+@4|v+0#af5f00255&|a|r| +0#0000000&|b+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|[+0#e000e06&|s+0#0000001#ffff4012|u|p|e|r|.+0#af5f00255#ffffff0|x+0#00e0e07&|,+0#0000000&| |s+0#0000001#ffff4012|u|p|e|r|.+0#af5f00255#ffffff0|y+0#00e0e07&|,+0#0000000&| |s+0#0000001#ffff4012|u|p|e|r|.+0#af5f00255#ffffff0|z+0#00e0e07&|]+0#e000e06&| +0#0000000&@35
+@4|v+0#af5f00255&|a|r| +0#0000000&|c+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|{+0#e000e06&|s+0#00e0e07&|u|p|e|r|:+0#0000000&| |s+0#0000001#ffff4012|u|p|e|r|.+0#af5f00255#ffffff0|x+0#00e0e07&|,+0#0000000&| |t+0#00e0e07&|h|i|s|:+0#0000000&| |s+0#0000001#ffff4012|u|p|e|r|.+0#af5f00255#ffffff0|y+0#00e0e07&|,+0#0000000&| |t+0#00e0e07&|r|u|e|:+0#0000000&| |s+0#0000001#ffff4012|u|p|e|r|.+0#af5f00255#ffffff0|z+0#00e0e07&|}+0#e000e06&| +0#0000000&@16
+@57|3|7|,|3| @9|4|5|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_super_this_keywords_03.dump b/runtime/syntax/testdir/dumps/vim9_super_this_keywords_03.dump
new file mode 100644
index 0000000..fb023e3
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_super_this_keywords_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|v+0#af5f00255&|a|r| +0#0000000&|c+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|{+0#e000e06&|s+0#00e0e07&|u|p|e|r|:+0#0000000&| |s+0#0000001#ffff4012|u|p|e|r|.+0#af5f00255#ffffff0|x+0#00e0e07&|,+0#0000000&| |t+0#00e0e07&|h|i|s|:+0#0000000&| |s+0#0000001#ffff4012|u|p|e|r|.+0#af5f00255#ffffff0|y+0#00e0e07&|,+0#0000000&| |t+0#00e0e07&|r|u|e|:+0#0000000&| |s+0#0000001#ffff4012|u|p|e|r|.+0#af5f00255#ffffff0|z+0#00e0e07&|}+0#e000e06&| +0#0000000&@16
+@4|v+0#af5f00255&|a|r| +0#0000000&|d+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|{+0#e000e06&|s+0#00e0e07&|u|p|e|r|:+0#0000000&| |c+0#00e0e07&|,+0#0000000&| |t+0#00e0e07&|h|i|s|:+0#0000000&| |c+0#00e0e07&|}+0#e000e06&| +0#0000000&@43
+@4|e+0#af5f00255&|c|h|o| +0#0000000&|c+0#00e0e07&|.+0#af5f00255&|s+0#00e0e07&|u|p|e|r| +0#0000000&@58
+@4|e+0#af5f00255&|c|h|o| +0#0000000&|c+0#00e0e07&|.+0#af5f00255&|t+0#00e0e07&|h|i|s| +0#0000000&@59
+@4|e+0#af5f00255&|c|h|o| +0#0000000&|d+0#00e0e07&|.+0#af5f00255&|s+0#00e0e07&|u|p|e|r|.+0#af5f00255&|t+0#00e0e07&|h|i|s| +0#0000000&@53
+@4>e+0#af5f00255&|c|h|o| +0#0000000&|d+0#00e0e07&|.+0#af5f00255&|t+0#00e0e07&|h|i|s|.+0#af5f00255&|s+0#00e0e07&|u|p|e|r| +0#0000000&@53
+@4|e+0#af5f00255&|c|h|o| +0#0000000&|a+0#00e0e07&| +0#0000000&|b+0#00e0e07&| +0#0000000&|c+0#00e0e07&| +0#0000000&@60
+@2|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@66
+@75
+@2|d+0#af5f00255&|e|f| +0#0000000&|D|e|f|5|(+0#e000e06&|)| +0#0000000&@62
+@4|v+0#af5f00255&|a|r| +0#0000000&|a+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|x+0#00e0e07&| +0#0000000&|*+0#af5f00255&| +0#0000000&|t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|y+0#00e0e07&| +0#0000000&@47
+@4|v+0#af5f00255&|a|r| +0#0000000&|b+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|(+0#e000e06&|t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|x+0#00e0e07&| +0#0000000&|*+0#af5f00255&| +0#0000000&|t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|y+0#00e0e07&|)+0#e000e06&| +0#0000000&@45
+@4|v+0#af5f00255&|a|r| +0#0000000&|c+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|[+0#e000e06&|t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|x+0#00e0e07&|,+0#0000000&| |t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|y+0#00e0e07&|]+0#e000e06&| +0#0000000&@46
+@4|v+0#af5f00255&|a|r| +0#0000000&|d+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|{+0#e000e06&|s+0#00e0e07&|u|p|e|r|:+0#0000000&| |t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|x+0#00e0e07&|,+0#0000000&| |t+0#00e0e07&|h|i|s|:+0#0000000&| |t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|y+0#00e0e07&|}+0#e000e06&| +0#0000000&@33
+@4|e+0#af5f00255&|c|h|o| +0#0000000&|a+0#00e0e07&| +0#0000000&|b+0#00e0e07&| +0#0000000&|c+0#00e0e07&| +0#0000000&|d+0#00e0e07&| +0#0000000&@58
+@2|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@66
+@75
+@2|d+0#af5f00255&|e|f| +0#0000000&|D|e|f|6|(+0#e000e06&|)| +0#0000000&@62
+@4|v+0#af5f00255&|a|r| +0#0000000&|x+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|t+0#0000001#ffff4012|h|i|s|#+0#00e0e07#ffffff0|s|u|p|e|r|#|x| +0#0000000&@50
+@57|5@1|,|5| @9|7|2|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_super_this_keywords_04.dump b/runtime/syntax/testdir/dumps/vim9_super_this_keywords_04.dump
new file mode 100644
index 0000000..4e9ce2c
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_super_this_keywords_04.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|v+0#af5f00255&|a|r| +0#0000000&|x+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|t+0#0000001#ffff4012|h|i|s|#+0#00e0e07#ffffff0|s|u|p|e|r|#|x| +0#0000000&@50
+@4|v+0#af5f00255&|a|r| +0#0000000&|y+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|s+0#00e0e07&|u|p|e|r|#|t+0#0000001#ffff4012|h|i|s|#+0#00e0e07#ffffff0|y| +0#0000000&@50
+@4|t+0#0000001#ffff4012|h|i|s|#+0#0000000#ffffff0|s|u|p|e|r|#|F|u|n|c|(+0#e000e06&|)| +0#0000000&@53
+@4|s|u|p|e|r|#|t+0#0000001#ffff4012|h|i|s|#+0#0000000#ffffff0|F|u|n|c|(+0#e000e06&|)| +0#0000000&@53
+@2|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@66
+> @74
+@2|d+0#af5f00255&|e|f| +0#0000000&|D|e|f|7|(+0#e000e06&|a+0#00e0e07&|r|g| +0#0000000&|=+0#af5f00255&| +0#0000000&|s+0#0000001#ffff4012|u|p|e|r|.+0#0000000#ffffff0|D|e|f|3|(+0#e000e06&|)@1| +0#0000000&@44
+@4|e+0#af5f00255&|c|h|o| +0#0000000&|a+0#00e0e07&|r|g| +0#0000000&@62
+@2|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@66
+@75
+@2|d+0#af5f00255&|e|f| +0#0000000&|D|e|f|8|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@54
+@4|v+0#af5f00255&|a|r| +0#0000000&|F+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|(+0#e000e06&|)| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|x+0#00e0e07&| +0#0000000&@50
+@4|v+0#af5f00255&|a|r| +0#0000000&|G+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|(+0#e000e06&|)| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|s+0#0000001#ffff4012|u|p|e|r|.+0#af5f00255#ffffff0|x+0#00e0e07&| +0#0000000&@49
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|F|(+0#e000e06&|)| +0#0000000&|++0#af5f00255&| +0#0000000&|G|(+0#e000e06&|)| +0#0000000&@54
+@2|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@66
+|e+0#af5f00255&|n|d|c|l|a|s@1| +0#0000000&@66
+@75
+|d+0#af5f00255&|e|f|c|o|m|p|i|l|e| +0#0000000&|F|o@1| @60
+|d+0#af5f00255&|e|f|c|o|m|p|i|l|e| +0#0000000&|B|a|r| @60
+@57|7|3|,|0|-|1| @7|9|8|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_super_this_keywords_05.dump b/runtime/syntax/testdir/dumps/vim9_super_this_keywords_05.dump
new file mode 100644
index 0000000..af95527
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_super_this_keywords_05.dump
@@ -0,0 +1,20 @@
+|d+0#af5f00255#ffffff0|e|f|c|o|m|p|i|l|e| +0#0000000&|B|a|r| @60
+> @74
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|8|7|,|0|-|1| @7|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim9_variables_00.dump b/runtime/syntax/testdir/dumps/vim9_variables_00.dump
new file mode 100644
index 0000000..766069e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_variables_00.dump
@@ -0,0 +1,20 @@
+>v+0#af5f00255#ffffff0|i|m|9|s|c|r|i|p|t| +0#0000000&@64
+@75
+|#+0#0000e05&| |V|i|m|9| |v|a|r|i|a|b|l|e| |h|i|g|h|l|i|g|h|t|i|n|g| +0#0000000&@46
+@75
+|#+0#0000e05&| |D|e|c|l|a|r|a|t|i|o|n|s| +0#0000000&@60
+@75
+|v+0#af5f00255&|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60
+@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
+|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
+@75
+|$+0#e000e06&|F|O@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@63
+@75
+|v+0#af5f00255&|a|r| +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
+|v+0#af5f00255&|a|r| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| @65
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim9_variables_01.dump b/runtime/syntax/testdir/dumps/vim9_variables_01.dump
new file mode 100644
index 0000000..35547c0
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_variables_01.dump
@@ -0,0 +1,20 @@
+|v+0#00e0e07#ffffff0|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62
+@75
+|$+0#e000e06&|F|O@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@63
+@75
+|v+0#af5f00255&|a|r| +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
+>v+0#af5f00255&|a|r| +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
+|v+0#af5f00255&|a|r| +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
+|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&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
+@75
+|v+0#af5f00255&|a|r| +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&@48
+|v+0#af5f00255&|a|r| +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
+|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&@45
+|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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_variables_02.dump b/runtime/syntax/testdir/dumps/vim9_variables_02.dump
new file mode 100644
index 0000000..3b111f7
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_variables_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|$+0#e000e06&|b|a|z|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
+@75
+|v+0#af5f00255&|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |E|N|D| +0#0000000&@59
+|.+0#e000002&@2| +0#0000000&@71
+|E+0#e000e06&|N|D| +0#0000000&@71
+>v+0#af5f00255&|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@54
+|.+0#e000002&@2| +0#0000000&@71
+|E+0#e000e06&|N|D| +0#0000000&@71
+|v+0#af5f00255&|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |e|v|a|l| |E|N|D| +0#0000000&@54
+|.+0#e000002&@2| +0#0000000&@71
+|E+0#e000e06&|N|D| +0#0000000&@71
+|v+0#af5f00255&|a|r| +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&@49
+|.+0#e000002&@2| +0#0000000&@71
+|E+0#e000e06&|N|D| +0#0000000&@71
+|v+0#af5f00255&|a|r| +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
+|.+0#e000002&@2| +0#0000000&@71
+|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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_variables_03.dump b/runtime/syntax/testdir/dumps/vim9_variables_03.dump
new file mode 100644
index 0000000..f2d245b
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_variables_03.dump
@@ -0,0 +1,20 @@
+|#+0#0000e05#ffffff0| |A|s@1|i|g|n|m|e|n|t|s| +0#0000000&@61
+@75
+|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@64
+@75
+|f+0#00e0e07&|o@1|[+0#0000000&|0+0#e000002&|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
+> @74
+|f+0#00e0e07&|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&@59
+|f+0#00e0e07&|o@1|[+0#0000000&|:|2+0#e000002&|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60
+|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#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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_variables_04.dump b/runtime/syntax/testdir/dumps/vim9_variables_04.dump
new file mode 100644
index 0000000..b54b1a6
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_variables_04.dump
@@ -0,0 +1,20 @@
+|b+0#00e0e07#ffffff0|:|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
+|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
+|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
+|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
+|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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_variables_05.dump b/runtime/syntax/testdir/dumps/vim9_variables_05.dump
new file mode 100644
index 0000000..2abfee7
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_variables_05.dump
@@ -0,0 +1,20 @@
+|w+0#00e0e07#ffffff0|:|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
+@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
+@75
+|b+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60
+|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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_variables_06.dump b/runtime/syntax/testdir/dumps/vim9_variables_06.dump
new file mode 100644
index 0000000..b0380cb
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_variables_06.dump
@@ -0,0 +1,20 @@
+|$+0#e000e06#ffffff0|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
+@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
+@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
+@75
+|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
+@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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_variables_07.dump b/runtime/syntax/testdir/dumps/vim9_variables_07.dump
new file mode 100644
index 0000000..adf80f5
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_variables_07.dump
@@ -0,0 +1,20 @@
+|&+0#00e0e07#ffffff0|l|:|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60
+@75
+|&+0#00e0e07&|g|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
+@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
+@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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_variables_08.dump b/runtime/syntax/testdir/dumps/vim9_variables_08.dump
new file mode 100644
index 0000000..5348a7e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_variables_08.dump
@@ -0,0 +1,20 @@
+|[+0&#ffffff0|$+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&| @70
+@6|\| @1|@+0#e000e06&|a|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
+> @74
+|[|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
+|[|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
+|[|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
+@75
+|[|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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_variables_09.dump b/runtime/syntax/testdir/dumps/vim9_variables_09.dump
new file mode 100644
index 0000000..1294cb1
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_variables_09.dump
@@ -0,0 +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#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|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#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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_variables_10.dump b/runtime/syntax/testdir/dumps/vim9_variables_10.dump
new file mode 100644
index 0000000..b2dd950
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_variables_10.dump
@@ -0,0 +1,20 @@
+|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#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
+|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |e|v|a|l| |t|r|i|m| |E|N|D| +0#0000000&@53
+|.+0#e000002&@2| +0#0000000&@71
+|E+0#e000e06&|N|D| +0#0000000&@71
+@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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_variables_11.dump b/runtime/syntax/testdir/dumps/vim9_variables_11.dump
new file mode 100644
index 0000000..9b3552e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_variables_11.dump
@@ -0,0 +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
+|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| 
diff --git a/runtime/syntax/testdir/dumps/vim_comment_03.dump b/runtime/syntax/testdir/dumps/vim_comment_03.dump
index 70c9519..107afd1 100644
--- a/runtime/syntax/testdir/dumps/vim_comment_03.dump
+++ b/runtime/syntax/testdir/dumps/vim_comment_03.dump
@@ -2,7 +2,7 @@
 |"+0#0000e05&| +0#0000000&|I+0#e000e06&|s@1|u|e|:| +0#0000e05&|#|1|3|0|4|7| +0#0000000&@59
 @75
 |i+0#af5f00255&|f| +0#0000000&|!+0#af5f00255&|e+0#00e0e07&|x|i|s|t|s|(+0#e000e06&|"+0#e000002&|:|D|i|f@1|O|r|i|g|"|)+0#e000e06&| +0#0000000&@51
-@2|c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&|D|i|f@1|O|r|i|g| |v+0#af5f00255&|e|r|t| +0#0000000&|n+0#af5f00255&|e|w| +0#0000000&||| |s+0#af5f00255&|e|t| +0#0000000&|b+0#e000e06&|t|=+0#af5f00255&|n+0#0000000&|o|f|i|l|e| ||| |r+0#af5f00255&| +0#0000000&|++0#af5f00255&@1|e|d|i|t| +0#0000000&|#| ||| |0+0#e000002&|d+0#0000000&|_| ||| |d+0#af5f00255&|i|f@1|t|h|i|s| +0#0000000&@1
+@2|c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&|D|i|f@1|O|r|i|g| |v+0#af5f00255&|e|r|t| +0#0000000&|n+0#af5f00255&|e|w| +0#0000000&||| |s+0#af5f00255&|e|t| +0#0000000&|b+0#e000e06&|t|=+0#af5f00255&|n+0#0000000&|o|f|i|l|e| ||| |r+0#af5f00255&| +0#0000000&|++0#af5f00255&@1|e+0#00e0e07&|d|i|t| +0#0000000&|#| ||| |0+0#e000002&|d+0#0000000&|_| ||| |d+0#af5f00255&|i|f@1|t|h|i|s| +0#0000000&@1
 @18>\+0#e000e06&| +0#0000000&||| |w+0#af5f00255&|i|n|c|m|d| +0#0000000&|p+0#af5f00255&| +0#0000000&||| |d+0#af5f00255&|i|f@1|t|h|i|s| +0#0000000&@33
 |e+0#af5f00255&|n|d|i|f| +0#0000000&@69
 @75
diff --git a/runtime/syntax/testdir/dumps/vim_ex_command_03.dump b/runtime/syntax/testdir/dumps/vim_ex_command_03.dump
index 43dbd55..0fe7a38 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_command_03.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_command_03.dump
@@ -2,7 +2,7 @@
 @75
 |"+0#0000e05&| |e|r@1|o|r|s| +0#0000000&@66
 @75
-|c+0#af5f00255&|o|m@1|a|n|d|!| +0#0000000&|-+0#ffffff16#ff404010|b|a|d|a|t@1|r|=+0#af5f00255#ffffff0|a+0#0000000&|r|g|u|m|e|n|t|s| |-+0#e000e06&|b|a|n|g| +0#0000000&|-+0#ffffff16#ff404010|b|a|d|a|t@1|r| +0#0000000#ffffff0|-+0#e000e06&|n|a|r|g|s|=|*+0#00e0003&| +0#0000000&|F|o@1| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@8
+|c+0#af5f00255&|o|m@1|a|n|d|!| +0#0000000&|-+0#ffffff16#ff404010|b|a|d|a|t@1|r|=+0#af5f00255#ffffff0|a+0#00e0e07&|r|g|u|m|e|n|t|s| +0#0000000&|-+0#e000e06&|b|a|n|g| +0#0000000&|-+0#ffffff16#ff404010|b|a|d|a|t@1|r| +0#0000000#ffffff0|-+0#e000e06&|n|a|r|g|s|=|*+0#00e0003&| +0#0000000&|F|o@1| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@8
 > @74
 |"+0#0000e05&| |d|e|l|e|t|e| +0#0000000&@66
 @75
diff --git a/runtime/syntax/testdir/dumps/vim_ex_command_04.dump b/runtime/syntax/testdir/dumps/vim_ex_command_04.dump
index 8e66db6..9700fc3 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_command_04.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_command_04.dump
@@ -4,7 +4,7 @@
 @75
 |"+0#0000e05&| |I|s@1|u|e| |#|1|4|1|3|5| +0#0000000&@60
 > @74
-|c+0#af5f00255&|o|m| +0#0000000&|F|o@1| |c+0#af5f00255&|a|l@1| +0#0000000&|s+0#00e0e07&|y|s|t|e|m|(+0#0000000&|'+0#e000002&|l|s|'|)+0#0000000&| @49
+|c+0#af5f00255&|o|m| +0#0000000&|F|o@1| |c+0#af5f00255&|a|l@1| +0#0000000&|s+0#00e0e07&|y|s|t|e|m|(+0#e000e06&|'+0#e000002&|l|s|'|)+0#e000e06&| +0#0000000&@49
 @75
 |~+0#4040ff13&| @73
 |~| @73
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_11.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_11.dump
index fda4e8f..1f36897 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_11.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_11.dump
@@ -5,7 +5,7 @@
 |:|f+0#af5f00255&|o|l|d@1|o@1|p|e|n| +0#0000000&@63
 >:|f+0#af5f00255&|o|l|d@1|o|c|l|o|s|e|d| +0#0000000&@61
 |:|f+0#af5f00255&|o|l|d|o|p|e|n| +0#0000000&@65
-|:|f+0#af5f00255&|o|r| +0#0000000&@70
+|:|f+0#af5f00255&|o|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@50
 |:|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&@65
 |:|g+0#af5f00255&|l|o|b|a|l|/|.+0#0000000&@2|/+0#af5f00255&| +0#0000000&@62
 |:|g+0#af5f00255&|o|t|o| +0#0000000&@69
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_33.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_33.dump
index 0bef65d..489f8b6 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_33.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_33.dump
@@ -14,7 +14,7 @@
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a|p@1|e|n|d| @55
 @4|t|e|x|t| @66
 |.+0#af5f00255&| +0#0000000&@73
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|b@1|r|e|v|i|a|t|e| +0#0000000&@51
+|c+0#00e0e07&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|b@1|r|e|v|i|a|t|e| +0#0000000&@51
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|b|c|l|e|a|r| +0#0000000&@54
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|b|o|v|e|l|e|f|t| +0#0000000&@52
 @57|5|9|5|,|1| @8|4|9|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_36.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_36.dump
index 462a76e..fee4ab8 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_36.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_36.dump
@@ -8,7 +8,7 @@
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|h|a|n|g|e| +0#0000000&@55
 @4|t|e|x|t| @66
 |.+0#af5f00255&| +0#0000000&@73
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|N|e|x|t| +0#0000000&@56
+|c+0#00e0e07&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|N|e|x|t| +0#0000000&@56
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|N|f|i|l|e| +0#0000000&@55
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|b@1|r|e|v| +0#0000000&@54
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|b|c|l|e|a|r| +0#0000000&@53
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_43.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_43.dump
index 1d4a521..deb4613 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_43.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_43.dump
@@ -14,7 +14,7 @@
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|l|d@1|o@1|p|e|n| +0#0000000&@51
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|l|d@1|o|c|l|o|s|e|d| +0#0000000&@49
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|l|d|o|p|e|n| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|r| +0#0000000&@58
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@38
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&@53
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |g+0#af5f00255&|l|o|b|a|l|/|.+0#0000000&@2|/+0#af5f00255&| +0#0000000&@50
 @57|7@1|5|,|1| @8|6|4|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_45.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_45.dump
index 4948dd4..4229989 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_45.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_45.dump
@@ -1,6 +1,6 @@
 | +0&#ffffff0@3|t|e|x|t| @66
 |.+0#af5f00255&| +0#0000000&@73
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|a|b@1|r|e|v| +0#0000000&@54
+|c+0#00e0e07&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|a|b@1|r|e|v| +0#0000000&@54
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|a|b|c|l|e|a|r| +0#0000000&@53
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|f| +0#0000000&@59
 >c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|j|u|m|p| +0#0000000&@56
diff --git a/runtime/syntax/testdir/dumps/vim_ex_def_06.dump b/runtime/syntax/testdir/dumps/vim_ex_def_06.dump
index edb15c7..35882b3 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_def_06.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_def_06.dump
@@ -1,5 +1,5 @@
 | +0&#ffffff0@74
-|d+0#af5f00255&|e|f| +0#0000000&|T|e|s|t|(+0#e000e06&|l+0#00e0e07&|i|n|e|s|:+0#0000000&| |l+0#00e0003&|i|s|t|<|n|u|m|b|e|r|>| +0#0000000&|=+0#af5f00255&| +0#0000000&|[|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&|)+0#e000e06&|:+0#0000000&| |v+0#00e0003&|o|i|d| +0#0000000&@14
+|d+0#af5f00255&|e|f| +0#0000000&|T|e|s|t|(+0#e000e06&|l+0#00e0e07&|i|n|e|s|:+0#0000000&| |l+0#00e0003&|i|s|t|<|n|u|m|b|e|r|>| +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&| |v+0#00e0003&|o|i|d| +0#0000000&@14
 |e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
 @75
 @75
diff --git a/runtime/syntax/testdir/dumps/vim_ex_def_nested_00.dump b/runtime/syntax/testdir/dumps/vim_ex_def_nested_00.dump
index 88cfca8..d9f765d 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_def_nested_00.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_def_nested_00.dump
@@ -1,5 +1,6 @@
 >v+0#af5f00255#ffffff0|i|m|9|s|c|r|i|p|t| +0#0000000&@64
 |#+0#0000e05&| |V|i|m|9| |:|d|e|f| |c|o|m@1|a|n|d| |(|n|e|s|t|e|d|)| +0#0000000&@46
+|#+0#0000e05&| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |h|i| |l|i|n|k| |v|i|m|9|T|h|i|s| |T|o|d|o| +0#0000000&@36
 @75
 |c+0#af5f00255&|l|a|s@1| +0#0000000&|T|e|s|t| @64
 @4|c+0#af5f00255&|o|n|s|t| +0#0000000&|n+0#00e0e07&|a|m|e|:+0#0000000&| |s+0#00e0003&|t|r|i|n|g| +0#0000000&@52
@@ -13,8 +14,7 @@
 @12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|G|i|v|e|N|a|m|e|(+0#e000e06&|)| +0#0000000&@45
 @8|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@60
 @75
-@8|t+0#00e0e07&|h|i|s|.+0#af5f00255&|n+0#0000000&|a|m|e| |=+0#af5f00255&| +0#0000000&|N|a|m|e|(+0#e000e06&|)| +0#0000000&@48
+| +0#00e0e07&@7|t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|n+0#00e0e07&|a|m|e| +0#0000000&|=+0#af5f00255&| +0#0000000&|N|a|m|e|(+0#e000e06&|)| +0#0000000&@48
 @4|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@64
 |e+0#af5f00255&|n|d|c|l|a|s@1| +0#0000000&@66
-@75
 @57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_def_nested_01.dump b/runtime/syntax/testdir/dumps/vim_ex_def_nested_01.dump
index f8bbad4..e85f7ed 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_def_nested_01.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_def_nested_01.dump
@@ -1,9 +1,10 @@
-| +0&#ffffff0@7|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@60
+| +0&#ffffff0@11|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|G|i|v|e|N|a|m|e|(+0#e000e06&|)| +0#0000000&@45
+@8|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@60
 @75
-@8|t+0#00e0e07&|h|i|s|.+0#af5f00255&|n+0#0000000&|a|m|e| |=+0#af5f00255&| +0#0000000&|N|a|m|e|(+0#e000e06&|)| +0#0000000&@48
+| +0#00e0e07&@7|t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|n+0#00e0e07&|a|m|e| +0#0000000&|=+0#af5f00255&| +0#0000000&|N|a|m|e|(+0#e000e06&|)| +0#0000000&@48
 @4|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@64
-|e+0#af5f00255&|n|d|c|l|a|s@1| +0#0000000&@66
-> @74
+>e+0#af5f00255&|n|d|c|l|a|s@1| +0#0000000&@66
+@75
 |e+0#af5f00255&|c|h|o| +0#0000000&|T|e|s|t|.|n+0#00e0e07&|e|w|(+0#e000e06&|)| +0#0000000&@59
 |~+0#4040ff13&| @73
 |~| @73
@@ -16,5 +17,4 @@
 |~| @73
 |~| @73
 |~| @73
-|~| @73
-| +0#0000000&@56|1|9|,|0|-|1| @7|B|o|t| 
+| +0#0000000&@56|1|9|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_def_nested_fold_00.dump b/runtime/syntax/testdir/dumps/vim_ex_def_nested_fold_00.dump
index 122abd1..1b71d3a 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_def_nested_fold_00.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_def_nested_fold_00.dump
@@ -1,7 +1,9 @@
 | +0#0000e05#a8a8a8255@1>v+0#af5f00255#ffffff0|i|m|9|s|c|r|i|p|t| +0#0000000&@62
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
 | +0#0000e05#a8a8a8255@1|#+0&#ffffff0| |V|i|m|9| |:|d|e|f| |c|o|m@1|a|n|d| |(|n|e|s|t|e|d|)| +0#0000000&@44
 | +0#0000e05#a8a8a8255@1|#+0&#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|v|i|m|s|y|n|_|f|o|l|d|i|n|g| |=| |'|f|'| +0#0000000&@29
 | +0#0000e05#a8a8a8255@1|#+0&#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s|e|t|l| |f|d|c|=|2| |f|d|m|=|s|y|n|t|a|x| +0#0000000&@34
+| +0#0000e05#a8a8a8255@1|#+0&#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |h|i| |l|i|n|k| |v|i|m|9|T|h|i|s| |T|o|d|o| +0#0000000&@34
 | +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
 | +0#0000e05#a8a8a8255@1|c+0#af5f00255#ffffff0|l|a|s@1| +0#0000000&|T|e|s|t| @62
 | +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|c+0#af5f00255&|o|n|s|t| +0#0000000&|n+0#00e0e07&|a|m|e|:+0#0000000&| |s+0#00e0003&|t|r|i|n|g| +0#0000000&@50
@@ -15,6 +17,4 @@
 |~| @73
 |~| @73
 |~| @73
-|~| @73
-|~| @73
 | +0#0000000&@56|1|,|1| @10|A|l@1| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_for_00.dump b/runtime/syntax/testdir/dumps/vim_ex_for_00.dump
new file mode 100644
index 0000000..c13feca
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_for_00.dump
@@ -0,0 +1,20 @@
+>"+0#0000e05#ffffff0| |V|i|m| |:|f|o|r| |c|o|m@1|a|n|d| +0#0000000&@56
+@75
+@75
+|"+0#0000e05&| |:|f|o|r| |{|v|a|r|}| |i|n| |{|o|b|j|e|c|t|}| +0#0000000&@50
+@75
+|l+0#af5f00255&|e|t| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|[+0#e000e06&|4+0#e000002&|2|]+0#e000e06&| +0#0000000&@59
+@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
+@2|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@64
+|e+0#af5f00255&|n|d|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&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@49
+@2|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@64
+|e+0#af5f00255&|n|d|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&@64
+@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62
+@2|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@64
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_for_01.dump b/runtime/syntax/testdir/dumps/vim_ex_for_01.dump
new file mode 100644
index 0000000..3ee064a
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_for_01.dump
@@ -0,0 +1,20 @@
+|e+0#af5f00255#ffffff0|n|d|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&@64
+@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62
+@2>e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@64
+|e+0#af5f00255&|n|d|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&||| |e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@39
+@75
+|f+0#af5f00255&|o|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|[+0#e000e06&|4+0#e000002&|2|]+0#e000e06&| +0#0000000&@59
+@2|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@64
+|e+0#af5f00255&|n|d|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&|[+0#e000e06&|4+0#e000002&|2|]+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@39
+@75
+|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&||| |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&@46
+@2|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@64
+|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@68
+@57|1|9|,|3| @9|3|1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_for_02.dump b/runtime/syntax/testdir/dumps/vim_ex_for_02.dump
new file mode 100644
index 0000000..b67143f
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_for_02.dump
@@ -0,0 +1,20 @@
+|e+0#af5f00255#ffffff0|n|d|f|o|r| +0#0000000&@68
+@75
+@75
+|"+0#0000e05&| |:|f|o|r| |[|{|v|a|r|1|}|,| |{|v|a|r|2|}|,| |.@2|]| |i|n| |{|l|i|s|t|l|i|s|t|}| +0#0000000&@32
+@75
+>l+0#af5f00255&|e|t| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|[+0#e000e06&@1|4+0#e000002&|2|,+0#0000000&| |8+0#e000002&|3|]+0#e000e06&@1| +0#0000000&@53
+@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
+@2|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@60
+|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@68
+@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&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@42
+@2|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@60
+|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@68
+@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&@57
+@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62
+@2|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@60
+@57|3|7|,|1| @9|7|5|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_for_03.dump b/runtime/syntax/testdir/dumps/vim_ex_for_03.dump
new file mode 100644
index 0000000..3851717
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_for_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@1|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@60
+|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@68
+@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&||| |e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@28
+@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&|[+0#e000e06&@1|4+0#e000002&|2|,+0#0000000&| |8+0#e000002&|3|]+0#e000e06&@1| +0#0000000&@46
+@2|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@60
+|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@68
+@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&|[+0#e000e06&@1|4+0#e000002&|2|,+0#0000000&| |8+0#e000002&|3|]+0#e000e06&@1| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@22
+@75
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|5@1|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_09.dump b/runtime/syntax/testdir/dumps/vim_ex_function_09.dump
index 8a5019d..46b3c93 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_09.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_09.dump
@@ -8,7 +8,7 @@
 @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&|[|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&|)+0#e000e06&| +0#0000000&@29
+|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
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_11.dump b/runtime/syntax/testdir/dumps/vim_ex_function_11.dump
index 62f65b4..c0e9e38 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_11.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_11.dump
@@ -1,8 +1,8 @@
 | +0&#ffffff0@74
 |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#0000000&|a|r| @55
+|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#0000000&|a|r| @55
+|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
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 c655a2f..0ced9e8 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_10.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_10.dump
@@ -15,6 +15,6 @@
 | +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#0000000&|a|r| @53
+| +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|%| 
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 b3f901f..32ddd8b 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_11.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_11.dump
@@ -1,5 +1,5 @@
 | +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#0000000&|a|r| @53
+| +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
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 93db587..80f43cf 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#af5f00255&|!|@+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#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 f63b3b6..761c210 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_11.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_11.dump
@@ -1,5 +1,5 @@
-| +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#af5f00255&|!|@+0#0000000&|#|$|%+0#af5f00255&|^+0#0000000&|&|*+0#af5f00255&|(+0#e000e06&|)|_+0#0000000&|++0#af5f00255&| +0#0000000&@47
-| +0#0000e05#a8a8a8255@1|l+0#0000000#ffffff0|i|n|e|1| @67
+| +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#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> +0#0000000#ffffff0@72
diff --git a/runtime/syntax/testdir/dumps/vim_ex_menu_04.dump b/runtime/syntax/testdir/dumps/vim_ex_menu_04.dump
index 5c804a5..17236e2 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_menu_04.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_menu_04.dump
@@ -12,7 +12,7 @@
 |"+0#0000e05&| |a| |m|e|n|u| |i|t|e|m| |n|a|m|e| |c|a|n@1|o|t| |s|t|a|r|t| |w|i|t|h| |'|.|'| +0#0000000&@34
 @75
 |d+0#af5f00255&|e|f| +0#0000000&|H|i|s|t|o|r|y|J|u|m|p|M|e|n|u|(+0#e000e06&|)| +0#0000000&@53
-@4|p+0#af5f00255&|o|p|u|p|.|F+0#0000000&|i|l|t|e|r|M|e|n|u|(+0#e000e06&|"+0#e000002&|J|u|m|p| |h|i|s|t|o|r|y|"|,+0#0000000&| |d+0#00e0e07&|i|r|_|h|i|s|t|,+0#0000000&| @28
+@3| +0#00e0e07&|p|o|p|u|p|.+0#af5f00255&|F+0#0000000&|i|l|t|e|r|M|e|n|u|(+0#e000e06&|"+0#e000002&|J|u|m|p| |h|i|s|t|o|r|y|"|,+0#0000000&| |d+0#00e0e07&|i|r|_|h|i|s|t|,+0#0000000&| @28
 @8|(+0#e000e06&|r+0#00e0e07&|e|s|,+0#0000000&| |_+0#00e0e07&|)+0#e000e06&| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|{+0#e000e06&| +0#0000000&@53
 @12|H|i|s|t|o|r|y|J|u|m|p|(+0#e000e06&|r+0#00e0e07&|e|s|.+0#af5f00255&|t+0#00e0e07&|e|x|t|)+0#e000e06&| +0#0000000&@41
 @8|}+0#e000e06&|)| +0#0000000&@64
diff --git a/runtime/syntax/testdir/dumps/vim_ex_substitute_01.dump b/runtime/syntax/testdir/dumps/vim_ex_substitute_01.dump
index a9624de..253a239 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_substitute_01.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_substitute_01.dump
@@ -12,9 +12,9 @@
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|m|a|g|i|c|/+0#e000e06&|f+0#0000000&|o@1|/+0#e000e06&|b+0#0000000&|a|r|/+0#e000e06&|&| +0#0000000&@45
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|m|a|g|i|c|/+0#e000e06&|f+0#0000000&|o@1|/+0#e000e06&|b+0#0000000&|a|r|/+0#e000e06&|c|e|g|i|I|n|p|#|l|r| +0#0000000&@36
 @75
-|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|s|t|r|-+0#af5f00255&|>|s+0#00e0e07&|u|b|s|t|i|t|u|t|e|(+0#e000e06&|s+0#00e0e07&|t|r|,+0#0000000&| |p+0#00e0e07&|a|t|,+0#0000000&| |s+0#00e0e07&|u|b|,+0#0000000&| |f+0#00e0e07&|l|a|g|s|)+0#e000e06&| +0#0000000&@27
+|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|s+0#00e0e07&|t|r|-+0#af5f00255&|>|s+0#00e0e07&|u|b|s|t|i|t|u|t|e|(+0#e000e06&|s+0#00e0e07&|t|r|,+0#0000000&| |p+0#00e0e07&|a|t|,+0#0000000&| |s+0#00e0e07&|u|b|,+0#0000000&| |f+0#00e0e07&|l|a|g|s|)+0#e000e06&| +0#0000000&@27
 @75
 |f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@60
 | +0#af5f00255&@1|s|u|b|s|t|i|t|u|t|e|/+0#e000e06&|f+0#0000000&|o@1|/+0#e000e06&|b+0#0000000&|a|r|/+0#e000e06&| +0#0000000&@53
-@2|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|s|t|r|-+0#af5f00255&|>|s+0#00e0e07&|u|b|s|t|i|t|u|t|e|(+0#e000e06&|s+0#00e0e07&|t|r|,+0#0000000&| |p+0#00e0e07&|a|t|,+0#0000000&| |s+0#00e0e07&|u|b|,+0#0000000&| |f+0#00e0e07&|l|a|g|s|)+0#e000e06&| +0#0000000&@25
+@2|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|s+0#00e0e07&|t|r|-+0#af5f00255&|>|s+0#00e0e07&|u|b|s|t|i|t|u|t|e|(+0#e000e06&|s+0#00e0e07&|t|r|,+0#0000000&| |p+0#00e0e07&|a|t|,+0#0000000&| |s+0#00e0e07&|u|b|,+0#0000000&| |f+0#00e0e07&|l|a|g|s|)+0#e000e06&| +0#0000000&@25
 @57|1|9|,|1| @9|1|0|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_substitute_02.dump b/runtime/syntax/testdir/dumps/vim_ex_substitute_02.dump
index fed54f9..b133d65 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_substitute_02.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_substitute_02.dump
@@ -1,9 +1,9 @@
-| +0&#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|s|t|r|-+0#af5f00255&|>|s+0#00e0e07&|u|b|s|t|i|t|u|t|e|(+0#e000e06&|s+0#00e0e07&|t|r|,+0#0000000&| |p+0#00e0e07&|a|t|,+0#0000000&| |s+0#00e0e07&|u|b|,+0#0000000&| |f+0#00e0e07&|l|a|g|s|)+0#e000e06&| +0#0000000&@25
+| +0&#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|s+0#00e0e07&|t|r|-+0#af5f00255&|>|s+0#00e0e07&|u|b|s|t|i|t|u|t|e|(+0#e000e06&|s+0#00e0e07&|t|r|,+0#0000000&| |p+0#00e0e07&|a|t|,+0#0000000&| |s+0#00e0e07&|u|b|,+0#0000000&| |f+0#00e0e07&|l|a|g|s|)+0#e000e06&| +0#0000000&@25
 |e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
 @75
 |d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@65
 | +0#af5f00255&@1|s|u|b|s|t|i|t|u|t|e|/+0#e000e06&|f+0#0000000&|o@1|/+0#e000e06&|b+0#0000000&|a|r|/+0#e000e06&| +0#0000000&@53
-@2>l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|s|t|r|-+0#af5f00255&|>|s+0#00e0e07&|u|b|s|t|i|t|u|t|e|(+0#e000e06&|s+0#00e0e07&|t|r|,+0#0000000&| |p+0#00e0e07&|a|t|,+0#0000000&| |s+0#00e0e07&|u|b|,+0#0000000&| |f+0#00e0e07&|l|a|g|s|)+0#e000e06&| +0#0000000&@25
+@2>l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|s+0#00e0e07&|t|r|-+0#af5f00255&|>|s+0#00e0e07&|u|b|s|t|i|t|u|t|e|(+0#e000e06&|s+0#00e0e07&|t|r|,+0#0000000&| |p+0#00e0e07&|a|t|,+0#0000000&| |s+0#00e0e07&|u|b|,+0#0000000&| |f+0#00e0e07&|l|a|g|s|)+0#e000e06&| +0#0000000&@25
 |e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
 @75
 |"+0#0000e05&| |v|a|r|i|o|u|s| |d|e|l|i|m|i|t|e|r|s| +0#0000000&@54
diff --git a/runtime/syntax/testdir/dumps/vim_ex_substitute_08.dump b/runtime/syntax/testdir/dumps/vim_ex_substitute_08.dump
index f19c40e..28691c9 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_substitute_08.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_substitute_08.dump
@@ -1,5 +1,5 @@
 |d+0#af5f00255#ffffff0|e|f| +0#0000000&|T|e|s|t|(+0#e000e06&|)| +0#0000000&@64
-@2|s|t|r|[|s|]| @66
+@1| +0#00e0e07&|s|t|r|[+0#0000000&|s+0#00e0e07&|]+0#0000000&| @66
 @2|s|t|r|(+0#e000e06&|s+0#00e0e07&|)+0#e000e06&| +0#0000000&@66
 |e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
 > @74
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_09.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_09.dump
index 6295921..f48fb04 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_syntax_09.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_09.dump
@@ -14,7 +14,7 @@
 @75
 |f+0#af5f00255&|u|n|c|t|i|o|n|!| +0#0000000&|s+0#e000e06&|:|C+0#0000000&|o|n|t|a|i|n|e|d|G|r|o|u|p|(+0#e000e06&|)| +0#0000000&@46
 @2|"+0#0000e05&| |.@2| +0#0000000&@67
-@2|f+0#af5f00255&|o|r| +0#0000000&|c+0#00e0e07&|l|u|s|t|e|r| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|[|'+0#e000002&|m|a|r|k|d|o|w|n|H|i|g|h|l|i|g|h|t|_|z|s|h|'|,+0#0000000&| |'+0#e000002&|z|s|h|'|]+0#0000000&| @25
+@2|f+0#af5f00255&|o|r| +0#0000000&|c+0#00e0e07&|l|u|s|t|e|r| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|[+0#e000e06&|'+0#e000002&|m|a|r|k|d|o|w|n|H|i|g|h|l|i|g|h|t|_|z|s|h|'|,+0#0000000&| |'+0#e000002&|z|s|h|'|]+0#e000e06&| +0#0000000&@25
 @4|"+0#0000e05&| |.@2| +0#0000000&@65
 @2|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@66
 @57|1|6|2|,|7| @8|9|8|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_expr_01.dump b/runtime/syntax/testdir/dumps/vim_expr_01.dump
index 8dc7041..2423dc9 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|6|%| 
+@57|1|5|,|1| @10|5|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_expr_02.dump b/runtime/syntax/testdir/dumps/vim_expr_02.dump
index 901b5ff..d8f3bce 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|4|%| 
+@57|3|2|,|0|-|1| @7|1|2|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_expr_03.dump b/runtime/syntax/testdir/dumps/vim_expr_03.dump
index bcffddf..cc6311a 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|2|4|%| 
+@57|5|0|,|1| @9|2|0|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_expr_04.dump b/runtime/syntax/testdir/dumps/vim_expr_04.dump
index 08c2f98..496b691 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|3|4|%| 
+@57|6|8|,|1| @9|2|9|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_expr_05.dump b/runtime/syntax/testdir/dumps/vim_expr_05.dump
index c927b11..9a327cb 100644
--- a/runtime/syntax/testdir/dumps/vim_expr_05.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_05.dump
@@ -5,16 +5,16 @@
 |e+0#af5f00255&|c|h|o| +0#0000000&|0+0#e000002&|z|F@1|0@1|.|E|D|0|1|.|5|D|A|F| +0#0000000&@53
 >e+0#af5f00255&|c|h|o| +0#0000000&|0+0#e000002&|z|F@1|.|0@1|.|E|D|.|0|1|.|5|D|.|A|F| +0#0000000&@50
 @75
-|"+0#0000e05&| |O|p|e|r|a|t|o|r|s| +0#0000000&@63
+|"+0#0000e05&| |L|i|s|t| +0#0000000&@68
 @75
-|"+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
+|e+0#af5f00255&|c|h|o| +0#0000000&|[+0#e000e06&|]| +0#0000000&@67
+|e+0#af5f00255&|c|h|o| +0#0000000&|[+0#e000e06&|4+0#e000002&|2|]+0#e000e06&| +0#0000000&@65
+|e+0#af5f00255&|c|h|o| +0#0000000&|[+0#e000e06&@1|1+0#e000002&@1|,+0#0000000&| |1+0#e000002&|2|]+0#e000e06&|,+0#0000000&| |[+0#e000e06&|2+0#e000002&|1|,+0#0000000&| |2+0#e000002&@1|]+0#e000e06&|,+0#0000000&| |[+0#e000e06&|3+0#e000002&|1|,+0#0000000&| |3+0#e000002&|2|]+0#e000e06&@1| +0#0000000&@39
+|e+0#af5f00255&|c|h|o| +0#0000000&|[+0#e000e06&|1+0#e000002&|,+0#0000000&| @66
+@6|\+0#e000e06&| +0#0000000&|2+0#e000002&|,+0#0000000&| @64
+@6|\+0#e000e06&| +0#0000000&|3+0#e000002&|,+0#0000000&| @64
+@6|\+0#e000e06&| +0#0000000&|4+0#e000002&| +0#0000000&@65
+@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
-|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
-@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
-@57|8|6|,|1| @9|4@1|%| 
+@57|8|6|,|1| @9|3|7|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_expr_06.dump b/runtime/syntax/testdir/dumps/vim_expr_06.dump
index b1b7e4b..b9ddc4f 100644
--- a/runtime/syntax/testdir/dumps/vim_expr_06.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_06.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&@8|?+0#af5f00255&| +0#0000000&|"+0#e000002&|l|a|s|t|"| +0#0000000&@50
+| +0&#ffffff0@74
+|"+0#0000e05&| |I|s@1|u|e| |#|5|8|3|0| |(|I|n|c|o|r@1|e|c|t| |s|y|n|t|a|x| |h|i|g|h|l|i|g|h|t|i|n|g| |i|n| |V|i|m| |s|c|r|i|p|t| |w|h|e|n| |o|m|i|t@1|i|n|g| |s|p
+|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&| |O|p|e|r|a|t|o|r|s| +0#0000000&@63
+@75
+|"+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
+|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
+@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
-|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
-|"+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
-@57|1|0|4|,|7| @8|5|4|%| 
+@57|1|0|3|,|1| @8|4|6|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_expr_07.dump b/runtime/syntax/testdir/dumps/vim_expr_07.dump
index d0aafdd..ce41dd0 100644
--- a/runtime/syntax/testdir/dumps/vim_expr_07.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_07.dump
@@ -1,20 +1,20 @@
-|e+0#af5f00255#ffffff0|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#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
+@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
+> @74
+|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&|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&|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
-@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&|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
-@57|1|2@1|,|1| @8|6|4|%| 
+@57|1|2|1|,|0|-|1| @6|5|4|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_expr_08.dump b/runtime/syntax/testdir/dumps/vim_expr_08.dump
index 8670b55..fa3a2fe 100644
--- a/runtime/syntax/testdir/dumps/vim_expr_08.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_08.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@74
+|e+0#af5f00255#ffffff0|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
+|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&|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&| |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
-|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
-@57|1|4|0|,|1| @8|7|4|%| 
+@57|1|3|9|,|1| @8|6|2|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_expr_09.dump b/runtime/syntax/testdir/dumps/vim_expr_09.dump
index 106ba75..786fbc3 100644
--- a/runtime/syntax/testdir/dumps/vim_expr_09.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_09.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#ffffff0|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
+|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
-|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
-@57|1|5|8|,|1| @8|8|4|%| 
+@57|1|5|7|,|1| @8|7|1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_expr_10.dump b/runtime/syntax/testdir/dumps/vim_expr_10.dump
index 35de769..6f6eeec 100644
--- a/runtime/syntax/testdir/dumps/vim_expr_10.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_10.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@74
-|"+0#0000e05&| |U|n|r|e|p|o|r|t|e|d| |i|s@1|u|e| |(|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&@66
-|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#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&@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
-> @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
+>"+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
+|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
-@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
-@57|1|7|5|,|0|-|1| @6|9|3|%| 
+|"+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
+@57|1|7|5|,|1| @8|7|9|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_expr_11.dump b/runtime/syntax/testdir/dumps/vim_expr_11.dump
index 50d5773..ddefe39 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&|t+0#00e0e07&|r|u|t|h|y| +0#0000000&@63
+|"+0#0000e05#ffffff0| |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
-|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
-@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
+|"+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
+@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
 @75
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|1|9|3|,|3| @8|B|o|t| 
+|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
+@57|1|9|1|,|1| @8|8|7|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_expr_12.dump b/runtime/syntax/testdir/dumps/vim_expr_12.dump
new file mode 100644
index 0000000..4accca7
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_expr_12.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@5|\+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
+@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
+>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
+@57|2|0|9|,|1| @8|9|5|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_expr_13.dump b/runtime/syntax/testdir/dumps/vim_expr_13.dump
new file mode 100644
index 0000000..f5644bd
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_expr_13.dump
@@ -0,0 +1,20 @@
+|f+0#af5f00255#ffffff0|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
+@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
+| +0#0000000&@56|2@1|7|,|3| @8|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_00.dump b/runtime/syntax/testdir/dumps/vim_function_variables_00.dump
new file mode 100644
index 0000000..8e12eae
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_00.dump
@@ -0,0 +1,20 @@
+>"+0#0000e05#ffffff0| |V|i|m| |f|u|n|c|t|i|o|n| |v|a|r|i|a|b|l|e| |h|i|g|h|l|i|g|h|t|i|n|g| +0#0000000&@38
+@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|t| +0#0000000&@66
+@75
+@2|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58
+@75
+@2|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1|[+0#0000000&|0+0#e000002&|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
+@75
+@2|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|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
+@2|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1|[+0#0000000&|:|2+0#e000002&|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
+@2|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1|[+0#0000000&|1+0#e000002&|:+0#0000000&|]| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
+@2|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1|[+0#0000000&|:|]| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
+@75
+@2|l+0#af5f00255&|e|t| +0#0000000&|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&@51
+@2|l+0#af5f00255&|e|t| +0#0000000&|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&@51
+@75
+@2|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|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&|f+0#00e0e07&|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_01.dump b/runtime/syntax/testdir/dumps/vim_function_variables_01.dump
new file mode 100644
index 0000000..c86a8f5
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+@2|l+0#af5f00255&|e|t| +0#0000000&|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&@51
+@2|l+0#af5f00255&|e|t| +0#0000000&|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&@51
+@75
+@2|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|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&|f+0#00e0e07&|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&|f+0#00e0e07&|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&|f+0#00e0e07&|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&|f+0#00e0e07&|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&|f+0#00e0e07&|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&|f+0#00e0e07&|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
+@75
+@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&@56
+@75
+@2|l+0#af5f00255&|e|t| +0#0000000&|b+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&|b+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&|b+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&|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
+@57|1|9|,|3| @10|3|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_02.dump b/runtime/syntax/testdir/dumps/vim_function_variables_02.dump
new file mode 100644
index 0000000..77fe629
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_02.dump
@@ -0,0 +1,20 @@
+| +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
+> @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
+@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
+@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
+@2|l+0#af5f00255&|e|t| +0#0000000&|b+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&|g+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&|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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_03.dump b/runtime/syntax/testdir/dumps/vim_function_variables_03.dump
new file mode 100644
index 0000000..64b3c01
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@1|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
+@2|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&@52
+@2|l+0#af5f00255&|e|t| +0#0000000&|g+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&|g+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&|g+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&|g+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
+@75
+@2|l+0#af5f00255&|e|t| +0#0000000&|g+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&|g+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&|g+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&|g+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&|g+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&|g+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&|g+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&|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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_04.dump b/runtime/syntax/testdir/dumps/vim_function_variables_04.dump
new file mode 100644
index 0000000..3627334
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_04.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@1|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
+@75
+@2|l+0#af5f00255&|e|t| +0#0000000&|s+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&|s+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&|s+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&|s+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&|s+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&|s+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
+@75
+@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&@55
+@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&@55
+@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&@55
+@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&@55
+@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&@55
+@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&@55
+@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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_05.dump b/runtime/syntax/testdir/dumps/vim_function_variables_05.dump
new file mode 100644
index 0000000..9e3716d
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_05.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@1|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
+@75
+@2|l+0#af5f00255&|e|t| +0#0000000&|t+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&|t+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&|t+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&|t+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&|t+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&|t+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&|t+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
+@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&@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&|=| +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&|=| +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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_06.dump b/runtime/syntax/testdir/dumps/vim_function_variables_06.dump
new file mode 100644
index 0000000..2606d3a
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_06.dump
@@ -0,0 +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
+@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
+> @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
+@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
+@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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_07.dump b/runtime/syntax/testdir/dumps/vim_function_variables_07.dump
new file mode 100644
index 0000000..aa9dd94
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_07.dump
@@ -0,0 +1,20 @@
+| +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
+@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
+@2|l+0#af5f00255&|e|t| +0#0000000&|w+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&|w+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&|w+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&|w+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&|w+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&|w+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&|w+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
+@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&@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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_08.dump b/runtime/syntax/testdir/dumps/vim_function_variables_08.dump
new file mode 100644
index 0000000..59386ff
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_08.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@1|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
+@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&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
+> @74
+@2|l+0#af5f00255&|e|t| +0#0000000&|$+0#e000e06&|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#e000e06&|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#e000e06&|F|O@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
+@75
+@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&@59
+@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
+@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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_09.dump b/runtime/syntax/testdir/dumps/vim_function_variables_09.dump
new file mode 100644
index 0000000..63d7f7b
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_09.dump
@@ -0,0 +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
+@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
+@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
+@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
+@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
+@75
+@57|1|6|3|,|3| @8|4|3|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_10.dump b/runtime/syntax/testdir/dumps/vim_function_variables_10.dump
new file mode 100644
index 0000000..0022446
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_10.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+@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&|[|$+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
+@2|l+0#af5f00255&|e|t| +0#0000000&|[|@+0#e000e06&|a|,+0#0000000&| |@+0#e000e06&|b|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
+@2|l+0#af5f00255&|e|t| +0#0000000&|[|@+0#e000e06&|a|,+0#0000000&| @64
+@8|\+0#e000e06&| +0#0000000&@1|@+0#e000e06&|b|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
+@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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_11.dump b/runtime/syntax/testdir/dumps/vim_function_variables_11.dump
new file mode 100644
index 0000000..4c71758
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_11.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@1|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
+@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&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@50
+@75
+@2|l+0#af5f00255&|e|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
+@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&|[|$+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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_12.dump b/runtime/syntax/testdir/dumps/vim_function_variables_12.dump
new file mode 100644
index 0000000..0f70ff7
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_12.dump
@@ -0,0 +1,20 @@
+| +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
+@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
+@8>\+0#e000e06&| +0#0000000&|@+0#e000e06&|c|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@54
+@75
+@2|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |E|N|D| +0#0000000&@57
+|.+0#e000002&@2| +0#0000000&@71
+|E+0#e000e06&|N|D| +0#0000000&@71
+@2|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@52
+| +0#e000002&@1|.@2| +0#0000000&@69
+| +0#e000e06&@1|E|N|D| +0#0000000&@69
+@2|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |e|v|a|l| |E|N|D| +0#0000000&@52
+|.+0#e000002&@2| +0#0000000&@71
+|E+0#e000e06&|N|D| +0#0000000&@71
+@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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_13.dump b/runtime/syntax/testdir/dumps/vim_function_variables_13.dump
new file mode 100644
index 0000000..3544a05
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_13.dump
@@ -0,0 +1,20 @@
+| +0#e000e06#ffffff0@1|E|N|D| +0#0000000&@69
+@2|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&@47
+| +0#e000002&@3|.@2| +0#0000000&@67
+| +0#e000e06&@1|E|N|D| +0#0000000&@69
+@75
+@2>"+0#0000e05&| |:|l|e|t| |l|i|s|t| |v|a|l|u|e|s| +0#0000000&@54
+@75
+@2|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@65
+@2|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b|a|r| @61
+@2|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@65
+@8|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@56
+| +0#0000e05&@7|\| |b|a|r| +0#0000000&@61
+@75
+@2|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@55
+@2|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@54
+@2|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@52
+@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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_14.dump b/runtime/syntax/testdir/dumps/vim_function_variables_14.dump
new file mode 100644
index 0000000..24e6ea1
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_14.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@1|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
+@75
+@2|"+0#0000e05&| |:|u|n|l|e|t| +0#0000000&@64
+@75
+@2|u+0#af5f00255&|n|l|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@63
+@2>u+0#af5f00255&|n|l|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@59
+@2|u+0#af5f00255&|n|l|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@63
+@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
+@2|u+0#af5f00255&|n|l|e|t|!| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@62
+@2|u+0#af5f00255&|n|l|e|t|!| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@58
+@2|u+0#af5f00255&|n|l|e|t|!| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@62
+@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
+@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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_15.dump b/runtime/syntax/testdir/dumps/vim_function_variables_15.dump
new file mode 100644
index 0000000..589bb07
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_15.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+@2|u+0#af5f00255&|n|l|e|t| +0#0000000&|l+0#00e0e07&|i|s|t|[+0#0000000&|3+0#e000002&|]+0#0000000&| @59
+@2|u+0#af5f00255&|n|l|e|t| +0#0000000&|l+0#00e0e07&|i|s|t|[+0#0000000&|3+0#e000002&|:+0#0000000&|]| @58
+@2|u+0#af5f00255&|n|l|e|t| +0#0000000&|d+0#00e0e07&|i|c|t|[+0#0000000&|'+0#e000002&|t|w|o|'|]+0#0000000&| @55
+@2|u+0#af5f00255&|n|l|e|t| +0#0000000&|d+0#00e0e07&|i|c|t|.+0#0000000&|t+0#00e0e07&|w|o| +0#0000000&@58
+> @74
+@2|u+0#af5f00255&|n|l|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@53
+@2|u+0#af5f00255&|n|l|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@52
+@2|u+0#af5f00255&|n|l|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@50
+@2|u+0#af5f00255&|n|l|e|t| +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&@49
+@2|u+0#af5f00255&|n|l|e|t| +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&@48
+@2|u+0#af5f00255&|n|l|e|t| +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&@46
+@75
+@2|"+0#0000e05&| |:|c|o|n|s|t| +0#0000000&@64
+@75
+@2|c+0#af5f00255&|o|n|s|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
+@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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_16.dump b/runtime/syntax/testdir/dumps/vim_function_variables_16.dump
new file mode 100644
index 0000000..049cea6
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_16.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+@2|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&@44
+@75
+@2|c+0#af5f00255&|o|n|s|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |E|N|D| +0#0000000&@55
+|.+0#e000002&@2| +0#0000000&@71
+>E+0#e000e06&|N|D| +0#0000000&@71
+@2|c+0#af5f00255&|o|n|s|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@50
+| +0#e000002&@1|.@2| +0#0000000&@69
+| +0#e000e06&@1|E|N|D| +0#0000000&@69
+@2|c+0#af5f00255&|o|n|s|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |e|v|a|l| |E|N|D| +0#0000000&@50
+|.+0#e000002&@2| +0#0000000&@71
+|E+0#e000e06&|N|D| +0#0000000&@71
+@2|c+0#af5f00255&|o|n|s|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&@45
+| +0#e000002&@1|.@2| +0#0000000&@69
+| +0#e000e06&@1|E|N|D| +0#0000000&@69
+@2|c+0#af5f00255&|o|n|s|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&@45
+| +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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_17.dump b/runtime/syntax/testdir/dumps/vim_function_variables_17.dump
new file mode 100644
index 0000000..7033588
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_17.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+@2|c+0#af5f00255&|o|n|s|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@63
+@2|c+0#af5f00255&|o|n|s|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b|a|r| @59
+@75
+@2|"+0#0000e05&| |:|f|o|r| +0#0000000&@66
+> @74
+@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
+@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|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@66
+@75
+@2|"+0#0000e05&| |:|l|o|c|k|v|a|r| +0#0000000&@62
+@75
+@2|l+0#af5f00255&|o|c|k|v|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@61
+@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&@57
+@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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_18.dump b/runtime/syntax/testdir/dumps/vim_function_variables_18.dump
new file mode 100644
index 0000000..2d1a2cd
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_18.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@61
+@75
+@2|l+0#af5f00255&|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
+@2|l+0#af5f00255&|o|c|k|v|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@48
+@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&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@47
+@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&@44
+@75
+@2|l+0#af5f00255&|o|c|k|v|a|r|!| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@60
+@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&@56
+@2|l+0#af5f00255&|o|c|k|v|a|r|!| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@60
+@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
+@2|l+0#af5f00255&|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&@50
+@2|l+0#af5f00255&|o|c|k|v|a|r|!| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@47
+@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&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@46
+@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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_19.dump b/runtime/syntax/testdir/dumps/vim_function_variables_19.dump
new file mode 100644
index 0000000..960ded8
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_19.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@1|l+0#af5f00255&|o|c|k|v|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@59
+@2|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&@55
+@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
+@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
+> @74
+@2|l+0#af5f00255&|o|c|k|v|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@49
+@2|l+0#af5f00255&|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&@46
+@2|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&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@45
+@2|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&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@42
+@75
+@2|"+0#0000e05&| |:|u|n|l|o|c|k|v|a|r| +0#0000000&@60
+@75
+@2|u+0#af5f00255&|n|l|o|c|k|v|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@59
+@2|u+0#af5f00255&|n|l|o|c|k|v|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@55
+@2|u+0#af5f00255&|n|l|o|c|k|v|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@59
+@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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_20.dump b/runtime/syntax/testdir/dumps/vim_function_variables_20.dump
new file mode 100644
index 0000000..59dcf21
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_20.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+@2|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&@49
+@2|u+0#af5f00255&|n|l|o|c|k|v|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@46
+@2|u+0#af5f00255&|n|l|o|c|k|v|a|r| +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
+@2|u+0#af5f00255&|n|l|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&@42
+> @74
+@2|u+0#af5f00255&|n|l|o|c|k|v|a|r|!| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@58
+@2|u+0#af5f00255&|n|l|o|c|k|v|a|r|!| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@54
+@2|u+0#af5f00255&|n|l|o|c|k|v|a|r|!| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@58
+@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
+@2|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&@48
+@2|u+0#af5f00255&|n|l|o|c|k|v|a|r|!| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@45
+@2|u+0#af5f00255&|n|l|o|c|k|v|a|r|!| +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&@44
+@2|u+0#af5f00255&|n|l|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&@41
+@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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_function_variables_21.dump b/runtime/syntax/testdir/dumps/vim_function_variables_21.dump
new file mode 100644
index 0000000..58ee05f
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_function_variables_21.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@1|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
+@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
+@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
+@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&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@47
+@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| 
diff --git a/runtime/syntax/testdir/dumps/vim_lambda_00.dump b/runtime/syntax/testdir/dumps/vim_lambda_00.dump
new file mode 100644
index 0000000..671354a
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_lambda_00.dump
@@ -0,0 +1,20 @@
+>"+0#0000e05#ffffff0| |V|i|m| |l|a|m|b|d|a| |e|x|p|r|e|s@1|i|o|n|s| +0#0000000&@50
+@75
+@75
+|l+0#af5f00255&|e|t| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+@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&|e+0#00e0e07&|x|p|r|}+0#e000e06&| +0#0000000&@55
+|l+0#af5f00255&|e|t| +0#0000000&|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|{+0#e000e06&|_+0#00e0e07&| +0#0000000&|-+0#af5f00255&|>| +0#0000000&|e+0#00e0e07&|x|p|r|}+0#e000e06&| +0#0000000&@53
+|l+0#af5f00255&|e|t| +0#0000000&|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|{+0#e000e06&|.+0#00e0e07&@2| +0#0000000&|-+0#af5f00255&|>| +0#0000000&|e+0#00e0e07&|x|p|r|}+0#e000e06&| +0#0000000&@51
+|l+0#af5f00255&|e|t| +0#0000000&|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|{+0#e000e06&|x+0#00e0e07&| +0#0000000&|-+0#af5f00255&|>| +0#0000000&|e+0#00e0e07&|x|p|r|}+0#e000e06&| +0#0000000&@53
+|l+0#af5f00255&|e|t| +0#0000000&|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|{+0#e000e06&|x+0#00e0e07&|,+0#0000000&| |_+0#00e0e07&| +0#0000000&|-+0#af5f00255&|>| +0#0000000&|e+0#00e0e07&|x|p|r|}+0#e000e06&| +0#0000000&@50
+|l+0#af5f00255&|e|t| +0#0000000&|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|{+0#e000e06&|x+0#00e0e07&|,+0#0000000&| |.+0#00e0e07&@2| +0#0000000&|-+0#af5f00255&|>| +0#0000000&|e+0#00e0e07&|x|p|r|}+0#e000e06&| +0#0000000&@48
+|l+0#af5f00255&|e|t| +0#0000000&|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|{+0#e000e06&|x+0#00e0e07&|,+0#0000000&| |y+0#00e0e07&| +0#0000000&|-+0#af5f00255&|>| +0#0000000&|e+0#00e0e07&|x|p|r|}+0#e000e06&| +0#0000000&@50
+@75
+@75
+|"+0#0000e05&| |l|i|n|e| |c|o|n|t|i|n|u|a|t|i|o|n|s| +0#0000000&@54
+@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&@61
+@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim_lambda_01.dump b/runtime/syntax/testdir/dumps/vim_lambda_01.dump
new file mode 100644
index 0000000..79a52d6
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_lambda_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+|"+0#0000e05&| |l|i|n|e| |c|o|n|t|i|n|u|a|t|i|o|n|s| +0#0000000&@54
+@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&@61
+@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
+@6>\+0#e000e06&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62
+@6|\+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@65
+|l+0#af5f00255&|e|t| +0#0000000&|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|{+0#e000e06&|_+0#00e0e07&| +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&|e+0#00e0e07&|x|p|r| +0#0000000&@62
+@6|\+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@65
+|l+0#af5f00255&|e|t| +0#0000000&|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|{+0#e000e06&|.+0#00e0e07&@2| +0#0000000&|-+0#af5f00255&|>| +0#0000000&@57
+@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62
+@6|\+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@65
+|l+0#af5f00255&|e|t| +0#0000000&|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|{+0#e000e06&|x+0#00e0e07&| +0#0000000&|-+0#af5f00255&|>| +0#0000000&@59
+@6|\+0#e000e06&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62
+@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@65
+@57|1|9|,|7| @9|1|2|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_lambda_02.dump b/runtime/syntax/testdir/dumps/vim_lambda_02.dump
new file mode 100644
index 0000000..40899d7
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_lambda_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@65
+|l+0#af5f00255&|e|t| +0#0000000&|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|{+0#e000e06&|x+0#00e0e07&|,+0#0000000&| |y+0#00e0e07&| +0#0000000&|-+0#af5f00255&|>| +0#0000000&@56
+@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62
+@6|\+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@65
+> @74
+|l+0#af5f00255&|e|t| +0#0000000&|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|{+0#e000e06&| +0#0000000&@63
+@6|\+0#e000e06&| +0#0000000&|-+0#af5f00255&|>| +0#0000000&@64
+@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62
+@6|\+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@65
+|l+0#af5f00255&|e|t| +0#0000000&|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|{+0#e000e06&|x+0#00e0e07&| +0#0000000&@62
+@6|\+0#e000e06&| +0#0000000&|-+0#af5f00255&|>| +0#0000000&@64
+@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62
+@6|\+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@65
+|l+0#af5f00255&|e|t| +0#0000000&|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|{+0#e000e06&|x+0#00e0e07&|,+0#0000000&| |y+0#00e0e07&| +0#0000000&@59
+@6|\+0#e000e06&| +0#0000000&|-+0#af5f00255&|>| +0#0000000&@64
+@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
+@57|3|7|,|0|-|1| @7|3|0|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_lambda_03.dump b/runtime/syntax/testdir/dumps/vim_lambda_03.dump
new file mode 100644
index 0000000..892cfab
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_lambda_03.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&|e+0#00e0e07&|x|p|r| +0#0000000&@62
+@6|\+0#e000e06&| +0#0000000&|}+0#e000e06&| +0#0000000&@65
+@75
+|l+0#af5f00255&|e|t| +0#0000000&|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|{+0#e000e06&|x+0#00e0e07&|,+0#0000000&| @61
+@6>\+0#e000e06&| +0#0000000&|y+0#00e0e07&|,+0#0000000&| @64
+@6|\+0#e000e06&| +0#0000000&|z+0#00e0e07&| +0#0000000&|-+0#af5f00255&|>| +0#0000000&|e+0#00e0e07&|x|p|r|}+0#e000e06&| +0#0000000&@56
+@75
+|l+0#af5f00255&|e|t| +0#0000000&|F+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|{+0#e000e06&| +0#0000000&@63
+@6|\+0#e000e06&| +0#0000000&|x+0#00e0e07&|,+0#0000000&| @64
+@6|\+0#e000e06&| +0#0000000&|y+0#00e0e07&|,+0#0000000&| @64
+@6|\+0#e000e06&| +0#0000000&|z+0#00e0e07&| +0#0000000&@65
+@6|\+0#e000e06&| +0#0000000&|-+0#af5f00255&|>| +0#0000000&@64
+@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@62
+@6|\+0#e000e06&| +0#0000000&|}+0#e000e06&| +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&@59
+@6|\+0#e000e06&| +0#0000000&|4+0#e000002&|2|,+0#0000000&| @63
+@57|5@1|,|7| @9|4|8|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_lambda_04.dump b/runtime/syntax/testdir/dumps/vim_lambda_04.dump
new file mode 100644
index 0000000..a26e67e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_lambda_04.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|4+0#e000002&|2|,+0#0000000&| @63
+@6|\+0#e000e06&| +0#0000000&|8+0#e000002&|3| +0#0000000&@64
+@6|\+0#e000e06&|]|}| +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&@59
+@6>\+0#e000e06&| +0#0000000&|'+0#e000002&|a|'|:+0#0000000&| |4+0#e000002&|2|,+0#0000000&| @58
+@6|\+0#e000e06&| +0#0000000&|'+0#e000002&|b|'|:+0#0000000&| |8+0#e000002&|3| +0#0000000&@59
+@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&|}@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
+@6|\+0#e000e06&| +0#0000000&|4+0#e000002&|2|,+0#0000000&| @63
+@6|\+0#e000e06&| +0#0000000&|8+0#e000002&|3| +0#0000000&@64
+@6|\+0#e000e06&|]|}@1| +0#0000000&@64
+@75
+@57|7|3|,|7| @9|6@1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_lambda_05.dump b/runtime/syntax/testdir/dumps/vim_lambda_05.dump
new file mode 100644
index 0000000..01e9e22
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_lambda_05.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@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&@55
+@6|\+0#e000e06&| +0#0000000&|'+0#e000002&|a|'|:+0#0000000&| |4+0#e000002&|2|,+0#0000000&| @58
+@6|\+0#e000e06&| +0#0000000&|'+0#e000002&|b|'|:+0#0000000&| |8+0#e000002&|3| +0#0000000&@59
+@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&|}@2| +0#0000000&@64
+@75
+|"+0#0000e05&| |:|h|e|l|p| |l|a|m|b|d|a| +0#0000000&@60
+@75
+|:|l+0#af5f00255&|e|t| +0#0000000&|F+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|{+0#e000e06&|a+0#00e0e07&|r|g|1|,+0#0000000&| |a+0#00e0e07&|r|g|2| +0#0000000&|-+0#af5f00255&|>| +0#0000000&|a+0#00e0e07&|r|g|1| +0#0000000&|-+0#af5f00255&| +0#0000000&|a+0#00e0e07&|r|g|2|}+0#e000e06&| +0#0000000&@38
+|:|e+0#af5f00255&|c|h|o| +0#0000000&|F|(+0#e000e06&|5+0#e000002&|,+0#0000000&| |2+0#e000002&|)+0#e000e06&| +0#0000000&@61
+@75
+|:|l+0#af5f00255&|e|t| +0#0000000&|F+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|{+0#e000e06&|-+0#af5f00255&|>| +0#0000000&|'+0#e000002&|e|r@1|o|r| |f|u|n|c|t|i|o|n|'|}+0#e000e06&| +0#0000000&@44
+|:|e+0#af5f00255&|c|h|o| +0#0000000&|F|(+0#e000e06&|'+0#e000002&|i|g|n|o|r|e|d|'|)+0#e000e06&| +0#0000000&@56
+@75
+@57|9|1|,|0|-|1| @7|8|4|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_lambda_06.dump b/runtime/syntax/testdir/dumps/vim_lambda_06.dump
new file mode 100644
index 0000000..5338e68
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_lambda_06.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+|:|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|a+0#00e0e07&|r|g|)+0#e000e06&| +0#0000000&@56
+|:| @1|l+0#af5f00255&|e|t| +0#0000000&|i+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|3+0#e000002&| +0#0000000&@62
+|:| @1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|{+0#e000e06&|x+0#00e0e07&| +0#0000000&|-+0#af5f00255&|>| +0#0000000&|x+0#00e0e07&| +0#0000000&|++0#af5f00255&| +0#0000000&|i+0#00e0e07&| +0#0000000&|-+0#af5f00255&| +0#0000000&|a+0#00e0e07&|:|a|r|g|}+0#e000e06&| +0#0000000&@44
+|:|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@62
+>:|l+0#af5f00255&|e|t| +0#0000000&|B+0#00e0e07&|a|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|F|o@1|(+0#e000e06&|4+0#e000002&|)+0#e000e06&| +0#0000000&@57
+|:|e+0#af5f00255&|c|h|o| +0#0000000&|B|a|r|(+0#e000e06&|6+0#e000002&|)+0#e000e06&| +0#0000000&@62
+@75
+|:|e+0#af5f00255&|c|h|o| +0#0000000&|m+0#00e0e07&|a|p|(+0#e000e06&|[|1+0#e000002&|,+0#0000000&| |2+0#e000002&|,+0#0000000&| |3+0#e000002&|]+0#e000e06&|,+0#0000000&| |{+0#e000e06&|i+0#00e0e07&|d|x|,+0#0000000&| |v+0#00e0e07&|a|l| +0#0000000&|-+0#af5f00255&|>| +0#0000000&|v+0#00e0e07&|a|l| +0#0000000&|++0#af5f00255&| +0#0000000&|1+0#e000002&|}+0#e000e06&|)| +0#0000000&@31
+|"+0#0000e05&| |[|2|,| |3|,| |4|]| @1| +0#0000000&@61
+@75
+|:|e+0#af5f00255&|c|h|o| +0#0000000&|s+0#00e0e07&|o|r|t|(+0#e000e06&|[|3+0#e000002&|,+0#0000000&|7+0#e000002&|,+0#0000000&|2+0#e000002&|,+0#0000000&|1+0#e000002&|,+0#0000000&|4+0#e000002&|]+0#e000e06&|,+0#0000000&| |{+0#e000e06&|a+0#00e0e07&|,+0#0000000&| |b+0#00e0e07&| +0#0000000&|-+0#af5f00255&|>| +0#0000000&|a+0#00e0e07&| +0#0000000&|-+0#af5f00255&| +0#0000000&|b+0#00e0e07&|}+0#e000e06&|)| +0#0000000&@34
+|"+0#0000e05&| |[|1|,| |2|,| |3|,| |4|,| |7|]| +0#0000000&@57
+|:|l+0#af5f00255&|e|t| +0#0000000&|t+0#00e0e07&|i|m|e|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|t+0#00e0e07&|i|m|e|r|_|s|t|a|r|t|(+0#e000e06&|5+0#e000002&|0@1|,+0#0000000&| @45
+@16|\+0#e000e06&| +0#0000000&|{+0#e000e06&|-+0#af5f00255&|>| +0#0000000&|e+0#00e0e07&|x|e|c|u|t|e|(+0#e000e06&|"+0#e000002&|e|c|h|o| |'|H|a|n|d|l|e|r| |c|a|l@1|e|d|'|"|,+0#0000000&| |"+0#e000002&@1|)+0#e000e06&|}|,+0#0000000&| @14
+@16|\+0#e000e06&| +0#0000000&|{+0#e000e06&|'+0#e000002&|r|e|p|e|a|t|'|:+0#0000000&| |3+0#e000002&|}+0#e000e06&|)| +0#0000000&@42
+@75
+|~+0#4040ff13&| @73
+|~| @73
+| +0#0000000&@56|1|0|9|,|1| @8|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_line_continuation_02.dump b/runtime/syntax/testdir/dumps/vim_line_continuation_02.dump
index e18a56d..3dde6fa 100644
--- a/runtime/syntax/testdir/dumps/vim_line_continuation_02.dump
+++ b/runtime/syntax/testdir/dumps/vim_line_continuation_02.dump
@@ -8,13 +8,13 @@
 @6|\+0#e000e06&| +0#0000000&|c+0#00e0e07&|:+0#0000000&| |3+0#e000002&| +0#0000000&@62
 @6|\+0#e000e06&|}| +0#0000000&@66
 @75
-|l+0#af5f00255&|e|t| +0#0000000&|a+0#00e0e07&|r@1|a|y| +0#0000000&|=+0#af5f00255&| +0#0000000&|[| @61
+|l+0#af5f00255&|e|t| +0#0000000&|a+0#00e0e07&|r@1|a|y| +0#0000000&|=+0#af5f00255&| +0#0000000&|[+0#e000e06&| +0#0000000&@61
 @6|"+0#0000e05&|\| |e|l|e|m|e|n|t| |1| +0#0000000&@56
 @6|\+0#e000e06&| +0#0000000&|1+0#e000002&|,+0#0000000&| @64
 @6|"+0#0000e05&|\| |e|l|e|m|e|n|t| |2| +0#0000000&@56
 @6|\+0#e000e06&| +0#0000000&|2+0#e000002&|,+0#0000000&| @64
 @6|"+0#0000e05&|\| |e|l|e|m|e|n|t| |3| +0#0000000&@56
 @6|\+0#e000e06&| +0#0000000&|3+0#e000002&| +0#0000000&@65
-@6|\+0#e000e06&|]+0#0000000&| @66
+@6|\+0#e000e06&|]| +0#0000000&@66
 |~+0#4040ff13&| @73
 | +0#0000000&@56|3|7|,|7| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_object_methods_00.dump b/runtime/syntax/testdir/dumps/vim_object_methods_00.dump
index d9ea0cc..8ac6f21 100644
--- a/runtime/syntax/testdir/dumps/vim_object_methods_00.dump
+++ b/runtime/syntax/testdir/dumps/vim_object_methods_00.dump
@@ -1,5 +1,7 @@
 >v+0#af5f00255#ffffff0|i|m|9|s|c|r|i|p|t| +0#0000000&@64
-|#+0#0000e05&| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |h|i| |l|i|n|k| |v|i|m|M|e|t|h|o|d|N|a|m|e| |T|o|d|o| +0#0000000&@31
+@75
+|#+0#0000e05&| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |h|i| |l|i|n|k| |v|i|m|9|M|e|t|h|o|d|N|a|m|e| |S|p|e|c|i|a|l| +0#0000000&@27
+|#+0#0000e05&| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |h|i| |l|i|n|k| |v|i|m|9|T|h|i|s| |T|o|d|o| +0#0000000&@36
 @75
 @75
 |#+0#0000e05&| |V|i|m| |||b|u|i|l|t|i|n|-|o|b|j|e|c|t|-|m|e|t|h|o|d|s||| |a|n|d| |n|a|m|e|s|a|k|e| |b|u|i|l|t|i|n| |f|u|n|c|t|i|o|n|s|.| +0#0000000&@12
@@ -7,14 +9,12 @@
 @8|p+0#af5f00255&|u|b|l|i|c| +0#0000000&|c+0#af5f00255&|o|n|s|t| +0#0000000&|a+0#00e0e07&|:+0#0000000&| |a+0#00e0003&|n|y| +0#0000000&@47
 @8|p+0#af5f00255&|u|b|l|i|c| +0#0000000&|c+0#af5f00255&|o|n|s|t| +0#0000000&|b+0#00e0e07&|:+0#0000000&| |a+0#00e0003&|n|y| +0#0000000&@47
 @75
-@8|d+0#af5f00255&|e|f| +0#0000000&|n+0#00e0e07&|e|w|(+0#e000e06&|a+0#00e0e07&|:+0#0000000&| |a+0#00e0003&|n|y|,+0#0000000&| |b+0#00e0e07&|:+0#0000000&| |a+0#00e0003&|n|y|)+0#e000e06&| +0#0000000&@43
-@16|t+0#00e0e07&|h|i|s|.+0#af5f00255&|a| +0#0000000&|=+0#af5f00255&| +0#0000000&|a+0#af5f00255&| +0#0000000&@48
-@16|t+0#00e0e07&|h|i|s|.+0#af5f00255&|b| +0#0000000&|=+0#af5f00255&| +0#0000000&|b+0#af5f00255&| +0#0000000&@48
+@8|d+0#af5f00255&|e|f| +0#0000000&|n+0#e000e06&|e|w|(|a+0#00e0e07&|:+0#0000000&| |a+0#00e0003&|n|y|,+0#0000000&| |b+0#00e0e07&|:+0#0000000&| |a+0#00e0003&|n|y|)+0#e000e06&| +0#0000000&@43
+@8| +0#00e0e07&@7|t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|a+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|a+0#00e0e07&| +0#0000000&@48
+@8| +0#00e0e07&@7|t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|b+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|b+0#00e0e07&| +0#0000000&@48
 @8|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@60
 @75
-@8|d+0#af5f00255&|e|f| +0#0000000&|e+0#00e0e07&|m|p|t|y|(+0#e000e06&|)|:+0#0000000&| |b+0#00e0003&|o@1|l| +0#0000000&@49
+@8|d+0#af5f00255&|e|f| +0#0000000&|e+0#e000e06&|m|p|t|y|(|)|:+0#0000000&| |b+0#00e0003&|o@1|l| +0#0000000&@49
 @16|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|f+0#e000002&|a|l|s|e| +0#0000000&@46
 @8|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@60
-@8|d+0#af5f00255&|e|f| +0#0000000&|l+0#00e0e07&|e|n|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@49
-@16|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|2+0#e000002&| +0#0000000&@50
 @57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim_object_methods_01.dump b/runtime/syntax/testdir/dumps/vim_object_methods_01.dump
index 7989781..9af5000 100644
--- a/runtime/syntax/testdir/dumps/vim_object_methods_01.dump
+++ b/runtime/syntax/testdir/dumps/vim_object_methods_01.dump
@@ -1,12 +1,14 @@
-| +0&#ffffff0@74
-@8|d+0#af5f00255&|e|f| +0#0000000&|e+0#00e0e07&|m|p|t|y|(+0#e000e06&|)|:+0#0000000&| |b+0#00e0003&|o@1|l| +0#0000000&@49
+| +0&#ffffff0@7| +0#00e0e07&@7|t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|b+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|b+0#00e0e07&| +0#0000000&@48
+@8|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@60
+@75
+@8|d+0#af5f00255&|e|f| +0#0000000&|e+0#e000e06&|m|p|t|y|(|)|:+0#0000000&| |b+0#00e0003&|o@1|l| +0#0000000&@49
 @16|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|f+0#e000002&|a|l|s|e| +0#0000000&@46
+@8>e+0#af5f00255&|n|d@1|e|f| +0#0000000&@60
+@8|d+0#af5f00255&|e|f| +0#0000000&|l+0#e000e06&|e|n|(|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@49
+@16|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|2+0#e000002&| +0#0000000&@50
 @8|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@60
-@8|d+0#af5f00255&|e|f| +0#0000000&|l+0#00e0e07&|e|n|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@49
-@16>r+0#af5f00255&|e|t|u|r|n| +0#0000000&|2+0#e000002&| +0#0000000&@50
-@8|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@60
-@8|d+0#af5f00255&|e|f| +0#0000000&|s+0#00e0e07&|t|r|i|n|g|(+0#e000e06&|)|:+0#0000000&| |s+0#00e0003&|t|r|i|n|g| +0#0000000&@46
-@16|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|p+0#00e0e07&|r|i|n|t|f|(+0#e000e06&|'+0#e000002&|(|%|s|,| |%|s|)|'|,+0#0000000&| |t+0#00e0e07&|h|i|s|.+0#af5f00255&|a+0#00e0e07&|,+0#0000000&| |t+0#00e0e07&|h|i|s|.+0#af5f00255&|b+0#00e0e07&|)+0#e000e06&| +0#0000000&@17
+@8|d+0#af5f00255&|e|f| +0#0000000&|s+0#e000e06&|t|r|i|n|g|(|)|:+0#0000000&| |s+0#00e0003&|t|r|i|n|g| +0#0000000&@46
+@16|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|p+0#00e0e07&|r|i|n|t|f|(+0#e000e06&|'+0#e000002&|(|%|s|,| |%|s|)|'|,+0#0000000&| |t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|a+0#00e0e07&|,+0#0000000&| |t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|b+0#00e0e07&|)+0#e000e06&| +0#0000000&@17
 @8|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@60
 |e+0#af5f00255&|n|d|c|l|a|s@1| +0#0000000&@66
 @75
@@ -15,6 +17,4 @@
 @75
 @8|d+0#af5f00255&|e|f| +0#0000000&|N|o|O|p|(+0#e000e06&|)| +0#0000000&@56
 @8|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@60
-@75
-@8|d+0#af5f00255&|e|f| +0#0000000&|e+0#00e0e07&|m|p|t|y|(+0#e000e06&|)|:+0#0000000&| |b+0#00e0003&|o@1|l| +0#0000000&@49
-@57|1|9|,|3|-|1|7| @6|3|5|%| 
+@57|1|9|,|2|-|9| @7|3@1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_object_methods_02.dump b/runtime/syntax/testdir/dumps/vim_object_methods_02.dump
index 1ca93f0..4ecdffa 100644
--- a/runtime/syntax/testdir/dumps/vim_object_methods_02.dump
+++ b/runtime/syntax/testdir/dumps/vim_object_methods_02.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@7|d+0#af5f00255&|e|f| +0#0000000&|e+0#00e0e07&|m|p|t|y|(+0#e000e06&|)|:+0#0000000&| |b+0#00e0003&|o@1|l| +0#0000000&@49
+| +0&#ffffff0@7|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@60
+@75
+@8|d+0#af5f00255&|e|f| +0#0000000&|e+0#e000e06&|m|p|t|y|(|)|:+0#0000000&| |b+0#00e0003&|o@1|l| +0#0000000&@49
 @16|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&@47
 @8|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@60
-@8|d+0#af5f00255&|e|f| +0#0000000&|l+0#00e0e07&|e|n|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@49
+@8>d+0#af5f00255&|e|f| +0#0000000&|l+0#e000e06&|e|n|(|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@49
 @16|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|0+0#e000002&| +0#0000000&@50
-@8>e+0#af5f00255&|n|d@1|e|f| +0#0000000&@60
-@8|d+0#af5f00255&|e|f| +0#0000000&|s+0#00e0e07&|t|r|i|n|g|(+0#e000e06&|)|:+0#0000000&| |s+0#00e0003&|t|r|i|n|g| +0#0000000&@46
-@16|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|t+0#00e0e07&|h|i|s|.+0#af5f00255&|n+0#0000000&|a|m|e| @42
+@8|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@60
+@8|d+0#af5f00255&|e|f| +0#0000000&|s+0#e000e06&|t|r|i|n|g|(|)|:+0#0000000&| |s+0#00e0003&|t|r|i|n|g| +0#0000000&@46
+@16|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|t+0#0000001#ffff4012|h|i|s|.+0#af5f00255#ffffff0|n+0#00e0e07&|a|m|e| +0#0000000&@42
 @8|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@60
 |e+0#af5f00255&|n|d|e|n|u|m| +0#0000000&@67
 @75
 |c+0#af5f00255&|o|n|s|t| +0#0000000&|b+0#00e0e07&|1|:+0#0000000&| |b+0#00e0003&|o@1|l| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|m|p|t|y|(+0#e000e06&|M+0#00e0e07&|a|r|k|e|r|E|n|u|m|T|e|s|t|.+0#af5f00255&|I+0#00e0e07&|N|S|T|A|N|C|E|)+0#e000e06&| +0#0000000&@27
 |c+0#af5f00255&|o|n|s|t| +0#0000000&|n+0#00e0e07&|1|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|l+0#00e0e07&|e|n|(+0#e000e06&|M+0#00e0e07&|a|r|k|e|r|E|n|u|m|T|e|s|t|.+0#af5f00255&|I+0#00e0e07&|N|S|T|A|N|C|E|)+0#e000e06&| +0#0000000&@27
 |c+0#af5f00255&|o|n|s|t| +0#0000000&|s+0#00e0e07&|1|:+0#0000000&| |s+0#00e0003&|t|r|i|n|g| +0#0000000&|=+0#af5f00255&| +0#0000000&|s+0#00e0e07&|t|r|i|n|g|(+0#e000e06&|M+0#00e0e07&|a|r|k|e|r|E|n|u|m|T|e|s|t|.+0#af5f00255&|I+0#00e0e07&|N|S|T|A|N|C|E|)+0#e000e06&| +0#0000000&@24
-|e+0#af5f00255&|c|h|o| +0#0000000&|b+0#00e0e07&|1| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|M|a|r|k|e|r|E|n|u|m|T|e|s|t|.|I|N|S|T|A|N|C|E|.|e+0#00e0e07&|m|p|t|y|(+0#e000e06&|)| +0#0000000&@32
-|e+0#af5f00255&|c|h|o| +0#0000000&|n+0#00e0e07&|1| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|0+0#e000002&| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|M|a|r|k|e|r|E|n|u|m|T|e|s|t|.|I|N|S|T|A|N|C|E|.|l+0#00e0e07&|e|n|(+0#e000e06&|)| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|0+0#e000002&| +0#0000000&@24
-|e+0#af5f00255&|c|h|o| +0#0000000&|s+0#00e0e07&|1| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|I|N|S|T|A|N|C|E|'| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|M|a|r|k|e|r|E|n|u|m|T|e|s|t|.|I|N|S|T|A|N|C|E|.|s+0#00e0e07&|t|r|i|n|g|(+0#e000e06&|)| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|I|N|S|T|A|N|C|E|'| +0#0000000&@3
-@75
-|c+0#af5f00255&|o|n|s|t| +0#0000000&|p+0#00e0e07&|a|i|r|:+0#0000000&| |P|a|i|r|C|l|a|s@1|T|e|s|t| |=+0#af5f00255&| +0#0000000&|P|a|i|r|C|l|a|s@1|T|e|s|t|.|n+0#00e0e07&|e|w|(+0#e000e06&|0+0#e000002&|,+0#0000000&| |1+0#e000002&|)+0#e000e06&| +0#0000000&@23
-@57|3|7|,|2|-|9| @7|8|3|%| 
+|e+0#af5f00255&|c|h|o| +0#0000000&|b+0#00e0e07&|1| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|M|a|r|k|e|r|E|n|u|m|T|e|s|t|.|I|N|S|T|A|N|C|E|.|e+0#e000e06&|m|p|t|y|(|)| +0#0000000&@32
+|e+0#af5f00255&|c|h|o| +0#0000000&|n+0#00e0e07&|1| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|0+0#e000002&| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|M|a|r|k|e|r|E|n|u|m|T|e|s|t|.|I|N|S|T|A|N|C|E|.|l+0#e000e06&|e|n|(|)| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|0+0#e000002&| +0#0000000&@24
+|e+0#af5f00255&|c|h|o| +0#0000000&|s+0#00e0e07&|1| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|I|N|S|T|A|N|C|E|'| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|M|a|r|k|e|r|E|n|u|m|T|e|s|t|.|I|N|S|T|A|N|C|E|.|s+0#e000e06&|t|r|i|n|g|(|)| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|I|N|S|T|A|N|C|E|'| +0#0000000&@3
+@57|3|7|,|2|-|9| @7|7|9|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_object_methods_03.dump b/runtime/syntax/testdir/dumps/vim_object_methods_03.dump
index fe5bf51..255c8b5 100644
--- a/runtime/syntax/testdir/dumps/vim_object_methods_03.dump
+++ b/runtime/syntax/testdir/dumps/vim_object_methods_03.dump
@@ -1,9 +1,11 @@
-|c+0#af5f00255#ffffff0|o|n|s|t| +0#0000000&|p+0#00e0e07&|a|i|r|:+0#0000000&| |P|a|i|r|C|l|a|s@1|T|e|s|t| |=+0#af5f00255&| +0#0000000&|P|a|i|r|C|l|a|s@1|T|e|s|t|.|n+0#00e0e07&|e|w|(+0#e000e06&|0+0#e000002&|,+0#0000000&| |1+0#e000002&|)+0#e000e06&| +0#0000000&@23
-|c+0#af5f00255&|o|n|s|t| +0#0000000&|b+0#00e0e07&|2|:+0#0000000&| |b+0#00e0003&|o@1|l| +0#0000000&|=+0#af5f00255&| +0#0000000&|!+0#af5f00255&|p+0#0000000&|a|i|r|.|e+0#00e0e07&|m|p|t|y|(+0#e000e06&|)| +0#0000000&@44
-|c+0#af5f00255&|o|n|s|t| +0#0000000&|n+0#00e0e07&|2|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|p|a|i|r|.|l+0#00e0e07&|e|n|(+0#e000e06&|)| +0#0000000&@45
-|c+0#af5f00255&|o|n|s|t| +0#0000000&|s+0#00e0e07&|2|:+0#0000000&| |s+0#00e0003&|t|r|i|n|g| +0#0000000&|=+0#af5f00255&| +0#0000000&|p|a|i|r|.|s+0#00e0e07&|t|r|i|n|g|(+0#e000e06&|)| +0#0000000&@42
+|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|s+0#00e0e07&|1| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|I|N|S|T|A|N|C|E|'| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|M|a|r|k|e|r|E|n|u|m|T|e|s|t|.|I|N|S|T|A|N|C|E|.|s+0#e000e06&|t|r|i|n|g|(|)| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|I|N|S|T|A|N|C|E|'| +0#0000000&@3
+@75
+|c+0#af5f00255&|o|n|s|t| +0#0000000&|p+0#00e0e07&|a|i|r|:+0#0000000&| |P|a|i|r|C|l|a|s@1|T|e|s|t| |=+0#af5f00255&| +0#0000000&|P|a|i|r|C|l|a|s@1|T|e|s|t|.|n+0#e000e06&|e|w|(|0+0#e000002&|,+0#0000000&| |1+0#e000002&|)+0#e000e06&| +0#0000000&@23
+|c+0#af5f00255&|o|n|s|t| +0#0000000&|b+0#00e0e07&|2|:+0#0000000&| |b+0#00e0003&|o@1|l| +0#0000000&|=+0#af5f00255&| +0#0000000&|!+0#af5f00255&|p+0#0000000&|a|i|r|.|e+0#e000e06&|m|p|t|y|(|)| +0#0000000&@44
+|c+0#af5f00255&|o|n|s|t| +0#0000000&|n+0#00e0e07&|2|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|p|a|i|r|.|l+0#e000e06&|e|n|(|)| +0#0000000&@45
+>c+0#af5f00255&|o|n|s|t| +0#0000000&|s+0#00e0e07&|2|:+0#0000000&| |s+0#00e0003&|t|r|i|n|g| +0#0000000&|=+0#af5f00255&| +0#0000000&|p|a|i|r|.|s+0#e000e06&|t|r|i|n|g|(|)| +0#0000000&@42
 |e+0#af5f00255&|c|h|o| +0#0000000&|b+0#00e0e07&|2| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|!+0#af5f00255&|e+0#00e0e07&|m|p|t|y|(+0#e000e06&|p+0#00e0e07&|a|i|r|)+0#e000e06&| +0#0000000&@51
->e+0#af5f00255&|c|h|o| +0#0000000&|n+0#00e0e07&|2| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|2+0#e000002&| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|l+0#00e0e07&|e|n|(+0#e000e06&|p+0#00e0e07&|a|i|r|)+0#e000e06&| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|2+0#e000002&| +0#0000000&@44
+|e+0#af5f00255&|c|h|o| +0#0000000&|n+0#00e0e07&|2| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|2+0#e000002&| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|l+0#00e0e07&|e|n|(+0#e000e06&|p+0#00e0e07&|a|i|r|)+0#e000e06&| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|2+0#e000002&| +0#0000000&@44
 |e+0#af5f00255&|c|h|o| +0#0000000&|s+0#00e0e07&|2| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|(|0|,| |1|)|'| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|s+0#00e0e07&|t|r|i|n|g|(+0#e000e06&|p+0#00e0e07&|a|i|r|)+0#e000e06&| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|(|0|,| |1|)|'| +0#0000000&@27
 |~+0#4040ff13&| @73
 |~| @73
@@ -15,6 +17,4 @@
 |~| @73
 |~| @73
 |~| @73
-|~| @73
-|~| @73
 | +0#0000000&@56|5@1|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_variables_00.dump b/runtime/syntax/testdir/dumps/vim_variables_00.dump
index da77064..f676448 100644
--- a/runtime/syntax/testdir/dumps/vim_variables_00.dump
+++ b/runtime/syntax/testdir/dumps/vim_variables_00.dump
@@ -2,19 +2,19 @@
 @75
 |"+0#0000e05&| |:|l|e|t| +0#0000000&@68
 @75
-|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e|x|p|r| @60
+|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@60
 @75
-|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1|[+0#0000000&|0+0#e000002&|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e|x|p|r| @57
+|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1|[+0#0000000&|0+0#e000002&|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
 @75
-|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1|[+0#0000000&|1+0#e000002&|:+0#0000000&|2+0#e000002&|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e|x|p|r| @55
-|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1|[+0#0000000&|:|2+0#e000002&|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e|x|p|r| @56
-|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1|[+0#0000000&|1+0#e000002&|:+0#0000000&|]| |=+0#af5f00255&| +0#0000000&|e|x|p|r| @56
-|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1|[+0#0000000&|:|]| |=+0#af5f00255&| +0#0000000&|e|x|p|r| @57
+|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|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&@55
+|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1|[+0#0000000&|:|2+0#e000002&|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
+|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1|[+0#0000000&|1+0#e000002&|:+0#0000000&|]| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
+|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1|[+0#0000000&|:|]| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
 @75
-|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e|x|p|r| @59
-|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e|x|p|r| @59
-|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e|x|p|r| @59
-|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e|x|p|r| @59
-|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|%+0#af5f00255&|=| +0#0000000&|e|x|p|r| @59
-|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e|x|p|r| @59
+|l+0#af5f00255&|e|t| +0#0000000&|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&@53
+|l+0#af5f00255&|e|t| +0#0000000&|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&@53
+@75
+|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
+|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
+|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
 @57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim_variables_01.dump b/runtime/syntax/testdir/dumps/vim_variables_01.dump
index 02f6819..8f13398 100644
--- a/runtime/syntax/testdir/dumps/vim_variables_01.dump
+++ b/runtime/syntax/testdir/dumps/vim_variables_01.dump
@@ -1,20 +1,20 @@
-|l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e|x|p|r| @59
-|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e|x|p|r| @59
-|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e|x|p|r| @59
-|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e|x|p|r| @59
-|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|%+0#af5f00255&|=| +0#0000000&|e|x|p|r| @59
->l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e|x|p|r| @59
-|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e|x|p|r| @58
+|l+0#af5f00255#ffffff0|e|t| +0#0000000&|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&@53
+|l+0#af5f00255&|e|t| +0#0000000&|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&@53
 @75
-|l+0#af5f00255&|e|t| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e|x|p|r| @59
-|l+0#af5f00255&|e|t| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e|x|p|r| @58
+|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
+|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
+>l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|*+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
+|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|/+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
+|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|%+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
+|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@59
+|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58
 @75
-|l+0#af5f00255&|e|t| +0#0000000&|@+0#e000e06&|f| +0#0000000&|=+0#af5f00255&| +0#0000000&|e|x|p|r| @61
-|l+0#af5f00255&|e|t| +0#0000000&|@+0#e000e06&|f| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e|x|p|r| @60
+|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&@58
 @75
-|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e|x|p|r| @59
+|l+0#af5f00255&|e|t| +0#0000000&|b+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
-|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|x|p|r| @58
-@57|1|9|,|1| @9|1|0|%| 
+|l+0#af5f00255&|e|t| +0#0000000&|b+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&|b+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&|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&@54
+|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
+@57|1|9|,|1| @10|3|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_variables_02.dump b/runtime/syntax/testdir/dumps/vim_variables_02.dump
index 8f31c47..bd23de5 100644
--- a/runtime/syntax/testdir/dumps/vim_variables_02.dump
+++ b/runtime/syntax/testdir/dumps/vim_variables_02.dump
@@ -1,20 +1,20 @@
-|l+0#af5f00255#ffffff0|e|t| +0#0000000&|&+0#00e0e07&|f|o@1| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e|x|p|r| @58
+|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&|&+0#00e0e07&|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e|x|p|r| @58
-|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e|x|p|r| @58
+|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
 @75
->l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e|x|p|r| @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
+|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
+|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
+|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&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
 @75
-|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e|x|p|r| @56
-|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e|x|p|r| @56
-|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|l|:|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e|x|p|r| @56
+|l+0#af5f00255&|e|t| +0#0000000&|g+0#00e0e07&|:|f|o@1| +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&|g|:|f|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e|x|p|r| @57
+|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&@55
 @75
-|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|f|o@1| +0#0000000&|.+0#af5f00255&|=| +0#0000000&|e|x|p|r| @56
-|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|f|o@1| +0#0000000&|++0#af5f00255&|=| +0#0000000&|e|x|p|r| @56
-|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|g|:|f|o@1| +0#0000000&|-+0#af5f00255&|=| +0#0000000&|e|x|p|r| @56
-@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|x|p|r| @53
-|l+0#af5f00255&|e|t| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| @65
-@57|3|7|,|1| @9|2|6|%| 
+|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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_variables_03.dump b/runtime/syntax/testdir/dumps/vim_variables_03.dump
index 3e8d21c..e2ff94d 100644
--- a/runtime/syntax/testdir/dumps/vim_variables_03.dump
+++ b/runtime/syntax/testdir/dumps/vim_variables_03.dump
@@ -1,20 +1,20 @@
-|l+0#af5f00255#ffffff0|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|x|p|r| @55
+|l+0#af5f00255#ffffff0|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
+|l+0#af5f00255&|e|t| +0#0000000&|g+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&|g+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&|[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#0000000&| |.+0#af5f00255&|=| +0#0000000&|e|x|p|r| @52
-|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|x|p|r| @52
->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|x|p|r| @52
+|l+0#af5f00255&|e|t| +0#0000000&|g+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&|g+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&|[|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|x|p|r| @48
-|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|x|p|r| @55
+|l+0#af5f00255&|e|t| +0#0000000&|g+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&|g+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&|g+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&|g+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&|g+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&|g+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&|g+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
 @75
-|l+0#af5f00255&|e|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|x|p|r| @47
-|l+0#af5f00255&|e|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|x|p|r| @47
-|l+0#af5f00255&|e|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|x|p|r| @47
+|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&@58
 @75
-|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |E|N|D| +0#0000000&@59
-|.+0#e000002&@2| +0#0000000&@71
-|E+0#e000e06&|N|D| +0#0000000&@71
-@57|5@1|,|1| @9|4|1|%| 
+|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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_variables_04.dump b/runtime/syntax/testdir/dumps/vim_variables_04.dump
index 97d240c..2958aed 100644
--- a/runtime/syntax/testdir/dumps/vim_variables_04.dump
+++ b/runtime/syntax/testdir/dumps/vim_variables_04.dump
@@ -1,20 +1,20 @@
-|E+0#e000e06#ffffff0|N|D| +0#0000000&@71
-|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@54
-|.+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| |E|N|D| +0#0000000&@54
->.+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| |t|r|i|m| |e|v|a|l| |E|N|D| +0#0000000&@49
-|.+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
-|.+0#e000002&@2| +0#0000000&@71
-|E+0#e000e06&|N|D| +0#0000000&@71
+| +0&#ffffff0@74
+|l+0#af5f00255&|e|t| +0#0000000&|s+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&|s+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&|s+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&|s+0#00e0e07&|:|f|o@1|[+0#0000000&|:|]| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
+> @74
+|l+0#af5f00255&|e|t| +0#0000000&|s+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&|s+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&|f+0#00e0e07&|o@1| +0#0000000&@67
-|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b|a|r| @63
+|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&@57
+|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&@57
+|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&@57
+|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&@57
+|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&@57
+|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&@57
+|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&@56
 @75
-|"+0#0000e05&| |:|u|n|l|e|t| +0#0000000&@66
+|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|,|1| @9|5|6|%| 
+@57|7|3|,|0|-|1| @7|1|8|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_variables_05.dump b/runtime/syntax/testdir/dumps/vim_variables_05.dump
index 8254fbe..3933933 100644
--- a/runtime/syntax/testdir/dumps/vim_variables_05.dump
+++ b/runtime/syntax/testdir/dumps/vim_variables_05.dump
@@ -1,20 +1,20 @@
 | +0&#ffffff0@74
-|u+0#af5f00255&|n|l|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@65
-|u+0#af5f00255&|n|l|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@61
-|u+0#af5f00255&|n|l|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@65
-@6|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@63
-> @74
-|u+0#af5f00255&|n|l|e|t|!| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@64
-|u+0#af5f00255&|n|l|e|t|!| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@60
-|u+0#af5f00255&|n|l|e|t|!| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@64
-@6|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@63
+|l+0#af5f00255&|e|t| +0#0000000&|t+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
-|u+0#af5f00255&|n|l|e|t| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&@64
-|u+0#af5f00255&|n|l|e|t|!| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&@63
+|l+0#af5f00255&|e|t| +0#0000000&|t+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&|t+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&|t+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&|t+0#00e0e07&|:|f|o@1|[+0#0000000&|:|]| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
 @75
-|u+0#af5f00255&|n|l|e|t| +0#0000000&|l+0#00e0e07&|i|s|t|[+0#0000000&|3+0#e000002&|]+0#0000000&| @61
-|u+0#af5f00255&|n|l|e|t| +0#0000000&|l+0#00e0e07&|i|s|t|[+0#0000000&|3+0#e000002&|:+0#0000000&|]| @60
-|u+0#af5f00255&|n|l|e|t| +0#0000000&|d+0#00e0e07&|i|c|t|[+0#0000000&|'+0#e000002&|t|w|o|'|]+0#0000000&| @57
-|u+0#af5f00255&|n|l|e|t| +0#0000000&|d+0#00e0e07&|i|c|t|.+0#0000000&|t+0#00e0e07&|w|o| +0#0000000&@60
+|l+0#af5f00255&|e|t| +0#0000000&|t+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&|t+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
-@57|9|1|,|0|-|1| @7|7|1|%| 
+|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&|=| +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&|=| +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&|=| +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&|=| +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&|=| +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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_variables_06.dump b/runtime/syntax/testdir/dumps/vim_variables_06.dump
index 89b3d41..be006fc 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
-|"+0#0000e05&| |:|c|o|n|s|t| +0#0000000&@66
+|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
 @75
-|c+0#af5f00255&|o|n|s|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e|x|p|r| @58
+|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
 @75
->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|x|p|r| @51
+>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
 @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|x|p|r| @46
+|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
 @75
-|c+0#af5f00255&|o|n|s|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |E|N|D| +0#0000000&@57
-|.+0#e000002&@2| +0#0000000&@71
-|E+0#e000e06&|N|D| +0#0000000&@71
-|c+0#af5f00255&|o|n|s|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@52
-|.+0#e000002&@2| +0#0000000&@71
-|E+0#e000e06&|N|D| +0#0000000&@71
-|c+0#af5f00255&|o|n|s|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |e|v|a|l| |E|N|D| +0#0000000&@52
-|.+0#e000002&@2| +0#0000000&@71
-|E+0#e000e06&|N|D| +0#0000000&@71
-|c+0#af5f00255&|o|n|s|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
-@57|1|0|9|,|1| @8|8|6|%| 
+|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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_variables_07.dump b/runtime/syntax/testdir/dumps/vim_variables_07.dump
index f0288f0..7851c85 100644
--- a/runtime/syntax/testdir/dumps/vim_variables_07.dump
+++ b/runtime/syntax/testdir/dumps/vim_variables_07.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|o|n|s|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&@2| +0#0000000&@71
-|E+0#e000e06&|N|D| +0#0000000&@71
-|c+0#af5f00255&|o|n|s|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&@47
-|.+0#e000002&@2| +0#0000000&@71
->E+0#e000e06&|N|D| +0#0000000&@71
+|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
 @75
-|c+0#af5f00255&|o|n|s|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@65
-|c+0#af5f00255&|o|n|s|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b|a|r| @61
+|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
-|"+0#0000e05&| |:|f|o|r| +0#0000000&@68
+>l+0#af5f00255&|e|t| +0#0000000&|w+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
-|f+0#af5f00255&|o|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|e|x|p|r| @59
-|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@68
+|l+0#af5f00255&|e|t| +0#0000000&|w+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&|w+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&|w+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&|w+0#00e0e07&|:|f|o@1|[+0#0000000&|:|]| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
 @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|x|p|r| @52
-|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@68
-|~+0#4040ff13&| @73
-|~| @73
-| +0#0000000&@56|1|2|7|,|1| @8|B|o|t| 
+|l+0#af5f00255&|e|t| +0#0000000&|w+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&|w+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&|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
+|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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_variables_08.dump b/runtime/syntax/testdir/dumps/vim_variables_08.dump
new file mode 100644
index 0000000..33de2cf
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_variables_08.dump
@@ -0,0 +1,20 @@
+|l+0#af5f00255#ffffff0|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
+|l+0#af5f00255&|e|t| +0#0000000&|w+0#00e0e07&|:|f|o@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
+@75
+>l+0#af5f00255&|e|t| +0#0000000&|$+0#e000e06&|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#e000e06&|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#e000e06&|F|O@1| +0#0000000&|.+0#af5f00255&@1|=| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
+@75
+|l+0#af5f00255&|e|t| +0#0000000&|@+0#e000e06&|f| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@61
+|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
+@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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_variables_09.dump b/runtime/syntax/testdir/dumps/vim_variables_09.dump
new file mode 100644
index 0000000..101d7a2
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_variables_09.dump
@@ -0,0 +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
+@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
+> @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
+@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
+@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
+@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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_variables_10.dump b/runtime/syntax/testdir/dumps/vim_variables_10.dump
new file mode 100644
index 0000000..254ec89
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_variables_10.dump
@@ -0,0 +1,20 @@
+|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&|[|$+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
+|l+0#af5f00255&|e|t| +0#0000000&|[|@+0#e000e06&|a|,+0#0000000&| |@+0#e000e06&|b|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
+|l+0#af5f00255&|e|t| +0#0000000&|[|@+0#e000e06&|a|,+0#0000000&| @66
+@6|\+0#e000e06&| +0#0000000&@1|@+0#e000e06&|b|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@55
+@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&@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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_variables_11.dump b/runtime/syntax/testdir/dumps/vim_variables_11.dump
new file mode 100644
index 0000000..7bb6003
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_variables_11.dump
@@ -0,0 +1,20 @@
+|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&@52
+|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
+@75
+|l+0#af5f00255&|e|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&@48
+|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&|[|$+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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_variables_12.dump b/runtime/syntax/testdir/dumps/vim_variables_12.dump
new file mode 100644
index 0000000..db1c966
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_variables_12.dump
@@ -0,0 +1,20 @@
+| +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
+|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
+@6|\+0#e000e06&| +0#0000000&|@+0#e000e06&|c|]+0#0000000&| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@56
+> @74
+|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |E|N|D| +0#0000000&@59
+|.+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| |t|r|i|m| |E|N|D| +0#0000000&@54
+|.+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| |E|N|D| +0#0000000&@54
+|.+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| |t|r|i|m| |e|v|a|l| |E|N|D| +0#0000000&@49
+|.+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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_variables_13.dump b/runtime/syntax/testdir/dumps/vim_variables_13.dump
new file mode 100644
index 0000000..64706fd
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_variables_13.dump
@@ -0,0 +1,20 @@
+|l+0#af5f00255#ffffff0|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
+|.+0#e000002&@2| +0#0000000&@71
+|E+0#e000e06&|N|D| +0#0000000&@71
+@75
+|"+0#0000e05&| |:|l|e|t| |l|i|s|t| |v|a|l|u|e|s| +0#0000000&@56
+> @74
+|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@67
+|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b|a|r| @63
+|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@67
+@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&|b|a|r| @63
+@75
+|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@57
+|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@56
+|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@54
+|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&@53
+|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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_variables_14.dump b/runtime/syntax/testdir/dumps/vim_variables_14.dump
new file mode 100644
index 0000000..cdda808
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_variables_14.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+|"+0#0000e05&| |:|u|n|l|e|t| +0#0000000&@66
+@75
+|u+0#af5f00255&|n|l|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@65
+|u+0#af5f00255&|n|l|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@61
+>u+0#af5f00255&|n|l|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@65
+@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
+|u+0#af5f00255&|n|l|e|t|!| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@64
+|u+0#af5f00255&|n|l|e|t|!| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@60
+|u+0#af5f00255&|n|l|e|t|!| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@64
+@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
+|u+0#af5f00255&|n|l|e|t| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&@64
+|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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_variables_15.dump b/runtime/syntax/testdir/dumps/vim_variables_15.dump
new file mode 100644
index 0000000..44a9223
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_variables_15.dump
@@ -0,0 +1,20 @@
+|u+0#af5f00255#ffffff0|n|l|e|t| +0#0000000&|l+0#00e0e07&|i|s|t|[+0#0000000&|3+0#e000002&|]+0#0000000&| @61
+|u+0#af5f00255&|n|l|e|t| +0#0000000&|l+0#00e0e07&|i|s|t|[+0#0000000&|3+0#e000002&|:+0#0000000&|]| @60
+|u+0#af5f00255&|n|l|e|t| +0#0000000&|d+0#00e0e07&|i|c|t|[+0#0000000&|'+0#e000002&|t|w|o|'|]+0#0000000&| @57
+|u+0#af5f00255&|n|l|e|t| +0#0000000&|d+0#00e0e07&|i|c|t|.+0#0000000&|t+0#00e0e07&|w|o| +0#0000000&@60
+@75
+>u+0#af5f00255&|n|l|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@55
+|u+0#af5f00255&|n|l|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@54
+|u+0#af5f00255&|n|l|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@52
+|u+0#af5f00255&|n|l|e|t| +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&@51
+|u+0#af5f00255&|n|l|e|t| +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&@50
+|u+0#af5f00255&|n|l|e|t| +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&@48
+@75
+|"+0#0000e05&| |:|c|o|n|s|t| +0#0000000&@66
+@75
+|c+0#af5f00255&|o|n|s|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@58
+@75
+|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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_variables_16.dump b/runtime/syntax/testdir/dumps/vim_variables_16.dump
new file mode 100644
index 0000000..5821a4c
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_variables_16.dump
@@ -0,0 +1,20 @@
+|c+0#af5f00255#ffffff0|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
+@75
+|c+0#af5f00255&|o|n|s|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |E|N|D| +0#0000000&@57
+|.+0#e000002&@2| +0#0000000&@71
+|E+0#e000e06&|N|D| +0#0000000&@71
+>c+0#af5f00255&|o|n|s|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@52
+|.+0#e000002&@2| +0#0000000&@71
+|E+0#e000e06&|N|D| +0#0000000&@71
+|c+0#af5f00255&|o|n|s|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |e|v|a|l| |E|N|D| +0#0000000&@52
+|.+0#e000002&@2| +0#0000000&@71
+|E+0#e000e06&|N|D| +0#0000000&@71
+|c+0#af5f00255&|o|n|s|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&@2| +0#0000000&@71
+|E+0#e000e06&|N|D| +0#0000000&@71
+|c+0#af5f00255&|o|n|s|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&@47
+|.+0#e000002&@2| +0#0000000&@71
+|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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_variables_17.dump b/runtime/syntax/testdir/dumps/vim_variables_17.dump
new file mode 100644
index 0000000..1ba8505
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_variables_17.dump
@@ -0,0 +1,20 @@
+|c+0#af5f00255#ffffff0|o|n|s|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@65
+|c+0#af5f00255&|o|n|s|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b|a|r| @61
+@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
+|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&| |:|l|o|c|k|v|a|r| +0#0000000&@64
+@75
+|l+0#af5f00255&|o|c|k|v|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@63
+|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&@59
+|l+0#af5f00255&|o|c|k|v|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@63
+@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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_variables_18.dump b/runtime/syntax/testdir/dumps/vim_variables_18.dump
new file mode 100644
index 0000000..9a79802
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_variables_18.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+|l+0#af5f00255&|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&@53
+|l+0#af5f00255&|o|c|k|v|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@50
+|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&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@49
+|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&@46
+> @74
+|l+0#af5f00255&|o|c|k|v|a|r|!| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@62
+|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&@58
+|l+0#af5f00255&|o|c|k|v|a|r|!| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@62
+@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
+|l+0#af5f00255&|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&@52
+|l+0#af5f00255&|o|c|k|v|a|r|!| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@49
+|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&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@48
+|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&@45
+@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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_variables_19.dump b/runtime/syntax/testdir/dumps/vim_variables_19.dump
new file mode 100644
index 0000000..dcaa8aa
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_variables_19.dump
@@ -0,0 +1,20 @@
+|l+0#af5f00255#ffffff0|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
+|l+0#af5f00255&|o|c|k|v|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@61
+@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
+>l+0#af5f00255&|o|c|k|v|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@51
+|l+0#af5f00255&|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&@48
+|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&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@47
+|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&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@44
+@75
+|"+0#0000e05&| |:|u|n|l|o|c|k|v|a|r| +0#0000000&@62
+@75
+|u+0#af5f00255&|n|l|o|c|k|v|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@61
+|u+0#af5f00255&|n|l|o|c|k|v|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@57
+|u+0#af5f00255&|n|l|o|c|k|v|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@61
+@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
+|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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_variables_20.dump b/runtime/syntax/testdir/dumps/vim_variables_20.dump
new file mode 100644
index 0000000..4eb79fd
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_variables_20.dump
@@ -0,0 +1,20 @@
+|u+0#af5f00255#ffffff0|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
+|u+0#af5f00255&|n|l|o|c|k|v|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@48
+|u+0#af5f00255&|n|l|o|c|k|v|a|r| +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&@47
+|u+0#af5f00255&|n|l|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&@44
+@75
+>u+0#af5f00255&|n|l|o|c|k|v|a|r|!| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@60
+|u+0#af5f00255&|n|l|o|c|k|v|a|r|!| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@56
+|u+0#af5f00255&|n|l|o|c|k|v|a|r|!| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@60
+@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
+|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&@50
+|u+0#af5f00255&|n|l|o|c|k|v|a|r|!| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@47
+|u+0#af5f00255&|n|l|o|c|k|v|a|r|!| +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&@46
+|u+0#af5f00255&|n|l|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
+|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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_variables_21.dump b/runtime/syntax/testdir/dumps/vim_variables_21.dump
new file mode 100644
index 0000000..36a08af
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_variables_21.dump
@@ -0,0 +1,20 @@
+|u+0#af5f00255#ffffff0|n|l|o|c|k|v|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@59
+@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
+|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&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@49
+>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&@46
+|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| 
diff --git a/runtime/syntax/testdir/input/setup/vim9_block.vim b/runtime/syntax/testdir/input/setup/vim9_block.vim
new file mode 100644
index 0000000..9223fa8
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim9_block.vim
@@ -0,0 +1 @@
+highlight link vimVar Identifier
diff --git a/runtime/syntax/testdir/input/setup/vim9_comment.vim b/runtime/syntax/testdir/input/setup/vim9_comment.vim
new file mode 100644
index 0000000..9223fa8
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim9_comment.vim
@@ -0,0 +1 @@
+highlight link vimVar Identifier
diff --git a/runtime/syntax/testdir/input/setup/vim9_def_variables.vim b/runtime/syntax/testdir/input/setup/vim9_def_variables.vim
new file mode 100644
index 0000000..9223fa8
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim9_def_variables.vim
@@ -0,0 +1 @@
+highlight link vimVar Identifier
diff --git a/runtime/syntax/testdir/input/setup/vim9_ex_class_fold.vim b/runtime/syntax/testdir/input/setup/vim9_ex_class_fold.vim
new file mode 100644
index 0000000..9223fa8
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim9_ex_class_fold.vim
@@ -0,0 +1 @@
+highlight link vimVar Identifier
diff --git a/runtime/syntax/testdir/input/setup/vim9_ex_commands.vim b/runtime/syntax/testdir/input/setup/vim9_ex_commands.vim
new file mode 100644
index 0000000..9223fa8
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim9_ex_commands.vim
@@ -0,0 +1 @@
+highlight link vimVar Identifier
diff --git a/runtime/syntax/testdir/input/setup/vim9_ex_for.vim b/runtime/syntax/testdir/input/setup/vim9_ex_for.vim
new file mode 100644
index 0000000..9223fa8
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim9_ex_for.vim
@@ -0,0 +1 @@
+highlight link vimVar Identifier
diff --git a/runtime/syntax/testdir/input/setup/vim9_ex_function_def_tail_comment_errors.vim b/runtime/syntax/testdir/input/setup/vim9_ex_function_def_tail_comment_errors.vim
new file mode 100644
index 0000000..c039651
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim9_ex_function_def_tail_comment_errors.vim
@@ -0,0 +1,2 @@
+highlight link vimVar Identifier
+highlight link vimFuncScope Special
diff --git a/runtime/syntax/testdir/input/setup/vim9_ex_function_def_tail_comments.vim b/runtime/syntax/testdir/input/setup/vim9_ex_function_def_tail_comments.vim
new file mode 100644
index 0000000..c039651
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim9_ex_function_def_tail_comments.vim
@@ -0,0 +1,2 @@
+highlight link vimVar Identifier
+highlight link vimFuncScope Special
diff --git a/runtime/syntax/testdir/input/setup/vim9_ex_interface_fold.vim b/runtime/syntax/testdir/input/setup/vim9_ex_interface_fold.vim
new file mode 100644
index 0000000..9223fa8
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim9_ex_interface_fold.vim
@@ -0,0 +1 @@
+highlight link vimVar Identifier
diff --git a/runtime/syntax/testdir/input/setup/vim9_ex_loadkeymap.vim b/runtime/syntax/testdir/input/setup/vim9_ex_loadkeymap.vim
new file mode 100644
index 0000000..9223fa8
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim9_ex_loadkeymap.vim
@@ -0,0 +1 @@
+highlight link vimVar Identifier
diff --git a/runtime/syntax/testdir/input/setup/vim9_expr.vim b/runtime/syntax/testdir/input/setup/vim9_expr.vim
new file mode 100644
index 0000000..9223fa8
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim9_expr.vim
@@ -0,0 +1 @@
+highlight link vimVar Identifier
diff --git a/runtime/syntax/testdir/input/setup/vim9_lambda.vim b/runtime/syntax/testdir/input/setup/vim9_lambda.vim
new file mode 100644
index 0000000..9223fa8
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim9_lambda.vim
@@ -0,0 +1 @@
+highlight link vimVar Identifier
diff --git a/runtime/syntax/testdir/input/setup/vim9_legacy_header.vim b/runtime/syntax/testdir/input/setup/vim9_legacy_header.vim
new file mode 100644
index 0000000..9223fa8
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim9_legacy_header.vim
@@ -0,0 +1 @@
+highlight link vimVar Identifier
diff --git a/runtime/syntax/testdir/input/setup/vim9_super_this_keywords.vim b/runtime/syntax/testdir/input/setup/vim9_super_this_keywords.vim
new file mode 100644
index 0000000..9223fa8
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim9_super_this_keywords.vim
@@ -0,0 +1 @@
+highlight link vimVar Identifier
diff --git a/runtime/syntax/testdir/input/setup/vim9_super_this_keywords2.vim b/runtime/syntax/testdir/input/setup/vim9_super_this_keywords2.vim
new file mode 100644
index 0000000..9223fa8
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim9_super_this_keywords2.vim
@@ -0,0 +1 @@
+highlight link vimVar Identifier
diff --git a/runtime/syntax/testdir/input/setup/vim9_super_this_keywords3.vim b/runtime/syntax/testdir/input/setup/vim9_super_this_keywords3.vim
new file mode 100644
index 0000000..9223fa8
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim9_super_this_keywords3.vim
@@ -0,0 +1 @@
+highlight link vimVar Identifier
diff --git a/runtime/syntax/testdir/input/setup/vim9_variables.vim b/runtime/syntax/testdir/input/setup/vim9_variables.vim
new file mode 100644
index 0000000..9223fa8
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim9_variables.vim
@@ -0,0 +1 @@
+highlight link vimVar Identifier
diff --git a/runtime/syntax/testdir/input/setup/vim_comment.vim b/runtime/syntax/testdir/input/setup/vim_comment.vim
new file mode 100644
index 0000000..9223fa8
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim_comment.vim
@@ -0,0 +1 @@
+highlight link vimVar Identifier
diff --git a/runtime/syntax/testdir/input/setup/vim_ex_call.vim b/runtime/syntax/testdir/input/setup/vim_ex_call.vim
new file mode 100644
index 0000000..9223fa8
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim_ex_call.vim
@@ -0,0 +1 @@
+highlight link vimVar Identifier
diff --git a/runtime/syntax/testdir/input/setup/vim_ex_command.vim b/runtime/syntax/testdir/input/setup/vim_ex_command.vim
new file mode 100644
index 0000000..9223fa8
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim_ex_command.vim
@@ -0,0 +1 @@
+highlight link vimVar Identifier
diff --git a/runtime/syntax/testdir/input/setup/vim_ex_commands.vim b/runtime/syntax/testdir/input/setup/vim_ex_commands.vim
new file mode 100644
index 0000000..9223fa8
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim_ex_commands.vim
@@ -0,0 +1 @@
+highlight link vimVar Identifier
diff --git a/runtime/syntax/testdir/input/setup/vim_ex_def.vim b/runtime/syntax/testdir/input/setup/vim_ex_def.vim
new file mode 100644
index 0000000..c039651
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim_ex_def.vim
@@ -0,0 +1,2 @@
+highlight link vimVar Identifier
+highlight link vimFuncScope Special
diff --git a/runtime/syntax/testdir/input/setup/vim_ex_def_fold.vim b/runtime/syntax/testdir/input/setup/vim_ex_def_fold.vim
new file mode 100644
index 0000000..c039651
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim_ex_def_fold.vim
@@ -0,0 +1,2 @@
+highlight link vimVar Identifier
+highlight link vimFuncScope Special
diff --git a/runtime/syntax/testdir/input/setup/vim_ex_def_nested.vim b/runtime/syntax/testdir/input/setup/vim_ex_def_nested.vim
new file mode 100644
index 0000000..9223fa8
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim_ex_def_nested.vim
@@ -0,0 +1 @@
+highlight link vimVar Identifier
diff --git a/runtime/syntax/testdir/input/setup/vim_ex_def_nested_fold.vim b/runtime/syntax/testdir/input/setup/vim_ex_def_nested_fold.vim
new file mode 100644
index 0000000..9223fa8
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim_ex_def_nested_fold.vim
@@ -0,0 +1 @@
+highlight link vimVar Identifier
diff --git a/runtime/syntax/testdir/input/setup/vim_ex_echo.vim b/runtime/syntax/testdir/input/setup/vim_ex_echo.vim
new file mode 100644
index 0000000..9223fa8
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim_ex_echo.vim
@@ -0,0 +1 @@
+highlight link vimVar Identifier
diff --git a/runtime/syntax/testdir/input/setup/vim_ex_execute.vim b/runtime/syntax/testdir/input/setup/vim_ex_execute.vim
new file mode 100644
index 0000000..9223fa8
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim_ex_execute.vim
@@ -0,0 +1 @@
+highlight link vimVar Identifier
diff --git a/runtime/syntax/testdir/input/setup/vim_ex_for.vim b/runtime/syntax/testdir/input/setup/vim_ex_for.vim
new file mode 100644
index 0000000..9223fa8
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim_ex_for.vim
@@ -0,0 +1 @@
+highlight link vimVar Identifier
diff --git a/runtime/syntax/testdir/input/setup/vim_ex_function.vim b/runtime/syntax/testdir/input/setup/vim_ex_function.vim
new file mode 100644
index 0000000..c039651
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim_ex_function.vim
@@ -0,0 +1,2 @@
+highlight link vimVar Identifier
+highlight link vimFuncScope Special
diff --git a/runtime/syntax/testdir/input/setup/vim_ex_function_def_tail_comment_errors.vim b/runtime/syntax/testdir/input/setup/vim_ex_function_def_tail_comment_errors.vim
new file mode 100644
index 0000000..c039651
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim_ex_function_def_tail_comment_errors.vim
@@ -0,0 +1,2 @@
+highlight link vimVar Identifier
+highlight link vimFuncScope Special
diff --git a/runtime/syntax/testdir/input/setup/vim_ex_function_def_tail_comments.vim b/runtime/syntax/testdir/input/setup/vim_ex_function_def_tail_comments.vim
new file mode 100644
index 0000000..c039651
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim_ex_function_def_tail_comments.vim
@@ -0,0 +1,2 @@
+highlight link vimVar Identifier
+highlight link vimFuncScope Special
diff --git a/runtime/syntax/testdir/input/setup/vim_ex_function_fold.vim b/runtime/syntax/testdir/input/setup/vim_ex_function_fold.vim
new file mode 100644
index 0000000..c039651
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim_ex_function_fold.vim
@@ -0,0 +1,2 @@
+highlight link vimVar Identifier
+highlight link vimFuncScope Special
diff --git a/runtime/syntax/testdir/input/setup/vim_ex_let_heredoc.vim b/runtime/syntax/testdir/input/setup/vim_ex_let_heredoc.vim
new file mode 100644
index 0000000..9223fa8
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim_ex_let_heredoc.vim
@@ -0,0 +1 @@
+highlight link vimVar Identifier
diff --git a/runtime/syntax/testdir/input/setup/vim_ex_loadkeymap.vim b/runtime/syntax/testdir/input/setup/vim_ex_loadkeymap.vim
new file mode 100644
index 0000000..9223fa8
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim_ex_loadkeymap.vim
@@ -0,0 +1 @@
+highlight link vimVar Identifier
diff --git a/runtime/syntax/testdir/input/setup/vim_ex_loadkeymap_after_bar.vim b/runtime/syntax/testdir/input/setup/vim_ex_loadkeymap_after_bar.vim
new file mode 100644
index 0000000..9223fa8
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim_ex_loadkeymap_after_bar.vim
@@ -0,0 +1 @@
+highlight link vimVar Identifier
diff --git a/runtime/syntax/testdir/input/setup/vim_ex_loadkeymap_after_colon.vim b/runtime/syntax/testdir/input/setup/vim_ex_loadkeymap_after_colon.vim
new file mode 100644
index 0000000..9223fa8
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim_ex_loadkeymap_after_colon.vim
@@ -0,0 +1 @@
+highlight link vimVar Identifier
diff --git a/runtime/syntax/testdir/input/setup/vim_ex_map.vim b/runtime/syntax/testdir/input/setup/vim_ex_map.vim
new file mode 100644
index 0000000..9223fa8
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim_ex_map.vim
@@ -0,0 +1 @@
+highlight link vimVar Identifier
diff --git a/runtime/syntax/testdir/input/setup/vim_ex_match.vim b/runtime/syntax/testdir/input/setup/vim_ex_match.vim
new file mode 100644
index 0000000..9223fa8
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim_ex_match.vim
@@ -0,0 +1 @@
+highlight link vimVar Identifier
diff --git a/runtime/syntax/testdir/input/setup/vim_ex_menu.vim b/runtime/syntax/testdir/input/setup/vim_ex_menu.vim
new file mode 100644
index 0000000..9223fa8
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim_ex_menu.vim
@@ -0,0 +1 @@
+highlight link vimVar Identifier
diff --git a/runtime/syntax/testdir/input/setup/vim_ex_substitute.vim b/runtime/syntax/testdir/input/setup/vim_ex_substitute.vim
new file mode 100644
index 0000000..9223fa8
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim_ex_substitute.vim
@@ -0,0 +1 @@
+highlight link vimVar Identifier
diff --git a/runtime/syntax/testdir/input/setup/vim_ex_syntax.vim b/runtime/syntax/testdir/input/setup/vim_ex_syntax.vim
new file mode 100644
index 0000000..c039651
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim_ex_syntax.vim
@@ -0,0 +1,2 @@
+highlight link vimVar Identifier
+highlight link vimFuncScope Special
diff --git a/runtime/syntax/testdir/input/setup/vim_expr.vim b/runtime/syntax/testdir/input/setup/vim_expr.vim
new file mode 100644
index 0000000..9223fa8
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim_expr.vim
@@ -0,0 +1 @@
+highlight link vimVar Identifier
diff --git a/runtime/syntax/testdir/input/setup/vim_function_variables.vim b/runtime/syntax/testdir/input/setup/vim_function_variables.vim
new file mode 100644
index 0000000..9223fa8
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim_function_variables.vim
@@ -0,0 +1 @@
+highlight link vimVar Identifier
diff --git a/runtime/syntax/testdir/input/setup/vim_lambda.vim b/runtime/syntax/testdir/input/setup/vim_lambda.vim
new file mode 100644
index 0000000..9223fa8
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim_lambda.vim
@@ -0,0 +1 @@
+highlight link vimVar Identifier
diff --git a/runtime/syntax/testdir/input/setup/vim_line_continuation.vim b/runtime/syntax/testdir/input/setup/vim_line_continuation.vim
new file mode 100644
index 0000000..9223fa8
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim_line_continuation.vim
@@ -0,0 +1 @@
+highlight link vimVar Identifier
diff --git a/runtime/syntax/testdir/input/setup/vim_object_methods.vim b/runtime/syntax/testdir/input/setup/vim_object_methods.vim
new file mode 100644
index 0000000..9223fa8
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim_object_methods.vim
@@ -0,0 +1 @@
+highlight link vimVar Identifier
diff --git a/runtime/syntax/testdir/input/setup/vim_variables.vim b/runtime/syntax/testdir/input/setup/vim_variables.vim
new file mode 100644
index 0000000..9223fa8
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/vim_variables.vim
@@ -0,0 +1 @@
+highlight link vimVar Identifier
diff --git a/runtime/syntax/testdir/input/vim9_block.vim b/runtime/syntax/testdir/input/vim9_block.vim
new file mode 100644
index 0000000..3880f97
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim9_block.vim
@@ -0,0 +1,33 @@
+vim9script
+
+# Vim9 blocks
+
+
+{
+  var foo = 42
+}
+
+{
+  {
+    {
+      {
+	var foo = 42
+      }
+      var foo = 42
+    }
+    var foo = 42
+  }
+  var foo = 42
+}
+
+def Foo()
+  {
+    var foo = 42
+    echo foo
+  }
+enddef
+
+echo "foo" | {
+  var foo = 42
+}
+
diff --git a/runtime/syntax/testdir/input/vim9_def_variables.vim b/runtime/syntax/testdir/input/vim9_def_variables.vim
new file mode 100644
index 0000000..94ef810
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim9_def_variables.vim
@@ -0,0 +1,200 @@
+vim9script
+
+# Vim9 function variable highlighting
+
+def Foo()
+  # Declarations
+
+  var foo = expr
+
+  b:foo = expr
+  g:foo = expr
+  t:foo = expr
+  w:foo = expr
+
+  v:foo = expr
+
+  $FOO = expr
+
+  var [foo, bar] = expr
+  var [foo,
+	\ bar] = expr
+  var [$foo, $bar] = expr
+  var [$foo,
+	\ $bar] = expr
+
+  var [foo, bar; baz] = expr
+  var [foo,
+	\ bar;
+	\ baz] = expr
+  var [$foo, $bar; $baz] = expr
+  var [$foo,
+	\ $bar;
+	\ $baz] = expr
+
+  var foo =<< END
+...
+END
+  var foo =<< trim END
+  ...
+  END
+  var foo =<< eval END
+...
+END
+  var foo =<< trim eval END
+  ...
+  END
+  var foo =<< eval trim END
+    ...
+  END
+
+  # Assignments
+
+  foo = expr
+
+  foo[0] = expr
+
+  foo[1:2] = expr
+  foo[:2] = expr
+  foo[1:] = expr
+  foo[:] = expr
+
+  foo += expr
+  foo -= expr
+  foo *= expr
+  foo /= expr
+  foo %= expr
+  foo ..= expr
+
+  b:foo = expr
+  g:foo = expr
+  t:foo = expr
+  w:foo = expr
+
+  b:foo += expr
+  g:foo += expr
+  t:foo += expr
+  w:foo += expr
+
+  b:foo -= expr
+  g:foo -= expr
+  t:foo -= expr
+  w:foo -= expr
+
+  b:foo *= expr
+  g:foo *= expr
+  t:foo *= expr
+  w:foo *= expr
+
+  b:foo /= expr
+  g:foo /= expr
+  t:foo /= expr
+  w:foo /= expr
+
+  b:foo %= expr
+  g:foo %= expr
+  t:foo %= expr
+  w:foo %= expr
+
+  b:foo ..= expr
+  g:foo ..= expr
+  t:foo ..= expr
+  w:foo ..= expr
+
+  $FOO = expr
+  $FOO ..= expr
+
+  @f = expr
+  @f ..= expr
+
+  &foo = expr
+
+  &t_k1 = "\<Esc>[234;"
+
+  &foo ..= expr
+
+  &foo += expr
+  &foo -= expr
+
+  &l:foo = expr
+
+  &l:foo ..= expr
+  &l:foo += expr
+  &l:foo -= expr
+
+  &g:foo = expr
+
+  &g:foo ..= expr
+  &g:foo += expr
+  &g:foo -= expr
+
+  [foo, bar] = expr
+  [foo,
+	\ bar] = expr
+  [v:foo, v:bar] = expr
+  [v:foo,
+	\ v:bar] = expr
+  [&foo, &bar] = expr
+  [&foo,
+	\ &bar] = expr
+  [$foo, $bar] = expr
+  [$foo,
+	\  $bar] = expr
+  [@a, @b] = expr
+  [@a,
+	\  @a] = expr
+
+  [foo, bar] ..= expr
+  [foo, bar] += expr
+  [foo, bar] -= expr
+  [foo, bar] *= expr
+  [foo, bar] /= expr
+  [foo, bar] %= expr
+
+  [foo, bar; baz] = expr
+  [foo,
+	\ bar;
+	\ baz] = expr
+  [v:foo, v:bar; v:baz] = expr
+  [v:foo,
+	\ v:bar;
+	\ v:baz] = expr
+  [$foo, $bar; $baz] = expr
+  [$foo,
+	\ $bar;
+	\ $baz] = expr
+  [&foo, &bar; &baz] = expr
+  [&foo,
+	\ &bar;
+	\ &baz] = expr
+  [@a, @b; @c] = expr
+  [@a,
+	\ @b;
+	\ @c] = expr
+
+  foo =<< END
+...
+END
+  foo =<< trim END
+  ...
+  END
+  foo =<< eval END
+...
+END
+  foo =<< trim eval END
+  ...
+  END
+  foo =<< eval trim END
+    ...
+  END
+
+  # :for
+
+  for foo in expr
+  endfor
+
+  for [foo, bar] in expr
+  endfor
+enddef
+
+
diff --git a/runtime/syntax/testdir/input/vim9_ex_commands.vim b/runtime/syntax/testdir/input/vim9_ex_commands.vim
index e08cec3..1773e21 100644
--- a/runtime/syntax/testdir/input/vim9_ex_commands.vim
+++ b/runtime/syntax/testdir/input/vim9_ex_commands.vim
@@ -203,7 +203,7 @@
 :folddoclosed
 :folddoopen
 :foldopen
-:for
+:for foo in bar | endfor
 :function
 :global/.../
 :goto
@@ -785,7 +785,7 @@
 Foo() | folddoclosed
 Foo() | folddoopen
 Foo() | foldopen
-Foo() | for
+Foo() | for foo in bar | endfor
 Foo() | function
 Foo() | global/.../
 Foo() | goto
diff --git a/runtime/syntax/testdir/input/vim9_ex_for.vim b/runtime/syntax/testdir/input/vim9_ex_for.vim
new file mode 100644
index 0000000..e3c3033
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim9_ex_for.vim
@@ -0,0 +1,68 @@
+vim9script
+
+# Vim9 :for command
+
+
+# :for {var} in {object}
+
+var expr = [42]
+
+for foo in expr
+  echo foo
+endfor
+
+for foo in expr # comment
+  echo foo
+endfor
+
+for foo in
+      # comment
+      expr
+  echo foo
+endfor
+
+for foo in expr | echo foo | endfor
+
+for foo in [42]
+  echo foo
+endfor
+
+for foo in [42] | echo foo | endfor
+
+for foo: number in [42] | echo foo | endfor
+
+echo "foo" | for foo in expr
+  echo foo
+endfor
+
+
+# :for [{var1}, {var2}, ...] in {listlist}
+
+var expr2 = [[42, 83]]
+
+for [foo, bar] in expr2
+  echo foo bar
+endfor
+
+for [foo, bar] in expr2 # comment
+  echo foo bar
+endfor
+
+for [foo, bar] in
+      # comment
+      expr2
+  echo foo bar
+endfor
+
+for [foo, bar] in expr2 | echo foo bar | endfor
+
+for [foo, bar] in [[42, 83]]
+  echo foo bar
+endfor
+
+for [foo, bar] in [[42, 83]] | echo foo bar | endfor
+
+for [foo: number, bar: number] in expr2
+  echo foo bar
+endfor
+
diff --git a/runtime/syntax/testdir/input/vim9_lambda.vim b/runtime/syntax/testdir/input/vim9_lambda.vim
new file mode 100644
index 0000000..4340eb0
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim9_lambda.vim
@@ -0,0 +1,116 @@
+vim9script
+
+# Vim 9 lambda expressions
+
+var Foo: func
+var expr = 0
+
+# without return type
+Foo = () => expr
+Foo = (_) => expr
+Foo = (x) => expr
+
+Foo = (...y) => expr
+Foo = (_, ...y) => expr
+Foo = (x, ...y) => expr
+
+Foo = (x, y) => expr
+
+Foo = (_: number) => expr
+Foo = (x: number) => expr
+
+Foo = (...y: list<number>) => expr
+Foo = (_: number, ...y: list<number>) => expr
+Foo = (x: number, ...y: list<number>) => expr
+
+Foo = (x: number, y: number) => expr
+
+# with return type
+Foo = (): number => expr
+Foo = (_): number => expr
+Foo = (x): number => expr
+
+Foo = (...y): number => expr
+Foo = (_, ...y): number => expr
+Foo = (x, ...y): number => expr
+
+Foo = (x, y): number => expr
+
+Foo = (_: number): number => expr
+Foo = (x: number): number => expr
+
+Foo = (...y: list<number>): number => expr
+Foo = (_: number, ...y: list<number>): number => expr
+Foo = (x: number, ...y: list<number>): number => expr
+
+Foo = (x: number, y: number): number => expr
+
+
+# post operator comments
+
+Foo = () => # comment
+  expr
+Foo = () =>
+  # comment
+  expr
+Foo = () =>
+
+  # comment
+
+  expr
+
+
+# line continuations
+
+Foo = (x: string,
+      \ y: number,
+      \ z: bool): number => expr
+# FIXME
+Foo = (x: string,
+      \ y: number,
+      \ z: bool): number
+      \ => expr
+
+
+# funcref call
+
+echo (() => 42)()
+echo ((x: string): number => 42)("foo")
+
+
+# :help vim9-lambda
+
+var list = [1, 2, 3]
+echo filter(list, (k, v) =>
+		v > 0)
+echo filter(list, (k,
+      \	v)
+      \	=> v > 0)
+
+var Callback = (..._) => 'anything'
+echo Callback(1, 2, 3)  # displays "anything"
+
+var Lambda = (arg) => {
+	g:was_called = 'yes'
+	return expr
+    }
+
+var count = 0
+var timer = timer_start(500, (_) => {
+	 count += 1
+	 echom 'Handler called ' .. count
+     }, {repeat: 3})
+
+var dict = {}
+var d = mapnew(dict, (k, v): string => {
+     return 'value'
+   })
+
+
+# Issue #15970 (vim9: Restore and extend the recognition of Enum body items)
+
+def Op(): func(func(number, number): number): func(number, Digit): number
+    return (F: func(number, number): number) =>
+	(x: number, y: Digit): number => F(x, y.value)
+enddef ####################### ^ vimCommand?
+
diff --git a/runtime/syntax/testdir/input/vim9_super_this_keywords.vim b/runtime/syntax/testdir/input/vim9_super_this_keywords.vim
new file mode 100644
index 0000000..0370dd7
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim9_super_this_keywords.vim
@@ -0,0 +1,87 @@
+vim9script
+
+# Vim9 this and super keywords
+# VIM_TEST_SETUP hi link vim9This Todo
+# VIM_TEST_SETUP hi link vim9Super Todo
+
+def Echo(...args: list<any>)
+  echo args
+enddef
+
+class Foo
+  var x: number = 42
+  var y: number = this.x + 41
+  var z: number = this.x + this.y
+
+  def new()
+    echo this.x this.y this.z
+  enddef
+
+  def newXY(this.x, this.y, this.z)
+  enddef
+
+  def Def1(arg = this.x)
+    this.y = arg
+    this.z += arg
+  enddef
+
+  def Def2(arg = (this.x + this.y + this.z))
+    Echo(this, this.x, this.y, this.z)
+    this->Echo(this.x, this.y, this.z)
+  enddef
+
+  def Def3(): Foo
+    return this
+  enddef
+
+  def Def4(arg: Foo = this): Foo
+    return arg
+  enddef
+endclass
+
+class Bar extends Foo
+  def Def1()
+    super.Def1()
+  enddef
+
+  def Def2()
+    var a = super.x * super.y * super.z
+    var b = [super.x, super.y, super.z]
+    var c = {super: super.x, this: super.y, true: super.z}
+    var d = {super: c, this: c}
+    echo c.super
+    echo c.this
+    echo d.super.this
+    echo d.this.super
+    echo a b c
+  enddef
+
+  def Def5()
+    var a = this.x * this.y
+    var b = (this.x * this.y)
+    var c = [this.x, this.y]
+    var d = {super: this.x, this: this.y}
+    echo a b c d
+  enddef
+
+  def Def6()
+    var x = this#super#x
+    var y = super#this#y
+    this#super#Func()
+    super#this#Func()
+  enddef
+
+  def Def7(arg = super.Def3())
+    echo arg
+  enddef
+
+  def Def8(): number
+    var F = () => this.x
+    var G = () => super.x
+    return F() + G()
+  enddef
+endclass
+
+defcompile Foo
+defcompile Bar
+
diff --git a/runtime/syntax/testdir/input/vim9_super_this_keywords2.vim b/runtime/syntax/testdir/input/vim9_super_this_keywords2.vim
new file mode 100644
index 0000000..326eaf0
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim9_super_this_keywords2.vim
@@ -0,0 +1,63 @@
+vim9script
+
+# VIM_TEST_SETUP hi link vim9Super Todo
+# VIM_TEST_SETUP hi link vim9This Todo
+# See: https://github.com/vim/vim/pull/16476#issuecomment-2638191110
+
+
+class A
+  var _value: any
+
+  def new(value: any)
+    this._BaseInit(value)
+  enddef
+
+  def _BaseInit(value: any)
+    this._value = value
+  enddef
+
+  def Value(): any
+    return this._value
+  enddef
+endclass
+
+class B extends A
+  def new(value: number)
+    super._BaseInit(value)
+  enddef
+
+  def Value(): number
+    echo this
+    return super._value
+  enddef
+endclass
+
+class C extends A
+  #### E117
+  #   def new(value: string)
+  #       super(value)
+  #   enddef
+
+  #### E1034
+  #   def new(super._value)
+  #   enddef
+
+  #### E1034
+  #   def new(value: string)
+  #       super._value = value
+  #   enddef
+
+  #### E1356
+  #   def Super(): A
+  #       return super
+  #   enddef
+
+  def This(): C
+    return this
+  enddef
+endclass
+
+echo 1 == A.new(1).Value()
+echo 2 == B.new(2).Value()
+defcompile C
+
diff --git a/runtime/syntax/testdir/input/vim9_super_this_keywords3.vim b/runtime/syntax/testdir/input/vim9_super_this_keywords3.vim
new file mode 100644
index 0000000..fb1f610
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim9_super_this_keywords3.vim
@@ -0,0 +1,27 @@
+vim9script
+
+# VIM_TEST_SETUP hi link vim9Super Todo
+# VIM_TEST_SETUP hi link vim9This Todo
+# See: https://github.com/vim/vim/pull/16476#issuecomment-2635119478
+
+
+class A
+    const _value: number
+
+    def new(this._value)
+    enddef
+
+    def K(): func(any): number
+        return ((_: any) => this._value)
+    enddef
+endclass
+
+class B extends A
+    def K(): func(any): number
+        return ((_: any) => super._value)
+    enddef
+endclass
+
+echo 1 == A.new(1).K()(null)
+echo 2 == B.new(2).K()(null)
+
diff --git a/runtime/syntax/testdir/input/vim9_variables.vim b/runtime/syntax/testdir/input/vim9_variables.vim
new file mode 100644
index 0000000..88dfb58
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim9_variables.vim
@@ -0,0 +1,197 @@
+vim9script
+
+# Vim9 variable highlighting
+
+# Declarations
+
+var foo = expr
+ 
+b:foo = expr
+g:foo = expr
+t:foo = expr
+w:foo = expr
+
+v:foo = expr
+
+$FOO = expr
+ 
+var [foo, bar] = expr
+var [foo,
+      \ bar] = expr
+var [$foo, $bar] = expr
+var [$foo,
+      \ $bar] = expr
+
+var [foo, bar; baz] = expr
+var [foo,
+      \ bar;
+      \ baz] = expr
+var [$foo, $bar; $baz] = expr
+var [$foo,
+      \ $bar;
+      \ $baz] = expr
+
+var foo =<< END
+...
+END
+var foo =<< trim END
+...
+END
+var foo =<< eval END
+...
+END
+var foo =<< trim eval END
+...
+END
+var foo =<< eval trim END
+...
+END
+
+# Assignments
+
+foo = expr
+
+foo[0] = expr
+
+foo[1:2] = expr
+foo[:2] = expr
+foo[1:] = expr
+foo[:] = expr
+
+foo += expr
+foo -= expr
+foo *= expr
+foo /= expr
+foo %= expr
+foo ..= expr
+
+b:foo = expr
+g:foo = expr
+t:foo = expr
+w:foo = expr
+
+b:foo += expr
+g:foo += expr
+t:foo += expr
+w:foo += expr
+
+b:foo -= expr
+g:foo -= expr
+t:foo -= expr
+w:foo -= expr
+
+b:foo *= expr
+g:foo *= expr
+t:foo *= expr
+w:foo *= expr
+
+b:foo /= expr
+g:foo /= expr
+t:foo /= expr
+w:foo /= expr
+
+b:foo %= expr
+g:foo %= expr
+t:foo %= expr
+w:foo %= expr
+
+b:foo ..= expr
+g:foo ..= expr
+t:foo ..= expr
+w:foo ..= expr
+
+$FOO = expr
+$FOO ..= expr
+ 
+@f = expr
+@f ..= expr
+ 
+&foo = expr
+ 
+&t_k1 = "\<Esc>[234;"
+
+&foo ..= expr
+
+&foo += expr
+&foo -= expr
+
+&l:foo = expr
+
+&l:foo ..= expr
+&l:foo += expr
+&l:foo -= expr
+
+&g:foo = expr
+
+&g:foo ..= expr
+&g:foo += expr
+&g:foo -= expr
+ 
+[foo, bar] = expr
+[foo,
+      \ bar] = expr
+[v:foo, v:bar] = expr
+[v:foo,
+      \ v:bar] = expr
+[&foo, &bar] = expr
+[&foo,
+      \ &bar] = expr
+[$foo, $bar] = expr
+[$foo,
+      \  $bar] = expr
+[@a, @b] = expr
+[@a,
+      \  @a] = expr
+
+[foo, bar] ..= expr
+[foo, bar] += expr
+[foo, bar] -= expr
+[foo, bar] *= expr
+[foo, bar] /= expr
+[foo, bar] %= expr
+
+[foo, bar; baz] = expr
+[foo,
+      \ bar;
+      \ baz] = expr
+[v:foo, v:bar; v:baz] = expr
+[v:foo,
+      \ v:bar;
+      \ v:baz] = expr
+[$foo, $bar; $baz] = expr
+[$foo,
+      \ $bar;
+      \ $baz] = expr
+[&foo, &bar; &baz] = expr
+[&foo,
+      \ &bar;
+      \ &baz] = expr
+[@a, @b; @c] = expr
+[@a,
+      \ @b;
+      \ @c] = expr
+
+foo =<< END
+...
+END
+foo =<< trim END
+...
+END
+foo =<< eval END
+...
+END
+foo =<< trim eval END
+...
+END
+foo =<< eval trim END
+...
+END
+
+# :for
+
+for foo in expr
+endfor
+
+for [foo, bar] in expr
+endfor
+
diff --git a/runtime/syntax/testdir/input/vim_ex_commands.vim b/runtime/syntax/testdir/input/vim_ex_commands.vim
index 7a58365..9fa1458 100644
--- a/runtime/syntax/testdir/input/vim_ex_commands.vim
+++ b/runtime/syntax/testdir/input/vim_ex_commands.vim
@@ -198,7 +198,7 @@
 :folddoopen
 :folddoclosed
 :foldopen
-:for
+:for foo in bar | endfor
 :function
 :global/.../
 :goto
@@ -783,7 +783,7 @@
 call Foo() | folddoopen
 call Foo() | folddoclosed
 call Foo() | foldopen
-call Foo() | for
+call Foo() | for foo in bar | endfor
 call Foo() | function
 call Foo() | global/.../
 call Foo() | goto
diff --git a/runtime/syntax/testdir/input/vim_ex_def_nested.vim b/runtime/syntax/testdir/input/vim_ex_def_nested.vim
index 008c415..3b9302d 100644
--- a/runtime/syntax/testdir/input/vim_ex_def_nested.vim
+++ b/runtime/syntax/testdir/input/vim_ex_def_nested.vim
@@ -1,5 +1,6 @@
 vim9script
 # Vim9 :def command (nested)
+# VIM_TEST_SETUP hi link vim9This Todo
 
 class Test
     const name: string
diff --git a/runtime/syntax/testdir/input/vim_ex_def_nested_fold.vim b/runtime/syntax/testdir/input/vim_ex_def_nested_fold.vim
index 601f553..f213107 100644
--- a/runtime/syntax/testdir/input/vim_ex_def_nested_fold.vim
+++ b/runtime/syntax/testdir/input/vim_ex_def_nested_fold.vim
@@ -1,7 +1,9 @@
 vim9script
+
 # Vim9 :def command (nested)
 # VIM_TEST_SETUP let g:vimsyn_folding = 'f'
 # VIM_TEST_SETUP setl fdc=2 fdm=syntax
+# VIM_TEST_SETUP hi link vim9This Todo
 
 class Test
     const name: string
diff --git a/runtime/syntax/testdir/input/vim_ex_for.vim b/runtime/syntax/testdir/input/vim_ex_for.vim
new file mode 100644
index 0000000..d72f6d6
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim_ex_for.vim
@@ -0,0 +1,60 @@
+" Vim :for command
+
+
+" :for {var} in {object}
+
+let expr = [42]
+
+for foo in expr
+  echo foo
+endfor
+
+for foo in expr " comment
+  echo foo
+endfor
+
+for foo in
+      "\ comment
+      \ expr
+  echo foo
+endfor
+
+for foo in expr | echo foo | endfor
+
+for foo in [42]
+  echo foo
+endfor
+
+for foo in [42] | echo foo | endfor
+
+echo "foo" | for foo in expr
+  echo foo
+endfor
+
+
+" :for [{var1}, {var2}, ...] in {listlist}
+
+let expr = [[42, 83]]
+
+for [foo, bar] in expr
+  echo foo bar
+endfor
+
+for [foo, bar] in expr " comment
+  echo foo bar
+endfor
+
+for [foo, bar] in
+      "\ comment
+      \ expr
+  echo foo bar
+endfor
+
+for [foo, bar] in expr | echo foo bar | endfor
+
+for [foo, bar] in [[42, 83]]
+  echo foo bar
+endfor
+
+for [foo, bar] in [[42, 83]] | echo foo bar | endfor
+
diff --git a/runtime/syntax/testdir/input/vim_expr.vim b/runtime/syntax/testdir/input/vim_expr.vim
index 569d4ce..ddaf519 100644
--- a/runtime/syntax/testdir/input/vim_expr.vim
+++ b/runtime/syntax/testdir/input/vim_expr.vim
@@ -85,6 +85,21 @@
 echo 0zFF00.ED01.5DAF
 echo 0zFF.00.ED.01.5D.AF
 
+" List
+
+echo []
+echo [42]
+echo [[11, 12], [21, 22], [31, 32]]
+echo [1,
+      \ 2,
+      \ 3,
+      \ 4
+      \]
+echo [1, 'two', 1 + 2, "fo" .. "ur"]
+
+" Issue #5830 (Incorrect syntax highlighting in Vim script when omitting space in list of string)
+let l = ['a','b','c']
+
 " Operators
 
 " Ternary
@@ -169,9 +184,26 @@
 echo expr is?    expr
 echo expr isnot? expr
 
-" Unreported issue (incorrectly matches as "echo vimNumber *vimCommand* vimNumber")
+" Unreported issue ("is" incorrectly matches as "echo vimNumber *vimCommand* vimNumber")
 echo 42 is 42
 
+" Line continuation
+let foo = foo +
+      \
+      "\ comment
+      \
+      "\ comment
+      \ bar +
+      \ "baz"
+
+let foo = foo +
+      "\ comment
+      \
+      "\ comment
+      \
+      \ bar +
+      \ "baz"
+
 
 " Issue #16221 (vimString becomes vimVar when preceded by !)
 let bar = !'g:bar'->exists()
diff --git a/runtime/syntax/testdir/input/vim_function_variables.vim b/runtime/syntax/testdir/input/vim_function_variables.vim
new file mode 100644
index 0000000..9a9d4f9
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim_function_variables.vim
@@ -0,0 +1,384 @@
+" Vim function variable highlighting
+
+function Foo()
+  " :let
+
+  let foo = expr
+
+  let foo[0] = expr
+
+  let foo[1:2] = expr
+  let foo[:2] = expr
+  let foo[1:] = expr
+  let foo[:] = expr
+
+  let foo["key"] = expr
+  let foo['key'] = expr
+
+  let foo += expr
+  let foo -= expr
+  let foo *= expr
+  let foo /= expr
+  let foo %= expr
+  let foo .= expr
+  let foo ..= expr
+
+  let b:foo = expr
+
+  let b:foo[0] = expr
+
+  let b:foo[1:2] = expr
+  let b:foo[:2] = expr
+  let b:foo[1:] = expr
+  let b:foo[:] = expr
+
+  let bfoo["key"] = expr
+  let bfoo['key'] = expr
+
+  let b:foo += expr
+  let b:foo -= expr
+  let b:foo *= expr
+  let b:foo /= expr
+  let b:foo %= expr
+  let b:foo .= expr
+  let b:foo ..= expr
+
+  let g:foo = expr
+
+  let g:foo[0] = expr
+
+  let g:foo[1:2] = expr
+  let g:foo[:2] = expr
+  let g:foo[1:] = expr
+  let g:foo[:] = expr
+
+  let g:foo["key"] = expr
+  let g:foo['key'] = expr
+
+  let g:foo += expr
+  let g:foo -= expr
+  let g:foo *= expr
+  let g:foo /= expr
+  let g:foo %= expr
+  let g:foo .= expr
+  let g:foo ..= expr
+
+  let s:foo = expr
+
+  let s:foo[0] = expr
+
+  let s:foo[1:2] = expr
+  let s:foo[:2] = expr
+  let s:foo[1:] = expr
+  let s:foo[:] = expr
+
+  let s:foo["key"] = expr
+  let s:foo['key'] = expr
+
+  let s:foo += expr
+  let s:foo -= expr
+  let s:foo *= expr
+  let s:foo /= expr
+  let s:foo %= expr
+  let s:foo .= expr
+  let s:foo ..= expr
+
+  let t:foo = expr
+
+  let t:foo[0] = expr
+
+  let t:foo[1:2] = expr
+  let t:foo[:2] = expr
+  let t:foo[1:] = expr
+  let t:foo[:] = expr
+
+  let t:foo["key"] = expr
+  let t:foo['key'] = expr
+
+  let t:foo += expr
+  let t:foo -= expr
+  let t:foo *= expr
+  let t:foo /= expr
+  let t:foo %= expr
+  let t:foo .= expr
+  let t:foo ..= expr
+
+  let v:foo = expr
+
+  let v:foo[0] = expr
+
+  let v:foo[1:2] = expr
+  let v:foo[:2] = expr
+  let v:foo[1:] = expr
+  let v:foo[:] = expr
+
+  let v:foo["key"] = expr
+  let v:foo['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 w:foo = expr
+
+  let w:foo[0] = expr
+
+  let w:foo[1:2] = expr
+  let w:foo[:2] = expr
+  let w:foo[1:] = expr
+  let w:foo[:] = expr
+
+  let w:foo["key"] = expr
+  let w:foo['key'] = expr
+
+  let w:foo += expr
+  let w:foo -= expr
+  let w:foo *= expr
+  let w:foo /= expr
+  let w:foo %= expr
+  let w:foo .= expr
+  let w:foo ..= expr
+
+  let $FOO = expr
+  let $FOO .= expr
+  let $FOO ..= expr
+
+  let @f = expr
+  let @f .= expr
+  let @f ..= expr
+
+  let &foo = expr
+
+  let &t_k1 = "\<Esc>[234;"
+
+  let &foo .= expr
+  let &foo ..= expr
+  let &foo += expr
+  let &foo -= expr
+
+  let &l:foo = expr
+
+  let &l:foo .= expr
+  let &l:foo ..= expr
+  let &l:foo += expr
+  let &l:foo -= expr
+
+  let &g:foo = expr
+
+  let &g:foo .= expr
+  let &g:foo ..= expr
+  let &g:foo += expr
+  let &g:foo -= 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 [$foo, $bar] = expr
+  let [$foo,
+	\  $bar] = expr
+  let [@a, @b] = expr
+  let [@a,
+	\  @b] = expr
+
+  let [foo, bar] .= expr
+  let [foo, bar] ..= expr
+  let [foo, bar] += expr
+  let [foo, bar] -= expr
+
+  let [foo, bar; baz] = expr
+  let [foo,
+	\ bar;
+	\ baz] = expr
+  let [v:foo, v:bar; v:baz] = expr
+  let [v:foo,
+	\ v:bar;
+	\ v:baz] = expr
+  let [$foo, $bar; $baz] = expr
+  let [$foo,
+	\ $bar;
+	\ $baz] = expr
+  let [&foo, &bar; &baz] = expr
+  let [&foo,
+	\ &bar;
+	\ &baz] = expr
+  let [@a, @b; @c] = expr
+  let [@a,
+	\ @b;
+	\ @c] = expr
+
+  let foo =<< END
+...
+END
+  let foo =<< trim END
+  ...
+  END
+  let foo =<< eval END
+...
+END
+  let foo =<< trim eval END
+  ...
+  END
+  let foo =<< eval trim END
+    ...
+  END
+
+  " :let list values
+
+  let foo
+  let foo bar
+  let foo
+	"\ comment
+	\ bar
+
+  let foo " comment
+  let foo "\ comment
+  let foo | echo "Foo"
+  let foo bar " comment
+  let foo bar | echo "Foo"
+  let foo bar "\ comment
+
+  " :unlet
+
+  unlet foo
+  unlet foo bar
+  unlet foo
+	"\ comment
+	\ bar
+
+  unlet! foo
+  unlet! foo bar
+  unlet! foo
+	"\ comment
+	\ bar
+
+  unlet $FOO
+  unlet! $FOO
+
+  unlet list[3]
+  unlet list[3:]
+  unlet dict['two']
+  unlet dict.two
+
+  unlet foo " comment
+  unlet foo "\ comment
+  unlet foo | echo "Foo"
+  unlet foo bar " comment
+  unlet foo bar "\ comment
+  unlet foo bar | echo "Foo"
+
+  " :const
+
+  const foo = expr
+
+  const [foo, bar] = expr
+
+  const [foo, bar; baz] = expr
+
+  const foo =<< END
+...
+END
+  const foo =<< trim END
+  ...
+  END
+  const foo =<< eval END
+...
+END
+  const foo =<< trim eval END
+  ...
+  END
+  const foo =<< eval trim END
+    ...
+  END
+
+  const foo
+  const foo bar
+
+  " :for
+
+  for foo in expr
+  endfor
+
+  for [foo, bar] in expr
+  endfor
+
+  " :lockvar
+
+  lockvar foo
+  lockvar foo bar
+  lockvar foo
+	"\ comment
+	\ bar
+
+  lockvar foo " comment
+  lockvar foo | echo "Foo"
+  lockvar foo bar " comment
+  lockvar foo bar | echo "Foo"
+
+  lockvar! foo
+  lockvar! foo bar
+  lockvar! foo
+	"\ comment
+	\ bar
+
+  lockvar! foo " comment
+  lockvar! foo | echo "Foo"
+  lockvar! foo bar " comment
+  lockvar! foo bar | echo "Foo"
+
+  lockvar 2 foo
+  lockvar 2 foo bar
+  lockvar 2 foo
+	"\ comment
+	\ bar
+
+  lockvar 2 foo " comment
+  lockvar 2 foo | echo "Foo"
+  lockvar 2 foo bar " comment
+  lockvar 2 foo bar | echo "Foo"
+
+  " :unlockvar
+
+  unlockvar foo
+  unlockvar foo bar
+  unlockvar foo
+	"\ comment
+	\ bar
+
+  unlockvar foo " comment
+  unlockvar foo | echo "Foo"
+  unlockvar foo bar " comment
+  unlockvar foo bar | echo "Foo"
+
+  unlockvar! foo
+  unlockvar! foo bar
+  unlockvar! foo
+	"\ comment
+	\ bar
+
+  unlockvar! foo " comment
+  unlockvar! foo | echo "Foo"
+  unlockvar! foo bar " comment
+  unlockvar! foo bar | echo "Foo"
+
+  unlockvar 2 foo
+  unlockvar 2 foo bar
+  unlockvar 2 foo
+	"\ comment
+	\ bar
+
+  unlockvar 2 foo " comment
+  unlockvar 2 foo | echo "Foo"
+  unlockvar 2 foo bar " comment
+  unlockvar 2 foo bar | echo "Foo"
+endfunction
+
diff --git a/runtime/syntax/testdir/input/vim_lambda.vim b/runtime/syntax/testdir/input/vim_lambda.vim
new file mode 100644
index 0000000..73a221b
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim_lambda.vim
@@ -0,0 +1,120 @@
+" Vim lambda expressions
+
+
+let expr = 42
+
+let Foo = {-> expr}
+let Foo = {_ -> expr}
+let Foo = {... -> expr}
+let Foo = {x -> expr}
+let Foo = {x, _ -> expr}
+let Foo = {x, ... -> expr}
+let Foo = {x, y -> expr}
+
+
+" line continuations
+
+let Foo = {->
+      "\ comment
+      \ expr
+      \ }
+let Foo = {_ ->
+      "\ comment
+      \ expr
+      \ }
+let Foo = {... ->
+      "\ comment
+      \ expr
+      \ }
+let Foo = {x ->
+      \ expr
+      "\ comment
+      \ }
+let Foo = {x, y ->
+      "\ comment
+      \ expr
+      \ }
+
+let Foo = {
+      \ ->
+      "\ comment
+      \ expr
+      \ }
+let Foo = {x
+      \ ->
+      "\ comment
+      \ expr
+      \ }
+let Foo = {x, y
+      \ ->
+      "\ comment
+      \ expr
+      \ }
+
+let Foo = {x,
+      \ y,
+      \ z -> expr}
+
+let Foo = {
+      \ x,
+      \ y,
+      \ z
+      \ ->
+      "\ comment
+      \ expr
+      \ }
+
+let Foo = {-> [
+      \ 42,
+      \ 83
+      \]}
+
+let Foo = {-> {
+      \ 'a': 42,
+      \ 'b': 83
+      \}}
+
+let Foo = {-> #{
+      \ a: 42,
+      \ b: 83
+      \}}
+
+let Foo = {-> {->[
+      \ 42,
+      \ 83
+      \]}}
+
+let Foo = {-> {-> {
+      \ 'a': 42,
+      \ 'b': 83
+      \}}}
+
+let Foo = {-> {-> #{
+      \ a: 42,
+      \ b: 83
+      \}}}
+
+" :help lambda
+
+:let F = {arg1, arg2 -> arg1 - arg2}
+:echo F(5, 2)
+
+:let F = {-> 'error function'}
+:echo F('ignored')
+
+:function Foo(arg)
+:  let i = 3
+:  return {x -> x + i - a:arg}
+:endfunction
+:let Bar = Foo(4)
+:echo Bar(6)
+
+:echo map([1, 2, 3], {idx, val -> val + 1})
+" [2, 3, 4]  
+
+:echo sort([3,7,2,1,4], {a, b -> a - b})
+" [1, 2, 3, 4, 7]
+:let timer = timer_start(500,
+		\ {-> execute("echo 'Handler called'", "")},
+		\ {'repeat': 3})
+
diff --git a/runtime/syntax/testdir/input/vim_object_methods.vim b/runtime/syntax/testdir/input/vim_object_methods.vim
index d22c7f2..11d01a6 100644
--- a/runtime/syntax/testdir/input/vim_object_methods.vim
+++ b/runtime/syntax/testdir/input/vim_object_methods.vim
@@ -1,5 +1,7 @@
 vim9script
-# VIM_TEST_SETUP hi link vimMethodName Todo
+
+# VIM_TEST_SETUP hi link vim9MethodName Special
+# VIM_TEST_SETUP hi link vim9This Todo
 
 
 # Vim |builtin-object-methods| and namesake builtin functions.
diff --git a/runtime/syntax/testdir/input/vim_variables.vim b/runtime/syntax/testdir/input/vim_variables.vim
index 6f77da9..af02fa8 100644
--- a/runtime/syntax/testdir/input/vim_variables.vim
+++ b/runtime/syntax/testdir/input/vim_variables.vim
@@ -11,6 +11,9 @@
 let foo[1:] = expr
 let foo[:] = expr
 
+let foo["key"] = expr
+let foo['key'] = expr
+
 let foo += expr
 let foo -= expr
 let foo *= expr
@@ -19,38 +22,175 @@
 let foo .= expr
 let foo ..= expr
 
+let b:foo = expr
+
+let b:foo[0] = expr
+
+let b:foo[1:2] = expr
+let b:foo[:2] = expr
+let b:foo[1:] = expr
+let b:foo[:] = expr
+
+let bfoo["key"] = expr
+let bfoo['key'] = expr
+
+let b:foo += expr
+let b:foo -= expr
+let b:foo *= expr
+let b:foo /= expr
+let b:foo %= expr
+let b:foo .= expr
+let b:foo ..= expr
+
+let g:foo = expr
+
+let g:foo[0] = expr
+
+let g:foo[1:2] = expr
+let g:foo[:2] = expr
+let g:foo[1:] = expr
+let g:foo[:] = expr
+
+let g:foo["key"] = expr
+let g:foo['key'] = expr
+
+let g:foo += expr
+let g:foo -= expr
+let g:foo *= expr
+let g:foo /= expr
+let g:foo %= expr
+let g:foo .= expr
+let g:foo ..= expr
+
+let s:foo = expr
+
+let s:foo[0] = expr
+
+let s:foo[1:2] = expr
+let s:foo[:2] = expr
+let s:foo[1:] = expr
+let s:foo[:] = expr
+
+let s:foo["key"] = expr
+let s:foo['key'] = expr
+
+let s:foo += expr
+let s:foo -= expr
+let s:foo *= expr
+let s:foo /= expr
+let s:foo %= expr
+let s:foo .= expr
+let s:foo ..= expr
+
+let t:foo = expr
+
+let t:foo[0] = expr
+
+let t:foo[1:2] = expr
+let t:foo[:2] = expr
+let t:foo[1:] = expr
+let t:foo[:] = expr
+
+let t:foo["key"] = expr
+let t:foo['key'] = expr
+
+let t:foo += expr
+let t:foo -= expr
+let t:foo *= expr
+let t:foo /= expr
+let t:foo %= expr
+let t:foo .= expr
+let t:foo ..= expr
+
+let v:foo = expr
+
+let v:foo[0] = expr
+
+let v:foo[1:2] = expr
+let v:foo[:2] = expr
+let v:foo[1:] = expr
+let v:foo[:] = expr
+
+let v:foo["key"] = expr
+let v:foo['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 w:foo = expr
+
+let w:foo[0] = expr
+
+let w:foo[1:2] = expr
+let w:foo[:2] = expr
+let w:foo[1:] = expr
+let w:foo[:] = expr
+
+let w:foo["key"] = expr
+let w:foo['key'] = expr
+
+let w:foo += expr
+let w:foo -= expr
+let w:foo *= expr
+let w:foo /= expr
+let w:foo %= expr
+let w:foo .= expr
+let w:foo ..= expr
+
 let $FOO = expr
 let $FOO .= expr
+let $FOO ..= expr
 
 let @f = expr
 let @f .= expr
+let @f ..= expr
 
 let &foo = expr
 
 let &t_k1 = "\<Esc>[234;"
 
 let &foo .= expr
-
+let &foo ..= expr
 let &foo += expr
 let &foo -= expr
 
 let &l:foo = expr
 
 let &l:foo .= expr
+let &l:foo ..= expr
 let &l:foo += expr
 let &l:foo -= expr
 
 let &g:foo = expr
 
 let &g:foo .= expr
+let &g:foo ..= expr
 let &g:foo += expr
 let &g:foo -= 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 [$foo, $bar] = expr
+let [$foo,
+      \  $bar] = expr
+let [@a, @b] = expr
+let [@a,
+      \  @b] = expr
 
 let [foo, bar] .= expr
+let [foo, bar] ..= expr
 let [foo, bar] += expr
 let [foo, bar] -= expr
 
@@ -58,10 +198,22 @@
 let [foo,
       \ bar;
       \ baz] = expr
-
-let [foo, bar; baz] .= expr
-let [foo, bar; baz] += expr
-let [foo, bar; baz] -= expr
+let [v:foo, v:bar; v:baz] = expr
+let [v:foo,
+      \ v:bar;
+      \ v:baz] = expr
+let [$foo, $bar; $baz] = expr
+let [$foo,
+      \ $bar;
+      \ $baz] = expr
+let [&foo, &bar; &baz] = expr
+let [&foo,
+      \ &bar;
+      \ &baz] = expr
+let [@a, @b; @c] = expr
+let [@a,
+      \ @b;
+      \ @c] = expr
 
 let foo =<< END
 ...
@@ -79,19 +231,33 @@
 ...
 END
 
+" :let list values
+
 let foo
 let foo bar
+let foo
+      "\ comment
+      \ bar
+
+let foo " comment
+let foo "\ comment
+let foo | echo "Foo"
+let foo bar " comment
+let foo bar | echo "Foo"
+let foo bar "\ comment
 
 " :unlet
 
 unlet foo
 unlet foo bar
 unlet foo
+      "\ comment
       \ bar
 
 unlet! foo
 unlet! foo bar
 unlet! foo
+      "\ comment
       \ bar
 
 unlet $FOO
@@ -102,6 +268,13 @@
 unlet dict['two']
 unlet dict.two
 
+unlet foo " comment
+unlet foo "\ comment
+unlet foo | echo "Foo"
+unlet foo bar " comment
+unlet foo bar "\ comment
+unlet foo bar | echo "Foo"
+
 " :const
 
 const foo = expr
@@ -136,3 +309,74 @@
 
 for [foo, bar] in expr
 endfor
+
+" :lockvar
+
+lockvar foo
+lockvar foo bar
+lockvar foo
+      "\ comment
+      \ bar
+
+lockvar foo " comment
+lockvar foo | echo "Foo"
+lockvar foo bar " comment
+lockvar foo bar | echo "Foo"
+
+lockvar! foo
+lockvar! foo bar
+lockvar! foo
+      "\ comment
+      \ bar
+
+lockvar! foo " comment
+lockvar! foo | echo "Foo"
+lockvar! foo bar " comment
+lockvar! foo bar | echo "Foo"
+
+lockvar 2 foo
+lockvar 2 foo bar
+lockvar 2 foo
+      "\ comment
+      \ bar
+
+lockvar 2 foo " comment
+lockvar 2 foo | echo "Foo"
+lockvar 2 foo bar " comment
+lockvar 2 foo bar | echo "Foo"
+
+" :unlockvar
+
+unlockvar foo
+unlockvar foo bar
+unlockvar foo
+      "\ comment
+      \ bar
+
+unlockvar foo " comment
+unlockvar foo | echo "Foo"
+unlockvar foo bar " comment
+unlockvar foo bar | echo "Foo"
+
+unlockvar! foo
+unlockvar! foo bar
+unlockvar! foo
+      "\ comment
+      \ bar
+
+unlockvar! foo " comment
+unlockvar! foo | echo "Foo"
+unlockvar! foo bar " comment
+unlockvar! foo bar | echo "Foo"
+
+unlockvar 2 foo
+unlockvar 2 foo bar
+unlockvar 2 foo
+      "\ comment
+      \ bar
+
+unlockvar 2 foo " comment
+unlockvar 2 foo | echo "Foo"
+unlockvar 2 foo bar " comment
+unlockvar 2 foo bar | echo "Foo"
+
diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim
index a33adf9..854e3e0 100644
--- a/runtime/syntax/vim.vim
+++ b/runtime/syntax/vim.vim
@@ -230,32 +230,51 @@
 " Numbers {{{2
 " =======
 syn case ignore
-syn match	vimNumber	'\<\d\+\%(\.\d\+\%(e[+-]\=\d\+\)\=\)\='	skipwhite nextgroup=vimGlobal,vimSubst1,@vimComment
-syn match	vimNumber	'\<0b[01]\+'			skipwhite nextgroup=vimGlobal,vimSubst1,@vimComment
-syn match	vimNumber	'\<0o\=\o\+'			skipwhite nextgroup=vimGlobal,vimSubst1,@vimComment
-syn match	vimNumber	'\<0x\x\+'			skipwhite nextgroup=vimGlobal,vimSubst1,@vimComment
+syn match	vimNumber	'\<\d\+'			skipwhite nextgroup=vimGlobal,vimSubst1,@vimComment,vimSubscript
+syn match	vimNumber	'\<\d\+\.\d\+\%(e[+-]\=\d\+\)\='		skipwhite nextgroup=vimGlobal,vimSubst1,@vimComment
+syn match	vimNumber	'\<0b[01]\+'			skipwhite nextgroup=vimGlobal,vimSubst1,@vimComment,vimSubscript
+syn match	vimNumber	'\<0o\=\o\+'			skipwhite nextgroup=vimGlobal,vimSubst1,@vimComment,vimSubscript
+syn match	vimNumber	'\<0x\x\+'			skipwhite nextgroup=vimGlobal,vimSubst1,@vimComment,vimSubscript
 syn match	vimNumber	'\<0z\>'			skipwhite nextgroup=vimGlobal,vimSubst1,@vimComment
-syn match	vimNumber	'\<0z\%(\x\x\)\+\%(\.\%(\x\x\)\+\)*'	skipwhite nextgroup=vimGlobal,vimSubst1,@vimComment
+syn match	vimNumber	'\<0z\%(\x\x\)\+\%(\.\%(\x\x\)\+\)*'	skipwhite nextgroup=vimGlobal,vimSubst1,@vimComment,vimSubscript
 syn match	vimNumber	'\%(^\|\A\)\zs#\x\{6}'		skipwhite nextgroup=vimGlobal,vimSubst1,@vimComment
 syn case match
 
 " All vimCommands are contained by vimIsCommand. {{{2
-syn cluster vimCmdList	contains=vimAbb,vimAddress,vimAutoCmd,vimAugroup,vimBehave,vimCall,vimCatch,vimConst,vimDebuggreedy,vimDef,vimDefFold,vimDelcommand,@vimEcho,vimEnddef,vimEndfunction,vimExecute,vimIsCommand,vimExtCmd,vimFor,vimFunction,vimFuncFold,vimGlobal,vimHighlight,vimLet,vimLoadkeymap,vimMap,vimMark,vimMatch,vimNotFunc,vimNormal,vimSet,vimSleep,vimSyntax,vimThrow,vimUnlet,vimUnmap,vimUserCmd,vimMenu,vimMenutranslate,@vim9CmdList
+syn cluster vimCmdList	contains=vimAbb,vimAddress,vimAutoCmd,vimAugroup,vimBehave,vimCall,vimCatch,vimConst,vimDebuggreedy,vimDef,vimDefFold,vimDelcommand,@vimEcho,vimEnddef,vimEndfunction,vimExecute,vimIsCommand,vimExtCmd,vimFor,vimFunction,vimFuncFold,vimGlobal,vimHighlight,vimLet,vimLoadkeymap,vimLockvar,vimMap,vimMark,vimMatch,vimNotFunc,vimNormal,vimSet,vimSleep,vimSyntax,vimThrow,vimUnlet,vimUnlockvar,vimUnmap,vimUserCmd,vimMenu,vimMenutranslate,@vim9CmdList
 syn cluster vim9CmdList	contains=vim9Abstract,vim9Class,vim9Const,vim9Enum,vim9Export,vim9Final,vim9For,vim9Interface,vim9Type,vim9Var
 syn match vimCmdSep	"[:|]\+"	skipwhite nextgroup=@vimCmdList,vimSubst1
 syn match vimCount	contained	"\d\+"
 syn match vimIsCommand	"\<\%(\h\w*\|[23]mat\%[ch]\)\>"	 nextgroup=vimBang contains=vimCommand
 syn match vimBang	      contained	"!"
-syn match vimVar	      contained	"\<\h[a-zA-Z0-9#_]*\>"
-syn match vimVar		"\<[bwglstav]:\h[a-zA-Z0-9#_]*\>"
-syn match vimVar	      	"\s\zs&\%([lg]:\)\=\a\+\>"
-syn match vimVar		"\s\zs&t_\S[a-zA-Z0-9]\>"
-syn match vimVar        	"\s\zs&t_k;"
-syn match vimFBVar      contained   "\<[bwglstav]:\h[a-zA-Z0-9#_]*\>"
-syn keyword vimCommand  contained	in
 
-syn cluster vimExprList	contains=vimEnvvar,vimFunc,vimNumber,vimOper,vimOperParen,vimLetRegister,vimString,vimVar,@vim9ExprList
-syn cluster vim9ExprList	contains=vim9Boolean,vim9Null
+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 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
+syn cluster vimSpecialVar	contains=vimEnvvar,vimLetRegister,vimOptionVar,vimVimVar
+
+Vim9 syn match vim9LhsVariable	"\s\=\h[a-zA-Z0-9#_]*\ze\s\+[-+/*%]\=="
+Vim9 syn match vim9LhsVariable	"\s\=\h[a-zA-Z0-9#_]*\ze\s\+\.\.="
+Vim9 syn match vim9LhsVariable	"\s\=\h[a-zA-Z0-9#_]*\ze\s\+=<<"
+Vim9 syn match vim9LhsVariable	"\s\=\h[a-zA-Z0-9#_]*\ze\s*->"		contains=vim9Super,vim9This
+Vim9 syn match vim9LhsVariable	"\s\=\h[a-zA-Z0-9#_]*\ze\["	nextgroup=vimSubscript
+Vim9 syn match vim9LhsVariable	"\s\=\h[a-zA-Z0-9#_]*\ze\."	nextgroup=vimOper contains=vim9Super,vim9This
+
+Vim9 syn match vim9LhsVariableList	"\[\_[^]]\+]\ze\s\+[-+/*%]\=="	contains=vimVar,@vimSpecialVar
+Vim9 syn match vim9LhsVariableList	"\[\_[^]]\+]\ze\s\+\.\.="	contains=vimVar,@vimSpecialVar
+
+Vim9 syn match vim9LhsRegister	"@["0-9\-a-zA-Z#=*+_/]\ze\s\+\%(\.\.\)\=="
+
+syn cluster vimExprList	contains=@vimSpecialVar,vimFunc,vimNumber,vimOper,vimOperParen,vimLambda,vimString,vimVar,@vim9ExprList
+syn cluster vim9ExprList	contains=vim9Boolean,vim9LambdaParams,vim9Null
 
 " Insertions And Appends: insert append {{{2
 "   (buftype != nofile test avoids having append, change, insert show up in the command window)
@@ -306,7 +325,7 @@
 
 " Augroup : vimAugroupError removed because long augroups caused sync'ing problems. {{{2
 " ======= : Trade-off: Increasing synclines with slower editing vs augroup END error checking.
-syn cluster vimAugroupList	contains=@vimCmdList,vimFilter,vimFunc,vimLineComment,vimSpecFile,vimOper,vimNumber,vimOperParen,@vimComment,vimString,vimSubst,vimRegister,vimCmplxRepeat,vimNotation,vimCtrlChar,vimFuncVar,vimContinue
+syn cluster vimAugroupList	contains=@vimCmdList,vimFilter,vimFunc,vimLineComment,vimSpecFile,vimOper,vimNumber,vimOperParen,@vimComment,vimString,vimSubst,vimRegister,vimCmplxRepeat,vimNotation,vimCtrlChar,vimContinue
 syn match   vimAugroup	"\<aug\%[roup]\>" contains=vimAugroupKey,vimAugroupBang skipwhite nextgroup=vimAugroupBang,vimAutoCmdGroup
 if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'a'
   syn region  vimAugroup  fold	start="\<aug\%[roup]\>\ze\s\+\%([eE][nN][dD]\)\@!\S\+" matchgroup=vimAugroupKey end="\<aug\%[roup]\>\ze\s\+[eE][nN][dD]\>" contains=vimAutoCmd,@vimAugroupList,vimAugroupkey skipwhite nextgroup=vimAugroupEnd
@@ -324,31 +343,64 @@
 
 " Operators: {{{2
 " =========
-syn cluster	vimOperGroup	contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimRegister,@vimContinue,vim9Comment,vimVar,vimBoolean,vimNull
-syn match	vimOper	"\a\@<!!"			skipwhite nextgroup=vimString,vimSpecFile
-syn match	vimOper	"||\|&&\|[-+*/%.]"		skipwhite nextgroup=vimString,vimSpecFile
-syn match	vimOper	"?"			skipwhite nextgroup=@vimExprList
+syn cluster	vimOperGroup	contains=@vimSpecialVar,vimFunc,vimLambda,vimOper,vimOperParen,vimNumber,vimString,vimRegister,@vimContinue,vim9Comment,vimVar,vimBoolean,vim9LambdaParams,vimNull
+syn match	vimOper	"\a\@<!!"			skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList,vimSpecFile
+syn match	vimOper	"||\|&&\|[-+*/%.]"		skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList,vimSpecFile
+syn match	vimOper	"?"			skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList
 " distinguish ternary : from ex-colon
-syn match	vimOper	"\s\@1<=:\ze\s\|\s\@1<=:$"		skipwhite nextgroup=@vimExprList
-syn match	vimOper	"??"			skipwhite nextgroup=@vimExprList
-syn match	vimOper	"="			skipwhite nextgroup=vimString,vimSpecFile
-syn match	vimOper	"\%#=1\%(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\)[?#]\="	skipwhite nextgroup=vimString,vimSpecFile
-syn match	vimOper	"\<is\%(not\)\=\>"		skipwhite nextgroup=vimString,vimSpecFile
-syn match	vimOper	"\<is\%(not\)\=[?#]"		skipwhite nextgroup=vimString,vimSpecFile
-syn region	vimOperParen 	matchgroup=vimParenSep	start="(" end=")" contains=@vimOperGroup
-syn region	vimOperParen	matchgroup=vimSep		start="#\={" end="}" contains=@vimOperGroup nextgroup=vimVar,vimFuncVar
+syn match	vimOper	"\s\@1<=:\ze\s\|\s\@1<=:$"		skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList
+syn match	vimOper	"??"			skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList
+syn match	vimOper	"="			skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList,vimSpecFile
+syn match	vimOper	"\%#=1\%(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\)[?#]\="	skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList,vimSpecFile
+syn match	vimOper	"\<is\%(not\)\=\>"		skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList,vimSpecFile
+syn match	vimOper	"\<is\%(not\)\=[?#]"		skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList,vimSpecFile
+syn region	vimOperParen 		matchgroup=vimParenSep start="("    end=")" contains=@vimOperGroup nextgroup=vimSubscript
+syn region	vimOperParen		matchgroup=vimSep	     start="#\={" end="}" contains=@vimOperGroup nextgroup=vimSubscript,vimVar
+syn region	vimOperParen	contained	matchgroup=vimSep	     start="\["	end="]" contains=@vimOperGroup nextgroup=vimSubscript,vimVar
 if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noopererror")
  syn match	vimOperError	")"
 endif
 
+syn match	vimOperContinue		contained	"^\s*\zs\\"	 skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList
+syn match         vimOperContinueComment	contained	'^\s*\zs["#]\\ .*' skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList
+syn cluster	vimOperContinue		contains=vimOperContinue,vimOperContinueComment
+
+" Lambda Expressions: {{{2
+" ==================
+syn match	vimLambdaOperator	contained	"->" skipwhite nextgroup=@vimExprList
+syn region	vimLambda	contained	matchgroup=Delimiter start="{\ze[[:space:][:alnum:]_.,]*->" end="}" end="$" skip=+\s*\n\s*\\\|\s*\n\s*"\\ + contains=@vimContinue,@vimExprList,vimLambdaParams
+syn match	vimLambdaParams	contained	"{\@1<=.\{-}\%(->\)\@=" nextgroup=vimLambdaOperator contains=vimFuncParam
+
+syn match	vim9LambdaOperator    contained	"=>" skipwhite skipempty nextgroup=@vimExprList,vim9LambdaBlock,vim9LambdaOperatorComment
+syn match	vim9LambdaParamsParen contained	"[()]"
+syn region	vim9LambdaParams	    contained
+      \ matchgroup=vim9LambdaParamsParen
+      \ start="(\ze\s*\(\.\.\.\)\=\h\w*[,:]\%(\s\|$\)"
+      \ start="(\ze\s*\n
+        "\ line continuations
+        \\%(\s*\%(#\\ .*\|\\\s*\)\n\)*\s*\\\s*
+        "\ parameter names
+        \\(\.\.\.\)\=\h\w*[,:]\%(\s\|$\)"
+      \ end=")\ze\%(:\s\|\s\+=>\)"
+      \ matchgroup=vimContinue
+      \ end="^\s*\\\ze\s\+=>"
+      \ skipwhite nextgroup=vim9LambdaReturnType,vim9LambdaOperator
+      \ contains=@vim9Continue,vimDefParam,vim9LambdaParamsParen
+syn match	vim9LambdaParams	    contained     "(\s*)\|(\s*\(\.\.\.\)\=\h\w*\s*)\ze\%(:\s\|\s\+=>\)" skipwhite nextgroup=vim9LambdaReturnType,vim9LambdaOperator contains=vimDefParam,vim9LambdaParamsParen
+
+syn region	vim9LambdaReturnType  contained	start=":\s" end="$" end="\ze#" end="\ze=>" skipwhite skipempty nextgroup=vim9LambdaOperator,vim9LamdaOperatorComment contains=vimTypeSep transparent
+syn region	vim9LambdaBlock	    contained	matchgroup=vimSep start="{" end="^\s*\zs}" contains=@vimDefBodyList
+
+syn match	vim9LambdaOperatorComment contained "#.*" skipwhite skipempty nextgroup=@vimExprList,vim9LambdaBlock,vim9LambdaOperatorComment
+
 " Functions: Tag is provided for those who wish to highlight tagged functions {{{2
 " =========
-syn cluster	vimFuncList	contains=vimFuncBang,vimFunctionError,vimFuncKey,vimFuncSID,Tag
-syn cluster	vimDefList	contains=vimFuncBang,vimFunctionError,vimDefKey,vimFuncSID,Tag
+syn cluster	vimFuncList	contains=vimFuncBang,vimFunctionError,vimFuncKey,vimFuncScope,vimFuncSID,Tag
+syn cluster	vimDefList	contains=vimFuncBang,vimFunctionError,vimDefKey,vimFuncScope,vimFuncSID,Tag
 
-syn cluster	vimFuncBodyCommon	contains=@vimCmdList,vimCmplxRepeat,vimContinue,vimCtrlChar,vimDef,vimEnvvar,vimFBVar,vimFunc,vimFunction,vimLetHereDoc,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegister,vimSpecFile,vimString,vimSubst,vimFuncFold,vimDefFold
-syn cluster	vimFuncBodyList	contains=@vimFuncBodyCommon,vimComment,vimLineComment,vimFuncVar,vimInsert,vimConst,vimLet,vimSearch
-syn cluster	vimDefBodyList	contains=@vimFuncBodyCommon,vim9Comment,vim9LineComment,vim9Const,vim9Final,vim9Var,vim9Null,vim9Boolean,vim9For,vim9Search
+syn cluster	vimFuncBodyCommon	contains=@vimCmdList,vimCmplxRepeat,vimContinue,vimCtrlChar,vimDef,vimFBVar,vimFunc,vimFunction,vimLetHereDoc,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegister,vimSpecFile,vimString,vimSubst,vimFuncFold,vimDefFold
+syn cluster	vimFuncBodyList	contains=@vimFuncBodyCommon,vimComment,vimLineComment,vimInsert,vimConst,vimLet,vimSearch
+syn cluster	vimDefBodyList	contains=@vimFuncBodyCommon,vim9Comment,vim9LineComment,vim9Block,vim9Const,vim9Final,vim9Var,vim9Null,vim9Boolean,vim9For,vim9LhsVariable,vim9LhsVariableList,vim9LhsRegister,vim9Search,@vimSpecialVar
 
 syn region	vimFuncPattern	contained		matchgroup=vimOper start="/" end="$" contains=@vimSubstList
 syn match	vimFunction	"\<fu\%[nction]\>"	skipwhite nextgroup=vimCmdSep,vimComment,vimFuncPattern contains=vimFuncKey
@@ -362,7 +414,7 @@
 
 syn match	vimFuncBang	contained	"!"
 syn match	vimFuncSID	contained	"\c<sid>"
-syn match	vimFuncSID	contained	"\<[sg]:"
+syn match	vimFuncScope	contained	"\<[sg]:"
 syn keyword	vimFuncKey	contained	fu[nction]
 syn keyword	vimDefKey	contained	def
 
@@ -385,7 +437,6 @@
  syn region	vimDefFold	start="\<def\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\)\+("	                 end="\<enddef\>"	       contains=vimDef      fold keepend extend transparent
 endif
 
-syn match	vimFuncVar   contained	"a:\%(\K\k*\|\d\+\)\>"
 syn match	vimFuncBlank contained	"\s\+"
 
 " Types: {{{2
@@ -408,12 +459,24 @@
 
 if s:vim9script
   " Methods {{{3
-  syn match	vim9MethodDef		contained	"\<def\>"	skipwhite nextgroup=vim9MethodDefName
+  syn match	vim9MethodDef		contained	"\<def\>"	skipwhite nextgroup=vim9MethodDefName,vim9ConstructorDefName
   syn match	vim9MethodDefName		contained	"\<\h\w*\>"	nextgroup=vim9MethodDefParams contains=@vim9MethodName
   syn region	vim9MethodDefParams	contained
         \ matchgroup=Delimiter start="(" end=")"
         \ skipwhite skipnl nextgroup=vim9MethodDefBody,vimDefComment,vimEnddef,vim9MethodDefReturnType,vimCommentError
         \ contains=vimDefParam,vim9Comment,vimFuncParamEquals
+
+  syn match	vim9ConstructorDefName	contained	"\<new\w*\>"
+        \ nextgroup=vim9ConstructorDefParams
+        \ contains=@vim9MethodName
+  syn match	vim9ConstructorDefParam	contained	"\<\%(this\.\)\=\h\w*\>"
+        \ skipwhite nextgroup=vimParamType,vimFuncParamEquals
+        \ contains=vim9This,vimOper
+  syn region	vim9ConstructorDefParams	contained
+        \ matchgroup=Delimiter start="(" end=")"
+        \ skipwhite skipnl nextgroup=vim9MethodDefBody,vimDefComment,vimEnddef,vimCommentError
+        \ contains=vim9ConstructorDefParam,vim9Comment,vimFuncParamEquals
+
   syn region	vim9MethodDefReturnType	contained
         \ start=":\s" end="$" matchgroup=vim9Comment end="\ze[#"]"
         \ skipwhite skipnl nextgroup=vim9MethodDefBody,vimDefComment,vimCommentError
@@ -429,7 +492,7 @@
   if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimfunctionerror")
     syn match	vim9MethodNameError contained	"\<[a-z0-9]\i\>"
   endif
-  syn match	vim9MethodName	contained	"\<new\i*\>"
+  syn match	vim9MethodName	contained	"\<new\w*\>"
   syn keyword	vim9MethodName	contained	empty len string
 
   syn cluster	vim9MethodName	contains=vim9MethodName,vim9MethodNameError
@@ -454,8 +517,11 @@
   syn keyword	vim9Implements		contained	implements	skipwhite skipnl nextgroup=vim9ImplementedInterface
   syn keyword	vim9Public		contained	public
   syn keyword	vim9Static		contained	static
-  syn keyword	vim9This		contained	this
-  syn keyword	vim9Super		contained	super
+  " FIXME: don't match as dictionary keys, remove when operators are not
+  "        shared between Vim9 and legacy script
+  syn match	vim9This		contained	"\.\@1<!\<this\>:\@!"
+  " super must be folowed by '.'
+  syn match	vim9Super		contained	"\.\@1<!\<super\.\@="
 
   VimFoldc syn region	vim9ClassBody	start="\<class\>" matchgroup=vimCommand end="\<endclass\>" contains=@vim9ClassBodyList transparent
 
@@ -488,15 +554,19 @@
 
   VimFoldi syn region	vim9InterfaceBody	start="\<interface\>" matchgroup=vimCommand end="\<endinterface\>" contains=@vim9InterfaceBodyList transparent
 
-  " type {{{3
+  " Type Aliases {{{3
   syn match	vim9Type		"\<ty\%[pe]\>"	skipwhite nextgroup=vim9TypeAlias,vim9TypeAliasError
   syn match	vim9TypeAlias	 contained	"\<\u\w*\>"	skipwhite nextgroup=vim9TypeEquals
   syn match	vim9TypeEquals	 contained	"="	skipwhite nextgroup=@vimType
   if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_notypealiaserror")
-    syn match	vim9TypeAliasError contained	"\<\U\w*"
+    syn match	vim9TypeAliasError contained	"\<\l\w*\>"	skipwhite nextgroup=vim9TypeEquals
   endif
 endif
 
+" Blocks: {{{2
+" ======
+Vim9 syn region	vim9Block	matchgroup=vimSep start="{" end="^\s*\zs}" contains=@vimDefBodyList
+
 " Keymaps: {{{2
 " =======
 
@@ -563,7 +633,7 @@
 syn match	vimUserCmdAttrAddr	contained	"?"
 syn case match
 
-syn region	vimUserCmdBlock	contained	matchgroup=vimSep start="{" end="}" contains=@vimDefBodyList
+syn region	vimUserCmdBlock	contained	matchgroup=vimSep start="{" end="^\s*\zs}" contains=@vimDefBodyList
 
 syn match	vimDelcommand		"\<delc\%[ommand]\>" skipwhite nextgroup=vimDelcommandAttr
 syn match	vimDelcommandAttr	contained	"-buffer\>"
@@ -610,8 +680,8 @@
 syn region	vimPatRegion	contained transparent matchgroup=vimPatSepR start="\\[z%]\=(" end="\\)"	contains=@vimSubstList oneline
 syn match	vimNotPatSep	contained	"\\\\"
 syn cluster	vimStringGroup	contains=vimEscape,vimEscapeBrace,vimPatSep,vimNotPatSep,vimPatSepErr,vimPatSepZone,@Spell
-syn region	vimString	oneline keepend	matchgroup=vimString start=+[^a-zA-Z>\\@]"+lc=1 skip=+\\\\\|\\"+ matchgroup=vimStringEnd end=+"+	contains=@vimStringGroup extend
-syn region	vimString	oneline	matchgroup=vimString start=+[^a-zA-Z>\\@]'+lc=1 end=+'+ contains=vimQuoteEscape extend
+syn region	vimString	oneline keepend	matchgroup=vimString start=+[^a-zA-Z>\\@]"+lc=1 skip=+\\\\\|\\"+ matchgroup=vimStringEnd end=+"+ nextgroup=vimSubscript contains=@vimStringGroup extend
+syn region	vimString	oneline	matchgroup=vimString start=+[^a-zA-Z>\\@]'+lc=1 end=+'+		       nextgroup=vimSubscript contains=vimQuoteEscape  extend
 "syn region	vimString	oneline	start="\s/\s*\A"lc=1 skip="\\\\\|\\+" end="/"	contains=@vimStringGroup  " see tst45.vim
 syn match	vimString	contained	+"[^"]*\\$+	skipnl nextgroup=vimStringCont
 syn match	vimStringCont	contained	+\(\\\\\|.\)\{-}[^\\]"+
@@ -623,8 +693,8 @@
 syn match	vimEscape	contained	"\\<\*[^>]*>\=>"
 syn match	vimQuoteEscape	contained	"''"
 
-syn region	vimString	oneline matchgroup=vimString start=+$'+ skip=+''+ end=+'+ contains=vimQuoteEscape,@vimStringInterpolation  extend
-syn region	vimString	oneline matchgroup=vimString start=+$"+           end=+"+ contains=@vimStringGroup,@vimStringInterpolation extend
+syn region	vimString	oneline matchgroup=vimString start=+$'+ skip=+''+ end=+'+ nextgroup=vimSubscript contains=vimQuoteEscape,@vimStringInterpolation  extend
+syn region	vimString	oneline matchgroup=vimString start=+$"+           end=+"+ nextgroup=vimSubscript contains=@vimStringGroup,@vimStringInterpolation extend
 syn region	vimStringInterpolationExpr  oneline contained matchgroup=vimSep start=+{+ end=+}+ contains=@vimExprList
 syn match	vimStringInterpolationBrace contained "{{"
 syn match	vimStringInterpolationBrace contained "}}"
@@ -700,13 +770,18 @@
 
 " Variable Declarations: {{{2
 " =====================
-VimL syn keyword	vimLet	let		skipwhite nextgroup=vimVar,vimFuncVar,vimLetRegister,vimVarList
-VimL syn keyword	vimConst	cons[t]		skipwhite nextgroup=vimVar,vimVarList
-syn region	vimVarList	contained	start="\[" end="]" contains=vimVar,@vimContinue
+VimL syn keyword	vimLet	let		skipwhite nextgroup=@vimSpecialVar,vimVar,vimVarList
+VimL syn keyword	vimConst	cons[t]		skipwhite nextgroup=@vimSpecialVar,vimVar,vimVarList
+syn region	vimVarList	contained
+      \ start="\[" end="]"
+      \ contains=@vimContinue,@vimSpecialVar,vimVar
 
-VimL syn keyword	vimUnlet	unl[et]		skipwhite nextgroup=vimUnletBang,vimUnletVars
-syn match	vimUnletBang	contained	"!"	skipwhite nextgroup=vimUnletVars
-syn region	vimUnletVars	contained	start="$\I\|\h" skip="\n\s*\\" end="$" end="|" contains=vimVar,vimEnvvar,vimContinue,vimString,vimNumber
+VimL syn keyword	vimUnlet		unl[et]	skipwhite nextgroup=vimUnletBang,vimUnletVars
+syn match	vimUnletBang	contained	"\a\@1<=!"	skipwhite nextgroup=vimUnletVars
+syn region	vimUnletVars	contained
+      \ start="$\I\|\h" skip=+\n\s*\\\|\n\s*"\\ \|^\s*"\\ + end="$" end="\ze[|"]"
+      \ nextgroup=vimCmdSep,vimComment
+      \ contains=@vimContinue,vimEnvvar,vimVar
 
 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
@@ -718,15 +793,39 @@
 Vim9 syn keyword	vim9Var	var	skipwhite nextgroup=vim9Variable,vim9VariableList
 
 syn match	vim9Variable	contained	"\<\h\w*\>"	skipwhite nextgroup=vimTypeSep,vimLetHereDoc,vimOper
-syn region	vim9VariableList	contained	start="\[" end="]" contains=vim9Variable,@vimContinue
+syn region	vim9VariableList	contained	start="\[" end="]" contains=@vimContinue,@vimSpecialVar,vim9Variable
+
+" Lockvar and Unlockvar: {{{2
+" =====================
+syn keyword	vimLockvar	lockv[ar]	skipwhite nextgroup=vimLockvarBang,vimLockvarDepth,vimLockvarVars
+syn keyword	vimUnlockvar	unlo[ckvar]	skipwhite nextgroup=vimLockvarBang,vimLockvarDepth,vimLockvarVars
+syn match	vimLockvarBang	contained	"\a\@1<=!"	skipwhite nextgroup=vimLockvarVars
+syn match	vimLockvarDepth	contained	"\<[0-3]\>"	skipwhite nextgroup=vimLockvarVars
+syn region	vimLockvarVars	contained
+      \ start="\h" skip=+\n\s*\\\|\n\s*"\\ \|^\s*"\\ + end="$" end="\ze[|"]"
+      \ nextgroup=vimCmdSep,vimComment
+      \ contains=@vimContinue,vimVar
+
+hi def link vimLockvar vimCommand
+hi def link vimUnlockvar vimCommand
+hi def link vimLockvarBang vimBang
+hi def link vimLockvarDepth vimNumber
 
 " For: {{{2
 " ===
-if s:vim9script
-  syn keyword	vim9For	for	skipwhite nextgroup=vim9Variable,vim9VariableList
-else
-  syn keyword	vimFor	for	skipwhite nextgroup=vimVar,vimVarList
-endif
+" handles Vim9 and legacy for now
+syn region	vimFor
+      \ matchgroup=vimCommand
+      \ start="\<for\>" end="\<in\>"
+      \ skipwhite skipnl nextgroup=@vimForInContinue,vim9ForInComment,@vimExprList
+      \ contains=@vimContinue,vimVar,vimVarList,vim9VariableList
+      \ transparent
+
+syn match	vim9ForInComment		contained	"#.*"	skipwhite skipempty nextgroup=vimForInComment,@vimExprList
+
+syn match	vimForInContinue		contained	"^\s*\zs\\"	 skipwhite skipnl nextgroup=@vimForInContinue,@vimExprList
+syn match         vimForInContinueComment	contained	'^\s*\zs["#]\\ .*' skipwhite skipnl nextgroup=@vimForInContinue,@vimExprList
+syn cluster	vimForInContinue		contains=vimForInContinue,vimForInContinueComment
 
 " Abbreviations: {{{2
 " =============
@@ -744,7 +843,7 @@
 syn keyword	vimAutoCmd	au[tocmd]		skipwhite nextgroup=vimAutoCmdBang,vimAutoEventList
 syn keyword	vimAutoCmd	do[autocmd] doautoa[ll]	skipwhite nextgroup=vimAutoEventList
 syn match	vimAutoCmdMod	"\(++\)\=\(once\|nested\)"	skipwhite nextgroup=vimAutoCmdBlock
-syn region	vimAutoCmdBlock	contained	matchgroup=vimSep start="{" end="}" contains=@vimDefBodyList
+syn region	vimAutoCmdBlock	contained	matchgroup=vimSep start="{" end="^\s*\zs}" contains=@vimDefBodyList
 
 " Echo And Execute: -- prefer strings! {{{2
 " ================
@@ -845,8 +944,8 @@
 " User Function Highlighting: {{{2
 " (following Gautam Iyer's suggestion)
 " ==========================
-syn match	vimFunc              	"\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\ze\s*("                	contains=vimFuncEcho,vimFuncName,vimUserFunc,vimExecute
-syn match	vimUserFunc	contained        	"\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\|\<\u[a-zA-Z0-9.]*\>\|\<if\>"	contains=vimNotation,vim9MethodName
+syn match	vimFunc              	"\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\ze\s*("                	skipwhite nextgroup=vimOperParen contains=vimFuncEcho,vimFuncName,vimUserFunc,vimExecute
+syn match	vimUserFunc	contained        	"\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\|\<\u[a-zA-Z0-9.]*\>\|\<if\>"	contains=vimNotation,vim9MethodName,vim9Super,vim9This
 syn keyword	vimFuncEcho	contained      	ec ech echo
 
 syn match	vimMap	"\<map\%(\s\+(\)\@="	skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
@@ -1358,7 +1457,7 @@
  hi def link vimDebuggreedy	vimCommand
  hi def link vimDefComment	vim9Comment
  hi def link vimDefKey	vimCommand
- hi def link vimDefParam vimVar
+ hi def link vimDefParam	vimVar
  hi def link vimDelcommand	vimCommand
  hi def link vimDelcommandAttr	vimUserCmdAttr
  hi def link vimEcho	vimCommand
@@ -1374,6 +1473,8 @@
  hi def link vimFgBgAttrib	vimHiAttrib
  hi def link vimFuncEcho	vimCommand
  hi def link vimFor	vimCommand
+ hi def link vimForInContinue	vimContinue
+ hi def link vimForInContinueComment	vimContinueComment
  hi def link vimFTCmd	vimCommand
  hi def link vimFTOption	vimSynType
  hi def link vimFuncBang	vimBang
@@ -1383,8 +1484,8 @@
  hi def link vimFuncMod	Special
  hi def link vimFuncParam	vimVar
  hi def link vimFuncParamEquals	vimOper
- hi def link vimFuncSID	Special
- hi def link vimFuncVar	Identifier
+ hi def link vimFuncScope	vimVar
+ hi def link vimFuncSID	vimNotation
  hi def link vimGroupAdd	vimSynOption
  hi def link vimGroupName	vimGroup
  hi def link vimGroupRem	vimSynOption
@@ -1413,6 +1514,7 @@
  hi def link vim9KeymapLineComment	vimKeymapLineComment
  hi def link vimKeymapLineComment	vimComment
  hi def link vimKeymapTailComment	vimComment
+ hi def link vimLambdaOperator	vimOper
  hi def link vimLet	vimCommand
  hi def link vimLetHereDoc	vimString
  hi def link vimLetHereDocStart	Special
@@ -1446,7 +1548,11 @@
  hi def link vimNumber	Number
  hi def link vimOperError	Error
  hi def link vimOper	Operator
+ hi def link vimOperContinue	vimContinue
+ hi def link vimOperContinueComment	vimContinueComment
  hi def link vimOption	PreProc
+ hi def link vimOptionVar	Identifier
+ hi def link vimVimVar	Identifier
  hi def link vimParenSep	Delimiter
  hi def link vimPatSepErr	vimError
  hi def link vimPatSepR	vimPatSep
@@ -1529,7 +1635,7 @@
  hi def link vimUserCmdError	Error
  hi def link vimUserCmdKey	vimCommand
  hi def link vimUserFunc	Normal
- hi def link vimVar	Identifier
+ hi def link vimVar	Normal
  hi def link vimWarn	WarningMsg
 
  hi def link vim9Abstract	vimCommand
@@ -1538,6 +1644,7 @@
  hi def link vim9Comment	Comment
  hi def link vim9CommentError	vimError
  hi def link vim9CommentTitle	PreProc
+ hi def link vim9ConstructorDefParam	vimVar
  hi def link vim9Const	vimCommand
  hi def link vim9ContinueComment	vimContinueComment
  hi def link vim9Enum	vimCommand
@@ -1545,9 +1652,15 @@
  hi def link vim9Extends	Keyword
  hi def link vim9Final	vimCommand
  hi def link vim9For	vimCommand
+ hi def link vim9ForInComment	vim9Comment
  hi def link vim9Implements	Keyword
  hi def link vim9AbstractDef	vimCommand
  hi def link vim9Interface	vimCommand
+ hi def link vim9LambdaOperator	vimOper
+ hi def link vim9LambdaOperatorComment	vim9Comment
+ hi def link vim9LambdaParamsParen	vimParenSep
+ hi def link vim9LhsRegister	vimLetRegister
+ hi def link vim9LhsVariable	vimVar
  hi def link vim9LineComment	vimComment
  hi def link vim9MethodDef	vimCommand
  hi def link vim9MethodNameError	vimFunctionError