runtime(vim): Update base-syntax, match Vim9 boolean and null literals in parens

- Match Vim9 boolean and null literals in parenthesised expressions and
  function argument lists.
- Match read-only registers in expressions.

closes: #16622

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 452cec2..ab63de6 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 08
+" Last Change:	   2025 Feb 13
 " Former Maintainer: Charles E. Campbell
 
 " DO NOT CHANGE DIRECTLY.
@@ -260,7 +260,7 @@
 " ====
 syn match vimCall	"\<call\=\>"	skipwhite nextgroup=vimFunc
 
-" Debuggready {{{2
+" Debuggreedy {{{2
 " ===========
 " TODO: special-cased until generalised range/count support is implemented
 syn match	vimDebuggreedy	"\<0\=debugg\%[reedy]\>" contains=vimCount
@@ -305,7 +305,7 @@
 
 " Operators: {{{2
 " =========
-syn cluster	vimOperGroup	contains=@vimSpecialVar,vimFunc,vimLambda,vimOper,vimOperParen,vimNumber,vimString,vimRegister,@vimContinue,vim9Comment,vimVar,vimBoolean,vim9LambdaParams,vimNull
+syn cluster	vimOperGroup	contains=@vimContinue,@vimExprList,vim9Comment
 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
@@ -703,7 +703,7 @@
 syn match	vimRegister	'\<normal\s\+\zs"[a-zA-Z0-9]'
 syn match	vimRegister	'@"'
 syn match	vimPlainRegister contained	'"[a-zA-Z0-9\-:.%#*+=]'
-syn match	vimLetRegister	contained	'@["0-9\-a-zA-Z#=*+_/]'
+syn match	vimLetRegister	contained	'@["0-9\-a-zA-Z:.%#=*+~_/]'
 
 syn match	vimAddress	",\zs[.$]"	skipwhite nextgroup=vimSubst1
 syn match	vimAddress	"%\ze\a"	skipwhite nextgroup=vimString,vimSubst1
diff --git a/runtime/syntax/testdir/dumps/vim9_expr_01.dump b/runtime/syntax/testdir/dumps/vim9_expr_01.dump
index 2eafe8c..597161e 100644
--- a/runtime/syntax/testdir/dumps/vim9_expr_01.dump
+++ b/runtime/syntax/testdir/dumps/vim9_expr_01.dump
@@ -17,4 +17,4 @@
 |e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&|?+0#af5f00255&| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&|:+0#af5f00255&| +0#0000000&|$+0#e000e06&|B|A|R| +0#0000000&@51
 |e+0#af5f00255&|c|h|o| +0#0000000&|T|r|u|e|(+0#e000e06&|)| +0#0000000&|?+0#af5f00255&| +0#0000000&|T|r|u|e|(+0#e000e06&|)| +0#0000000&|:+0#af5f00255&| +0#0000000&|F|a|l|s|e|(+0#e000e06&|)| +0#0000000&@44
 |e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|a| +0#0000000&|?+0#af5f00255&| +0#0000000&|@+0#e000e06&|a| +0#0000000&|:+0#af5f00255&| +0#0000000&|@+0#e000e06&|b| +0#0000000&@57
-@57|1|9|,|1| @9|1|4|%| 
+@57|1|9|,|1| @9|1|3|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_expr_02.dump b/runtime/syntax/testdir/dumps/vim9_expr_02.dump
index f8df58e..4b9842c 100644
--- a/runtime/syntax/testdir/dumps/vim9_expr_02.dump
+++ b/runtime/syntax/testdir/dumps/vim9_expr_02.dump
@@ -1,9 +1,10 @@
 |e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|@+0#e000e06&|a| +0#0000000&|?+0#af5f00255&| +0#0000000&|@+0#e000e06&|a| +0#0000000&|:+0#af5f00255&| +0#0000000&|@+0#e000e06&|b| +0#0000000&@57
+|e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&|t+0#e000002&|r|u|e|)+0#e000e06&| +0#0000000&|?+0#af5f00255&| +0#0000000&|(+0#e000e06&|t+0#e000002&|r|u|e|)+0#e000e06&| +0#0000000&|:+0#af5f00255&| +0#0000000&|(+0#e000e06&|f+0#e000002&|a|l|s|e|)+0#e000e06&| +0#0000000&@44
 |e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&|?+0#af5f00255&| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&|:+0#af5f00255&| +0#0000000&|(+0#e000e06&|0+0#e000002&|)+0#e000e06&| +0#0000000&@54
 @75
 |#+0#0000e05&| |F|a|l|s|y| +0#0000000&@67
-@75
->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
+> @74
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@57
 @75
 |e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|h|e|L|i|s|t| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|'+0#e000002&|l|i|s|t| |i|s| |e|m|p|t|y|'| +0#0000000&@43
 |e+0#af5f00255&|c|h|o| +0#0000000&|G|e|t|N|a|m|e|(+0#e000e06&|)| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|'+0#e000002&|u|n|k|n|o|w|n|'| +0#0000000&@47
@@ -16,5 +17,4 @@
 |e+0#af5f00255&|c|h|o| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&@57
 |e+0#af5f00255&|c|h|o| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&@63
 |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&@55
-|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@59
-@57|3|7|,|1| @9|3|5|%| 
+@57|3|7|,|0|-|1| @7|3|2|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_expr_03.dump b/runtime/syntax/testdir/dumps/vim9_expr_03.dump
index 6f824f2..80ce231 100644
--- a/runtime/syntax/testdir/dumps/vim9_expr_03.dump
+++ b/runtime/syntax/testdir/dumps/vim9_expr_03.dump
@@ -1,20 +1,20 @@
-|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@59
+|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&@55
+|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@59
 |e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|:|f|o@1| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|g+0#00e0e07&|:|f|o@1| +0#0000000&@55
 |e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&@57
 |e+0#af5f00255&|c|h|o| +0#0000000&|T|r|u|e|(+0#e000e06&|)| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|T|r|u|e|(+0#e000e06&|)| +0#0000000&@53
-|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|a| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|@+0#e000e06&|a| +0#0000000&@61
->e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&@59
+>e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|a| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|@+0#e000e06&|a| +0#0000000&@61
+|e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&|t+0#e000002&|r|u|e|)+0#e000e06&| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|(+0#e000e06&|t+0#e000002&|r|u|e|)+0#e000e06&| +0#0000000&@53
+|e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&@59
+@75
+@75
+|#+0#0000e05&| |F|u|n|c|t|i|o|n| |c|a|l@1|s| +0#0000000&@58
+@75
+|F|o@1|(+0#e000e06&|t+0#e000002&|r|u|e|,+0#0000000&| |f+0#e000002&|a|l|s|e|,+0#0000000&| |n+0#e000002&|u|l@1|)+0#e000e06&| +0#0000000&@52
 @75
 @75
 |#+0#0000e05&| |C|o|m@1|a|n|d| |{|e|x|p|r|}| |a|r|g|u|m|e|n|t|s| +0#0000000&@48
 @75
 |i+0#af5f00255&|f| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&@67
 @2|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&@63
-|e+0#af5f00255&|l|s|e|i|f| +0#0000000&|f+0#e000002&|a|l|s|e| +0#0000000&@62
-@2|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#e000002&|a|l|s|e| +0#0000000&@62
-|e+0#af5f00255&|n|d|i|f| +0#0000000&@69
-@75
-|w+0#af5f00255&|h|i|l|e| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&@64
-@2|b+0#af5f00255&|r|e|a|k| +0#0000000&@67
-|e+0#af5f00255&|n|d|w|h|i|l|e| +0#0000000&@66
-@57|5@1|,|1| @9|5@1|%| 
+@57|5@1|,|1| @9|5|1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_expr_04.dump b/runtime/syntax/testdir/dumps/vim9_expr_04.dump
index 32a423b..c8383bc 100644
--- a/runtime/syntax/testdir/dumps/vim9_expr_04.dump
+++ b/runtime/syntax/testdir/dumps/vim9_expr_04.dump
@@ -1,20 +1,20 @@
-|e+0#af5f00255#ffffff0|n|d|w|h|i|l|e| +0#0000000&@66
+| +0&#ffffff0@1|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&@63
+|e+0#af5f00255&|l|s|e|i|f| +0#0000000&|f+0#e000002&|a|l|s|e| +0#0000000&@62
+@2|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#e000002&|a|l|s|e| +0#0000000&@62
+|e+0#af5f00255&|n|d|i|f| +0#0000000&@69
+@75
+>w+0#af5f00255&|h|i|l|e| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&@64
+@2|b+0#af5f00255&|r|e|a|k| +0#0000000&@67
+|e+0#af5f00255&|n|d|w|h|i|l|e| +0#0000000&@66
 @75
 |d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)|:+0#0000000&| |b+0#00e0003&|o@1|l| +0#0000000&@59
 @2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|t+0#e000002&|r|u|e| +0#0000000&@61
 |e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
-> @74
+@75
 @75
 |#+0#0000e05&| |I|s@1|u|e| |#|1|4@1|2|3| |(|v|i|m|.|v|i|m|:| |O|p|t| |o|u|t| |o|f| |v|i|m|S|e|a|r|c|h|*|)| +0#0000000&@27
 @75
 |:|?+0#e000e06&|t+0#e000002&|r|u|t|h|y| +0#0000000&@66
 |c+0#af5f00255&|o|n|s|t| +0#0000000&|t+0#00e0e07&|r|u|t|h|y|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|f+0#e000002&|a|l|s|e| +0#0000000&@46
 @4|?+0#af5f00255&| +0#0000000&|(+0#e000e06&|0+0#e000002&| +0#0000000&@66
-@4|)+0#e000e06&| +0#0000000&@69
-@4|:+0#af5f00255&| +0#0000000&|(+0#e000e06&|1+0#e000002&| +0#0000000&@66
-@4|)+0#e000e06&| +0#0000000&@69
-|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|r|u|t|h|y| +0#0000000&@63
-@75
-|d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@65
-| +0#e000002&@1|:+0#0000000&|?+0#e000e06&|t+0#e000002&|r|u|t|h|y| +0#0000000&@64
-@57|7|3|,|0|-|1| @7|7|6|%| 
+@57|7|3|,|1| @9|7|0|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_expr_05.dump b/runtime/syntax/testdir/dumps/vim9_expr_05.dump
index b2fea21..083705e 100644
--- a/runtime/syntax/testdir/dumps/vim9_expr_05.dump
+++ b/runtime/syntax/testdir/dumps/vim9_expr_05.dump
@@ -1,20 +1,20 @@
-| +0#e000002#ffffff0@1|:+0#0000000&|?+0#e000e06&|t+0#e000002&|r|u|t|h|y| +0#0000000&@64
+| +0&#ffffff0@3|?+0#af5f00255&| +0#0000000&|(+0#e000e06&|0+0#e000002&| +0#0000000&@66
+@4|)+0#e000e06&| +0#0000000&@69
+@4|:+0#af5f00255&| +0#0000000&|(+0#e000e06&|1+0#e000002&| +0#0000000&@66
+@4|)+0#e000e06&| +0#0000000&@69
+|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|r|u|t|h|y| +0#0000000&@63
+> @74
+|d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@65
+| +0#e000002&@1|:+0#0000000&|?+0#e000e06&|t+0#e000002&|r|u|t|h|y| +0#0000000&@64
 @2|c+0#af5f00255&|o|n|s|t| +0#0000000&|t+0#00e0e07&|r|u|t|h|y|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|f+0#e000002&|a|l|s|e| +0#0000000&@44
 @6|?+0#af5f00255&| +0#0000000&|(+0#e000e06&|0+0#e000002&| +0#0000000&@64
 @6|)+0#e000e06&| +0#0000000&@67
 @6|:+0#af5f00255&| +0#0000000&|(+0#e000e06&|1+0#e000002&| +0#0000000&@64
-@6>)+0#e000e06&| +0#0000000&@67
+@6|)+0#e000e06&| +0#0000000&@67
 @2|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|r|u|t|h|y| +0#0000000&@61
 |e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
 @75
 @75
 |#+0#0000e05&| |I|s@1|u|e| |#|1|6|2@1|7| |(|V|i|m|s|c|r|i|p|t| |t|e|r|n|a|r|y| |e|x|p|r|e|s@1|i|o|n| |h|i|g|h|l|i|g|h|t|i|n|g|)| +0#0000000&@16
 @75
-|v+0#af5f00255&|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|'+0#e000002&|f|o@1|'| +0#0000000&@24|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@25
-|v+0#af5f00255&|a|r| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|f|o@1|'| +0#0000000&|?+0#af5f00255&| +0#0000000&|'+0#e000002&|b|a|r|'| +0#0000000&|:+0#af5f00255&| +0#0000000&|'+0#e000002&|b|a|z|'| +0#0000000&@36
-|v+0#af5f00255&|a|r| +0#0000000&|b+0#00e0e07&|a|z| +0#0000000&|=+0#af5f00255&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|f|o@1|'| +0#0000000&@52
-@12|\+0#e000e06&| +0#0000000&|?+0#af5f00255&| +0#0000000&|'+0#e000002&|b|a|z|'| +0#0000000&@53
-@12|\+0#e000e06&| +0#0000000&|:+0#af5f00255&| +0#0000000&|'+0#e000002&|b|a|r|'| +0#0000000&@53
-|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|%| 
+@57|9|1|,|0|-|1| @7|8|9|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_expr_06.dump b/runtime/syntax/testdir/dumps/vim9_expr_06.dump
index befcab3..d60bd9d 100644
--- a/runtime/syntax/testdir/dumps/vim9_expr_06.dump
+++ b/runtime/syntax/testdir/dumps/vim9_expr_06.dump
@@ -1,7 +1,14 @@
-| +0&#ffffff0@11|?+0#af5f00255&| +0#0000000&|'+0#e000002&|q|u|x|'| +0#0000000&@20|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@25
+| +0&#ffffff0@74
+|v+0#af5f00255&|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|'+0#e000002&|f|o@1|'| +0#0000000&@24|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@25
+|v+0#af5f00255&|a|r| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|f|o@1|'| +0#0000000&|?+0#af5f00255&| +0#0000000&|'+0#e000002&|b|a|r|'| +0#0000000&|:+0#af5f00255&| +0#0000000&|'+0#e000002&|b|a|z|'| +0#0000000&@36
+|v+0#af5f00255&|a|r| +0#0000000&|b+0#00e0e07&|a|z| +0#0000000&|=+0#af5f00255&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|f|o@1|'| +0#0000000&@52
+@12|\+0#e000e06&| +0#0000000&|?+0#af5f00255&| +0#0000000&|'+0#e000002&|b|a|z|'| +0#0000000&@53
+@12>\+0#e000e06&| +0#0000000&|:+0#af5f00255&| +0#0000000&|'+0#e000002&|b|a|r|'| +0#0000000&@53
+|v+0#af5f00255&|a|r| +0#0000000&|q+0#00e0e07&|u|x| +0#0000000&|=+0#af5f00255&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|f|o@1|'| +0#0000000&@52
+@12|?+0#af5f00255&| +0#0000000&|'+0#e000002&|q|u|x|'| +0#0000000&@20|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@25
 @12|:+0#af5f00255&| +0#0000000&|'+0#e000002&|q|u|x|'| +0#0000000&@20|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@25
 |e+0#af5f00255&|c|h|o| +0#0000000&|q+0#00e0e07&|u|x| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|'+0#e000002&|q|u@1|x|'| +0#0000000&@56
-> @74
+@75
 |~+0#4040ff13&| @73
 |~| @73
 |~| @73
@@ -10,11 +17,4 @@
 |~| @73
 |~| @73
 |~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|1|0|7|,|0|-|1| @6|B|o|t| 
+| +0#0000000&@56|1|0|9|,|1|3| @7|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim9_super_this_keywords3_01.dump b/runtime/syntax/testdir/dumps/vim9_super_this_keywords3_01.dump
index f9aa042..f1c2d22 100644
--- a/runtime/syntax/testdir/dumps/vim9_super_this_keywords3_01.dump
+++ b/runtime/syntax/testdir/dumps/vim9_super_this_keywords3_01.dump
@@ -9,8 +9,8 @@
 @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
+|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#e000002&|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#e000002&|u|l@1|)+0#e000e06&| +0#0000000&@46
 @75
 |~+0#4040ff13&| @73
 |~| @73
diff --git a/runtime/syntax/testdir/dumps/vim9_super_this_keywords_02.dump b/runtime/syntax/testdir/dumps/vim9_super_this_keywords_02.dump
index 6ec09d3..feed135 100644
--- a/runtime/syntax/testdir/dumps/vim9_super_this_keywords_02.dump
+++ b/runtime/syntax/testdir/dumps/vim9_super_this_keywords_02.dump
@@ -16,5 +16,5 @@
 @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
+@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#e000002&|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
index fb023e3..934eaa5 100644
--- a/runtime/syntax/testdir/dumps/vim9_super_this_keywords_03.dump
+++ b/runtime/syntax/testdir/dumps/vim9_super_this_keywords_03.dump
@@ -1,4 +1,4 @@
-| +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
+| +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#e000002&|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
diff --git a/runtime/syntax/testdir/dumps/vim_expr_01.dump b/runtime/syntax/testdir/dumps/vim_expr_01.dump
index 2423dc9..c6bb6db 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|5|%| 
+@57|1|5|,|1| @10|4|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_expr_02.dump b/runtime/syntax/testdir/dumps/vim_expr_02.dump
index d8f3bce..1374c3e 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|2|%| 
+@57|3|2|,|0|-|1| @7|1@1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_expr_03.dump b/runtime/syntax/testdir/dumps/vim_expr_03.dump
index cc6311a..8bfd824 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|0|%| 
+@57|5|0|,|1| @9|1|9|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_expr_04.dump b/runtime/syntax/testdir/dumps/vim_expr_04.dump
index 496b691..692c920 100644
--- a/runtime/syntax/testdir/dumps/vim_expr_04.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_04.dump
@@ -17,4 +17,4 @@
 |e+0#af5f00255&|c|h|o| +0#0000000&|1+0#e000002&|.|0|E|-|6| +0#0000000&@63
 |e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|3+0#e000002&|.|1|4|1|6|e|+|8@1| +0#0000000&@58
 @75
-@57|6|8|,|1| @9|2|9|%| 
+@57|6|8|,|1| @9|2|7|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_expr_05.dump b/runtime/syntax/testdir/dumps/vim_expr_05.dump
index 9a327cb..24e34a2 100644
--- a/runtime/syntax/testdir/dumps/vim_expr_05.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_05.dump
@@ -17,4 +17,4 @@
 @6|\+0#e000e06&|]| +0#0000000&@66
 |e+0#af5f00255&|c|h|o| +0#0000000&|[+0#e000e06&|1+0#e000002&|,+0#0000000&| |'+0#e000002&|t|w|o|'|,+0#0000000&| |1+0#e000002&| +0#0000000&|++0#af5f00255&| +0#0000000&|2+0#e000002&|,+0#0000000&| |"+0#e000002&|f|o|"| +0#0000000&|.+0#af5f00255&@1| +0#0000000&|"+0#e000002&|u|r|"|]+0#e000e06&| +0#0000000&@38
 @75
-@57|8|6|,|1| @9|3|7|%| 
+@57|8|6|,|1| @9|3|5|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_expr_06.dump b/runtime/syntax/testdir/dumps/vim_expr_06.dump
index b9ddc4f..b6bb3f7 100644
--- a/runtime/syntax/testdir/dumps/vim_expr_06.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_06.dump
@@ -3,18 +3,18 @@
 |a|c|e| |i|n| |l|i|s|t| |o|f| |s|t|r|i|n|g|)| +0#0000000&@52
 |l+0#af5f00255&|e|t| +0#0000000&|l+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|[+0#e000e06&|'+0#e000002&|a|'|,+0#0000000&|'+0#e000002&|b|'|,+0#0000000&|'+0#e000002&|c|'|]+0#e000e06&| +0#0000000&@53
 @75
->"+0#0000e05&| |O|p|e|r|a|t|o|r|s| +0#0000000&@63
+>"+0#0000e05&| |R|e|g|i|s|t|e|r| +0#0000000&@64
+@75
+|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|"| +0#0000000&@67
+|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|0| +0#0000000&|@+0#e000e06&|1| +0#0000000&|@+0#e000e06&|2| +0#0000000&|@+0#e000e06&|3| +0#0000000&|@+0#e000e06&|4| +0#0000000&|@+0#e000e06&|5| +0#0000000&|@+0#e000e06&|6| +0#0000000&|@+0#e000e06&|7| +0#0000000&|@+0#e000e06&|8| +0#0000000&|@+0#e000e06&|9| +0#0000000&@40
+|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|-| +0#0000000&@67
+|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|a| +0#0000000&|@+0#e000e06&|b| +0#0000000&|@+0#e000e06&|c| +0#0000000&|@+0#e000e06&|d| +0#0000000&|@+0#e000e06&|e| +0#0000000&|@+0#e000e06&|f| +0#0000000&|@+0#e000e06&|g| +0#0000000&|@+0#e000e06&|h| +0#0000000&|@+0#e000e06&|i| +0#0000000&|@+0#e000e06&|j| +0#0000000&|@+0#e000e06&|k| +0#0000000&|@+0#e000e06&|l| +0#0000000&|@+0#e000e06&|m| +0#0000000&|@+0#e000e06&|n| +0#0000000&|@+0#e000e06&|o| +0#0000000&|@+0#e000e06&|p| +0#0000000&|@+0#e000e06&|q| +0#0000000&|@+0#e000e06&|r| +0#0000000&|@+0#e000e06&|s| +0#0000000&|@+0#e000e06&|t| +0#0000000&|@+0#e000e06&|u| +0#0000000&|@+0#e000e06&|v| +0#0000000&|@+0#e000e06&|w| +0#0000000&|@+0#e000e06&
+|x| +0#0000000&|@+0#e000e06&|y| +0#0000000&|@+0#e000e06&|z| +0#0000000&@67
+|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|A| +0#0000000&|@+0#e000e06&|B| +0#0000000&|@+0#e000e06&|C| +0#0000000&|@+0#e000e06&|D| +0#0000000&|@+0#e000e06&|E| +0#0000000&|@+0#e000e06&|F| +0#0000000&|@+0#e000e06&|G| +0#0000000&|@+0#e000e06&|H| +0#0000000&|@+0#e000e06&|I| +0#0000000&|@+0#e000e06&|J| +0#0000000&|@+0#e000e06&|K| +0#0000000&|@+0#e000e06&|L| +0#0000000&|@+0#e000e06&|M| +0#0000000&|@+0#e000e06&|N| +0#0000000&|@+0#e000e06&|O| +0#0000000&|@+0#e000e06&|P| +0#0000000&|@+0#e000e06&|Q| +0#0000000&|@+0#e000e06&|R| +0#0000000&|@+0#e000e06&|S| +0#0000000&|@+0#e000e06&|T| +0#0000000&|@+0#e000e06&|U| +0#0000000&|@+0#e000e06&|V| +0#0000000&|@+0#e000e06&|W| +0#0000000&|@+0#e000e06&
+|X| +0#0000000&|@+0#e000e06&|Y| +0#0000000&|@+0#e000e06&|Z| +0#0000000&@67
+|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|:| +0#0000000&|@+0#e000e06&|.| +0#0000000&|@+0#e000e06&|%| +0#0000000&|@+0#e000e06&|#| +0#0000000&|@+0#e000e06&|=| +0#0000000&|@+0#e000e06&|*| +0#0000000&|@+0#e000e06&|+| +0#0000000&|@+0#e000e06&|~| +0#0000000&|@+0#e000e06&|_| +0#0000000&|@+0#e000e06&|/| +0#0000000&@40
+@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
-@57|1|0|3|,|1| @8|4|6|%| 
+@57|1|0|3|,|1| @8|4|2|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_expr_07.dump b/runtime/syntax/testdir/dumps/vim_expr_07.dump
index ce41dd0..c2796e5 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&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&@58
+|"+0#0000e05#ffffff0| |T|e|r|n|a|r|y| +0#0000000&@65
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|?+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|:+0#af5f00255&| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@51
+@75
+|e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|t|o|p|"| +0#0000000&|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&@45
+|e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|t|o|p|"| +0#0000000&|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&|0@2| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|l|a|s|t|"| +0#0000000&|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&@21
+> @74
+|e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&@60
+@6|\+0#e000e06&| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|t|o|p|"| +0#0000000&@59
+@6|\+0#e000e06&| +0#0000000&|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&|0@2| +0#0000000&@52
+@6|\+0#e000e06&| +0#0000000&@8|?+0#af5f00255&| +0#0000000&|"+0#e000002&|l|a|s|t|"| +0#0000000&@50
+@6|\+0#e000e06&| +0#0000000&@8|:+0#af5f00255&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&@52
+|e+0#af5f00255&|c|h|o| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&| +0#0000000&@58
 @6|\+0#e000e06&| +0#0000000&|"+0#e000002&|t|o|p|"| +0#0000000&|:+0#af5f00255&| +0#0000000&@59
 @6|\+0#e000e06&| +0#0000000&|l+0#00e0e07&|n|u|m| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|1+0#e000002&|0@2| +0#0000000&|?+0#af5f00255&| +0#0000000&@52
 @6|\+0#e000e06&| +0#0000000&@8|"+0#e000002&|l|a|s|t|"| +0#0000000&|:+0#af5f00255&| +0#0000000&@50
 @6|\+0#e000e06&| +0#0000000&@8|l+0#00e0e07&|n|u|m| +0#0000000&@54
-> @74
+@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
-@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
-@57|1|2|1|,|0|-|1| @6|5|4|%| 
+@57|1@1|9|,|0|-|1| @6|5|0|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_expr_08.dump b/runtime/syntax/testdir/dumps/vim_expr_08.dump
index fa3a2fe..1b17c0a 100644
--- a/runtime/syntax/testdir/dumps/vim_expr_08.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_08.dump
@@ -1,20 +1,20 @@
-|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|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#ffffff0|c|h|o| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&|?+0#af5f00255&| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&|:+0#af5f00255&| +0#0000000&|"+0#e000002&|b|a|r|"| +0#0000000&@48
+|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|?+0#af5f00255&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|:+0#af5f00255&| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@54
+|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|:|f|o@1| +0#0000000&|?+0#af5f00255&| +0#0000000&|g+0#00e0e07&|:|f|o@1| +0#0000000&|:+0#af5f00255&| +0#0000000&|g+0#00e0e07&|:|b|a|r| +0#0000000&@48
+|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&|?+0#af5f00255&| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&|:+0#af5f00255&| +0#0000000&|$+0#e000e06&|B|A|R| +0#0000000&@51
+|e+0#af5f00255&|c|h|o| +0#0000000&|T|r|u|e|(+0#e000e06&|)| +0#0000000&|?+0#af5f00255&| +0#0000000&|T|r|u|e|(+0#e000e06&|)| +0#0000000&|:+0#af5f00255&| +0#0000000&|F|a|l|s|e|(+0#e000e06&|)| +0#0000000&@44
+>e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|a| +0#0000000&|?+0#af5f00255&| +0#0000000&|@+0#e000e06&|a| +0#0000000&|:+0#af5f00255&| +0#0000000&|@+0#e000e06&|b| +0#0000000&@57
+|e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&|?+0#af5f00255&| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&|:+0#af5f00255&| +0#0000000&|(+0#e000e06&|0+0#e000002&|)+0#e000e06&| +0#0000000&@54
+@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
+|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
-@57|1|3|9|,|1| @8|6|2|%| 
+@57|1|3|7|,|1| @8|5|8|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_expr_09.dump b/runtime/syntax/testdir/dumps/vim_expr_09.dump
index 786fbc3..d38fcfd 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&@1| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53
+| +0&#ffffff0@74
+|e+0#af5f00255&|c|h|o| +0#0000000&|1+0#e000002&| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|1+0#e000002&| +0#0000000&@63
+|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&@55
+|e+0#af5f00255&|c|h|o| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@59
+|e+0#af5f00255&|c|h|o| +0#0000000&|g+0#00e0e07&|:|f|o@1| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|g+0#00e0e07&|:|f|o@1| +0#0000000&@55
+>e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&@57
+|e+0#af5f00255&|c|h|o| +0#0000000&|T|r|u|e|(+0#e000e06&|)| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|T|r|u|e|(+0#e000e06&|)| +0#0000000&@53
+|e+0#af5f00255&|c|h|o| +0#0000000&|@+0#e000e06&|a| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|@+0#e000e06&|a| +0#0000000&@61
+|e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&|?+0#af5f00255&@1| +0#0000000&|(+0#e000e06&|1+0#e000002&|)+0#e000e06&| +0#0000000&@59
+@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&|!+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
-@57|1|5|7|,|1| @8|7|1|%| 
+@57|1|5@1|,|1| @8|6@1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_expr_10.dump b/runtime/syntax/testdir/dumps/vim_expr_10.dump
index 6f6eeec..f297af5 100644
--- a/runtime/syntax/testdir/dumps/vim_expr_10.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_10.dump
@@ -1,20 +1,20 @@
-|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|=+0#af5f00255&|~|#| +0#0000000&@3|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&|~| +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
+|"+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
-|"+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|%| 
+@57|1|7|3|,|1| @8|7|4|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_expr_11.dump b/runtime/syntax/testdir/dumps/vim_expr_11.dump
index ddefe39..e9744da 100644
--- a/runtime/syntax/testdir/dumps/vim_expr_11.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_11.dump
@@ -1,20 +1,20 @@
-|"+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
+|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|!+0#af5f00255&|=|?| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|>+0#af5f00255&|?| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|>+0#af5f00255&|=|?| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|<+0#af5f00255&|?| +0#0000000&@4|e+0#00e0e07&|x|p|r| +0#0000000&@53
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|<+0#af5f00255&|=|?| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53
+>e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|=+0#af5f00255&|~|?| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|!+0#af5f00255&|~|?| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|i+0#af5f00255&|s|?| +0#0000000&@3|e+0#00e0e07&|x|p|r| +0#0000000&@53
+|e+0#af5f00255&|c|h|o| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&|i+0#af5f00255&|s|n|o|t|?| +0#0000000&|e+0#00e0e07&|x|p|r| +0#0000000&@53
+@75
+|"+0#0000e05&| |U|n|r|e|p|o|r|t|e|d| |i|s@1|u|e| |(|"|i|s|"| |i|n|c|o|r@1|e|c|t|l|y| |m|a|t|c|h|e|s| |a|s| |"+0#e000002&|e|c|h|o| |v|i|m|N|u|m|b|e|r| |*|v|i|m|C|o|m@1|a|n|d
 |*| |v|i|m|N|u|m|b|e|r|"|)+0#0000e05&| +0#0000000&@61
 |e+0#af5f00255&|c|h|o| +0#0000000&|4+0#e000002&|2| +0#0000000&|i+0#af5f00255&|s| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
 @75
 |"+0#0000e05&| |L|i|n|e| |c|o|n|t|i|n|u|a|t|i|o|n| +0#0000000&@55
->l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|++0#af5f00255&| +0#0000000&@59
-@6|\+0#e000e06&| +0#0000000&@67
-@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
-@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
 |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|%| 
+@57|1|9|1|,|1| @8|8|1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_expr_12.dump b/runtime/syntax/testdir/dumps/vim_expr_12.dump
index 4accca7..b6ce126 100644
--- a/runtime/syntax/testdir/dumps/vim_expr_12.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_12.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&|++0#af5f00255&| +0#0000000&@61
+| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&@67
+@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&|++0#af5f00255&| +0#0000000&@61
 @6|\+0#e000e06&| +0#0000000&|"+0#e000002&|b|a|z|"| +0#0000000&@61
 @75
+>l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|++0#af5f00255&| +0#0000000&@59
+@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&@67
+@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&@67
+@6|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&|++0#af5f00255&| +0#0000000&@61
+@6|\+0#e000e06&| +0#0000000&|"+0#e000002&|b|a|z|"| +0#0000000&@61
+@75
+|"+0#0000e05&| |F|u|n|c|t|i|o|n| |c|a|l@1|s| +0#0000000&@58
+@75
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|v+0#00e0e07&|:|t|r|u|e|,+0#0000000&| |v+0#00e0e07&|:|f|a|l|s|e|,+0#0000000&| |v+0#00e0e07&|:|n|u|l@1|)+0#e000e06&| +0#0000000&@41
+@75
 @75
 |"+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|%| 
+@57|2|0|8|,|1| @8|8|9|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_expr_13.dump b/runtime/syntax/testdir/dumps/vim_expr_13.dump
index f5644bd..56ae4a1 100644
--- a/runtime/syntax/testdir/dumps/vim_expr_13.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_13.dump
@@ -1,20 +1,20 @@
-|f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@60
+|"+0#0000e05#ffffff0| |I|s@1|u|e| |#|1|6|2@1|1| |(|v|i|m|S|t|r|i|n|g| |b|e|c|o|m|e|s| |v|i|m|V|a|r| |w|h|e|n| |p|r|e|c|e|d|e|d| |b|y| |!|)| +0#0000000&@14
+|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|!+0#af5f00255&|'+0#e000002&|g|:|b|a|r|'|-+0#af5f00255&|>|e+0#00e0e07&|x|i|s|t|s|(+0#e000e06&|)| +0#0000000&@46
+@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
+> @74
+|?+0#e000e06&|t+0#e000002&|r|u|t|h|y| +0#0000000&@67
+|l+0#af5f00255&|e|t| +0#0000000&|t+0#00e0e07&|r|u|t|h|y| +0#0000000&|=+0#af5f00255&| +0#0000000&|0+0#e000002&| +0#0000000&@60
+|\+0#e000e06&| +0#0000000&@2|?+0#af5f00255&| +0#0000000&|(+0#e000e06&|0+0#e000002&| +0#0000000&@66
+|\+0#e000e06&| +0#0000000&@2|)+0#e000e06&| +0#0000000&@69
+|\+0#e000e06&| +0#0000000&@2|:+0#af5f00255&| +0#0000000&|(+0#e000e06&|1+0#e000002&| +0#0000000&@66
+|\+0#e000e06&| +0#0000000&@2|)+0#e000e06&| +0#0000000&@69
+|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|r|u|t|h|y| +0#0000000&@63
+@75
+|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@60
 | +0#e000002&@1|?+0#e000e06&|t+0#e000002&|r|u|t|h|y| +0#0000000&@65
 @2|l+0#af5f00255&|e|t| +0#0000000&|t+0#00e0e07&|r|u|t|h|y| +0#0000000&|=+0#af5f00255&| +0#0000000&|0+0#e000002&| +0#0000000&@58
 @2|\+0#e000e06&| +0#0000000&@2|?+0#af5f00255&| +0#0000000&|(+0#e000e06&|0+0#e000002&| +0#0000000&@64
 @2|\+0#e000e06&| +0#0000000&@2|)+0#e000e06&| +0#0000000&@67
-@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| 
+@57|2@1|6|,|0|-|1| @6|9|7|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_expr_14.dump b/runtime/syntax/testdir/dumps/vim_expr_14.dump
new file mode 100644
index 0000000..2063d80
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_expr_14.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@1|\+0#e000e06&| +0#0000000&@2|)+0#e000e06&| +0#0000000&@67
+@2|\+0#e000e06&| +0#0000000&@2|:+0#af5f00255&| +0#0000000&|(+0#e000e06&|1+0#e000002&| +0#0000000&@64
+@2|\+0#e000e06&| +0#0000000&@2|)+0#e000e06&| +0#0000000&@67
+@2|e+0#af5f00255&|c|h|o| +0#0000000&|t+0#00e0e07&|r|u|t|h|y| +0#0000000&@61
+|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
+> @74
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|2|4@1|,|0|-|1| @6|B|o|t| 
diff --git a/runtime/syntax/testdir/input/vim9_expr.vim b/runtime/syntax/testdir/input/vim9_expr.vim
index 7faaa5f..fd9cbb0 100644
--- a/runtime/syntax/testdir/input/vim9_expr.vim
+++ b/runtime/syntax/testdir/input/vim9_expr.vim
@@ -30,6 +30,7 @@
 echo $FOO ? $FOO : $BAR
 echo True() ? True() : False()
 echo @a ? @a : @b
+echo (true) ? (true) : (false)
 echo (1) ? (1) : (0)
 
 # Falsy
@@ -52,9 +53,15 @@
 echo $FOO ?? $FOO
 echo True() ?? True()
 echo @a ?? @a
+echo (true) ?? (true)
 echo (1) ?? (1)
 
 
+# Function calls
+
+Foo(true, false, null)
+
+
 # Command {expr} arguments
 
 if true
diff --git a/runtime/syntax/testdir/input/vim_expr.vim b/runtime/syntax/testdir/input/vim_expr.vim
index ddaf519..d71166d 100644
--- a/runtime/syntax/testdir/input/vim_expr.vim
+++ b/runtime/syntax/testdir/input/vim_expr.vim
@@ -100,6 +100,15 @@
 " Issue #5830 (Incorrect syntax highlighting in Vim script when omitting space in list of string)
 let l = ['a','b','c']
 
+" Register
+
+echo @" 
+echo @0 @1 @2 @3 @4 @5 @6 @7 @8 @9
+echo @-
+echo @a @b @c @d @e @f @g @h @i @j @k @l @m @n @o @p @q @r @s @t @u @v @w @x @y @z
+echo @A @B @C @D @E @F @G @H @I @J @K @L @M @N @O @P @Q @R @S @T @U @V @W @X @Y @Z
+echo @: @. @% @# @= @* @+ @~ @_ @/
+
 " Operators
 
 " Ternary
@@ -204,6 +213,10 @@
       \ bar +
       \ "baz"
 
+" Function calls
+
+call Foo(v:true, v:false, v:null)
+
 
 " Issue #16221 (vimString becomes vimVar when preceded by !)
 let bar = !'g:bar'->exists()
diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim
index 854e3e0..0d4082a 100644
--- a/runtime/syntax/vim.vim
+++ b/runtime/syntax/vim.vim
@@ -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 08
+" Last Change:	   2025 Feb 13
 " Former Maintainer: Charles E. Campbell
 
 " DO NOT CHANGE DIRECTLY.
@@ -298,7 +298,7 @@
 " ====
 syn match vimCall	"\<call\=\>"	skipwhite nextgroup=vimFunc
 
-" Debuggready {{{2
+" Debuggreedy {{{2
 " ===========
 " TODO: special-cased until generalised range/count support is implemented
 syn match	vimDebuggreedy	"\<0\=debugg\%[reedy]\>" contains=vimCount
@@ -343,7 +343,7 @@
 
 " Operators: {{{2
 " =========
-syn cluster	vimOperGroup	contains=@vimSpecialVar,vimFunc,vimLambda,vimOper,vimOperParen,vimNumber,vimString,vimRegister,@vimContinue,vim9Comment,vimVar,vimBoolean,vim9LambdaParams,vimNull
+syn cluster	vimOperGroup	contains=@vimContinue,@vimExprList,vim9Comment
 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
@@ -743,7 +743,7 @@
 syn match	vimRegister	'\<normal\s\+\zs"[a-zA-Z0-9]'
 syn match	vimRegister	'@"'
 syn match	vimPlainRegister contained	'"[a-zA-Z0-9\-:.%#*+=]'
-syn match	vimLetRegister	contained	'@["0-9\-a-zA-Z#=*+_/]'
+syn match	vimLetRegister	contained	'@["0-9\-a-zA-Z:.%#=*+~_/]'
 
 syn match	vimAddress	",\zs[.$]"	skipwhite nextgroup=vimSubst1
 syn match	vimAddress	"%\ze\a"	skipwhite nextgroup=vimString,vimSubst1