changeset 33846:bc2505818986

runtime(html): Update syntax file (#13591) Commit: https://github.com/vim/vim/commit/a9058440b7b9d7f5d0027c8cd44366e9200ca241 Author: dkearns <dougkearns@gmail.com> Date: Wed Nov 29 06:41:41 2023 +1100 runtime(html): Update syntax file (https://github.com/vim/vim/issues/13591) Add missing search element and update ARIA attribute list. Add a very basic test file to check all elements are matched. Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Tue, 28 Nov 2023 20:45:07 +0100
parents 25c6d44f2583
children 11f5d2f8c13e
files runtime/syntax/html.vim runtime/syntax/testdir/dumps/html_00.dump runtime/syntax/testdir/dumps/html_01.dump runtime/syntax/testdir/dumps/html_02.dump runtime/syntax/testdir/dumps/html_03.dump runtime/syntax/testdir/dumps/html_04.dump runtime/syntax/testdir/dumps/html_05.dump runtime/syntax/testdir/dumps/html_06.dump runtime/syntax/testdir/dumps/html_07.dump runtime/syntax/testdir/dumps/html_99.dump runtime/syntax/testdir/input/html.html
diffstat 11 files changed, 397 insertions(+), 19 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/syntax/html.vim
+++ b/runtime/syntax/html.vim
@@ -3,9 +3,9 @@
 " Maintainer:		Doug Kearns <dougkearns@gmail.com>
 " Previous Maintainers: Jorge Maldonado Ventura <jorgesumle@freakspot.net>
 "			Claudio Fleiner <claudio@fleiner.com>
-" Last Change:		2023 Feb 20
+" Last Change:		2023 Nov 28
 
-" Please check :help html.vim for some comments and a description of the options
+" See :help html.vim for some comments and a description of the options
 
 " quit when a syntax file was already loaded
 if !exists("main_syntax")
@@ -28,7 +28,6 @@ syn case ignore
 " mark illegal characters
 syn match htmlError "[<>&]"
 
-
 " tags
 syn region  htmlString	 contained start=+"+ end=+"+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc
 syn region  htmlString	 contained start=+'+ end=+'+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc
@@ -39,7 +38,6 @@ syn match   htmlTagN	 contained +<\s*[-a
 syn match   htmlTagN	 contained +</\s*[-a-zA-Z0-9]\++hs=s+2 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster
 syn match   htmlTagError contained "[^>]<"ms=s+1
 
-
 " tag names
 syn keyword htmlTagName contained address applet area a base basefont
 syn keyword htmlTagName contained big blockquote br caption center
@@ -61,7 +59,7 @@ syn keyword htmlTagName contained articl
 syn keyword htmlTagName contained datalist details dialog embed figcaption
 syn keyword htmlTagName contained figure footer header hgroup keygen main
 syn keyword htmlTagName contained mark menuitem meter nav output picture
-syn keyword htmlTagName contained progress rb rp rt rtc ruby section
+syn keyword htmlTagName contained progress rb rp rt rtc ruby search section
 syn keyword htmlTagName contained slot source summary template time track
 syn keyword htmlTagName contained video wbr
 
@@ -88,19 +86,72 @@ syn keyword htmlArg contained size src s
 syn keyword htmlArg contained usemap ismap valign value vlink vspace width wrap
 syn match   htmlArg contained "\<\%(http-equiv\|href\|title\)="me=e-1
 
-" aria attributes
-exe 'syn match htmlArg contained "\<aria-\%(' . join([
-    \ 'activedescendant', 'atomic', 'autocomplete', 'busy', 'checked', 'colcount',
-    \ 'colindex', 'colspan', 'controls', 'current', 'describedby', 'details',
-    \ 'disabled', 'dropeffect', 'errormessage', 'expanded', 'flowto', 'grabbed',
-    \ 'haspopup', 'hidden', 'invalid', 'keyshortcuts', 'label', 'labelledby', 'level',
-    \ 'live', 'modal', 'multiline', 'multiselectable', 'orientation', 'owns',
-    \ 'placeholder', 'posinset', 'pressed', 'readonly', 'relevant', 'required',
-    \ 'roledescription', 'rowcount', 'rowindex', 'rowspan', 'selected', 'setsize',
-    \ 'sort', 'valuemax', 'valuemin', 'valuenow', 'valuetext'
-    \ ], '\|') . '\)\>"'
 syn keyword htmlArg contained role
 
+" ARIA attributes {{{1
+let s:aria =<< trim END
+  activedescendant
+  atomic
+  autocomplete
+  braillelabel
+  brailleroledescription
+  busy
+  checked
+  colcount
+  colindex
+  colindextext
+  colspan
+  controls
+  current
+  describedby
+  description
+  details
+  disabled
+  errormessage
+  expanded
+  flowto
+  haspopup
+  hidden
+  invalid
+  keyshortcuts
+  label
+  labelledby
+  level
+  live
+  modal
+  multiline
+  multiselectable
+  orientation
+  owns
+  placeholder
+  posinset
+  pressed
+  readonly
+  relevant
+  required
+  roledescription
+  rowcount
+  rowindex
+  rowindextext
+  rowspan
+  selected
+  setsize
+  sort
+  valuemax
+  valuemin
+  valuenow
+  valuetext
+END
+let s:aria_deprecated =<< trim END
+  dropeffect
+  grabbed
+END
+
+call extend(s:aria, s:aria_deprecated)
+exe 'syn match htmlArg contained "\%#=1\<aria-\%(' .. s:aria->join('\|') .. '\)\>"'
+unlet s:aria s:aria_deprecated
+" }}}
+
 " Netscape extensions
 syn keyword htmlTagName contained frame noframes frameset nobr blink
 syn keyword htmlTagName contained layer ilayer nolayer spacer
@@ -321,9 +372,9 @@ if !exists("html_no_rendering")
     hi def htmlUnderlineItalic	   term=italic,underline cterm=italic,underline gui=italic,underline
     hi def htmlItalic		   term=italic cterm=italic gui=italic
     if v:version > 800 || v:version == 800 && has("patch1038")
-	hi def htmlStrike	       term=strikethrough cterm=strikethrough gui=strikethrough
+      hi def htmlStrike	term=strikethrough cterm=strikethrough gui=strikethrough
     else
-	hi def htmlStrike	       term=underline cterm=underline gui=underline
+      hi def htmlStrike	term=underline cterm=underline gui=underline
     endif
   endif
 endif
@@ -356,4 +407,5 @@ endif
 
 let &cpo = s:cpo_save
 unlet s:cpo_save
-" vim: ts=8
+
+" vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker:
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/html_00.dump
@@ -0,0 +1,20 @@
+><+0#0000e05#ffffff0|!|-@1| +0#0000000&@70
+| +0#0000e05&@1|H|T|M|L| |S|y|n|t|a|x| |T|e|s|t| |F|i|l|e| +0#0000000&@51
+| +0#0000e05&@1|M|a|i|n|t|a|i|n|e|r|:| |D|o|u|g| |K|e|a|r|n|s| |<|d|o|u|g|k|e|a|r|n|s|@|g|m|a|i|l|.|c|o|m|>| +0#0000000&@26
+| +0#0000e05&@1|L|a|s|t| |C|h|a|n|g|e|:| |2|0|2|3| |N|o|v| |2|8| +0#0000000&@48
+|-+0#0000e05&@1|>| +0#0000000&@71
+@75
+|<+0#0000e05&|!|-@1| |H|T|M|L| |E|l|e|m|e|n|t|s| |-@1|>| +0#0000000&@52
+|<+0#00e0e07&|a+0#af5f00255&|>+0#00e0e07&| +0#0000000&@71
+|<+0#00e0e07&|a+0#af5f00255&|b@1|r|>+0#00e0e07&| +0#0000000&@68
+|<+0#00e0e07&|a+0#af5f00255&|d@1|r|e|s@1|>+0#00e0e07&| +0#0000000&@65
+|<+0#00e0e07&|a+0#af5f00255&|r|e|a|>+0#00e0e07&| +0#0000000&@68
+|<+0#00e0e07&|a+0#af5f00255&|r|t|i|c|l|e|>+0#00e0e07&| +0#0000000&@65
+|<+0#00e0e07&|a+0#af5f00255&|s|i|d|e|>+0#00e0e07&| +0#0000000&@67
+|<+0#00e0e07&|a+0#af5f00255&|u|d|i|o|>+0#00e0e07&| +0#0000000&@67
+|<+0#00e0e07&|b+0#af5f00255&|>+0#00e0e07&|.+2#0000000&@2|<+0#00e0e07&|/|b+0#af5f00255&|>+0#00e0e07&| +0#0000000&@64
+|<+0#00e0e07&|b+0#af5f00255&|a|s|e|>+0#00e0e07&| +0#0000000&@68
+|<+0#00e0e07&|b+0#af5f00255&|d|i|>+0#00e0e07&| +0#0000000&@69
+|<+0#00e0e07&|b+0#af5f00255&|d|o|>+0#00e0e07&| +0#0000000&@69
+|<+0#00e0e07&|b+0#af5f00255&|l|o|c|k|q|u|o|t|e|>+0#00e0e07&| +0#0000000&@62
+|"|i|n|p|u|t|/|h|t|m|l|.|h|t|m|l|"| |1|4|6|L|,| |1|4|1|7|B| @27|1|,|1| @10|T|o|p| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/html_01.dump
@@ -0,0 +1,20 @@
+|<+0#00e0e07#ffffff0|a+0#af5f00255&|u|d|i|o|>+0#00e0e07&| +0#0000000&@67
+|<+0#00e0e07&|b+0#af5f00255&|>+0#00e0e07&|.+2#0000000&@2|<+0#00e0e07&|/|b+0#af5f00255&|>+0#00e0e07&| +0#0000000&@64
+|<+0#00e0e07&|b+0#af5f00255&|a|s|e|>+0#00e0e07&| +0#0000000&@68
+|<+0#00e0e07&|b+0#af5f00255&|d|i|>+0#00e0e07&| +0#0000000&@69
+|<+0#00e0e07&|b+0#af5f00255&|d|o|>+0#00e0e07&| +0#0000000&@69
+><+0#00e0e07&|b+0#af5f00255&|l|o|c|k|q|u|o|t|e|>+0#00e0e07&| +0#0000000&@62
+|<+0#00e0e07&|b+0#af5f00255&|o|d|y|>+0#00e0e07&| +0#0000000&@68
+|<+0#00e0e07&|b+0#af5f00255&|r|>+0#00e0e07&| +0#0000000&@70
+|<+0#00e0e07&|b+0#af5f00255&|u|t@1|o|n|>+0#00e0e07&| +0#0000000&@66
+|<+0#00e0e07&|c+0#af5f00255&|a|n|v|a|s|>+0#00e0e07&| +0#0000000&@66
+|<+0#00e0e07&|c+0#af5f00255&|a|p|t|i|o|n|>+0#00e0e07&| +0#0000000&@65
+|<+0#00e0e07&|c+0#af5f00255&|i|t|e|>+0#00e0e07&| +0#0000000&@68
+|<+0#00e0e07&|c+0#af5f00255&|o|d|e|>+0#00e0e07&| +0#0000000&@68
+|<+0#00e0e07&|c+0#af5f00255&|o|l|>+0#00e0e07&| +0#0000000&@69
+|<+0#00e0e07&|c+0#af5f00255&|o|l|g|r|o|u|p|>+0#00e0e07&| +0#0000000&@64
+|<+0#00e0e07&|d+0#af5f00255&|a|t|a|>+0#00e0e07&| +0#0000000&@68
+|<+0#00e0e07&|d+0#af5f00255&|a|t|a|l|i|s|t|>+0#00e0e07&| +0#0000000&@64
+|<+0#00e0e07&|d+0#af5f00255&@1|>+0#00e0e07&| +0#0000000&@70
+|<+0#00e0e07&|d+0#af5f00255&|e|l|>+0#00e0e07&|.+1024#0000000&@2|<+0#00e0e07&|/|d+0#af5f00255&|e|l|>+0#00e0e07&| +0#0000000&@60
+@57|1|9|,|1| @9|1|0|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/html_02.dump
@@ -0,0 +1,20 @@
+|<+0#00e0e07#ffffff0|d+0#af5f00255&|e|l|>+0#00e0e07&|.+1024#0000000&@2|<+0#00e0e07&|/|d+0#af5f00255&|e|l|>+0#00e0e07&| +0#0000000&@60
+|<+0#00e0e07&|d+0#af5f00255&|e|t|a|i|l|s|>+0#00e0e07&| +0#0000000&@65
+|<+0#00e0e07&|d+0#af5f00255&|f|n|>+0#00e0e07&| +0#0000000&@69
+|<+0#00e0e07&|d+0#af5f00255&|i|a|l|o|g|>+0#00e0e07&| +0#0000000&@66
+|<+0#00e0e07&|d+0#af5f00255&|i|v|>+0#00e0e07&| +0#0000000&@69
+><+0#00e0e07&|d+0#af5f00255&|l|>+0#00e0e07&| +0#0000000&@70
+|<+0#00e0e07&|d+0#af5f00255&|t|>+0#00e0e07&| +0#0000000&@70
+|<+0#00e0e07&|e+0#af5f00255&|m|>+0#00e0e07&|.+4#0000000&@2|<+0#00e0e07&|/|e+0#af5f00255&|m|>+0#00e0e07&| +0#0000000&@62
+|<+0#00e0e07&|e+0#af5f00255&|m|b|e|d|>+0#00e0e07&| +0#0000000&@67
+|<+0#00e0e07&|f+0#af5f00255&|i|e|l|d|s|e|t|>+0#00e0e07&| +0#0000000&@64
+|<+0#00e0e07&|f+0#af5f00255&|i|g|c|a|p|t|i|o|n|>+0#00e0e07&| +0#0000000&@62
+|<+0#00e0e07&|f+0#af5f00255&|i|g|u|r|e|>+0#00e0e07&| +0#0000000&@66
+|<+0#00e0e07&|f+0#af5f00255&|o@1|t|e|r|>+0#00e0e07&| +0#0000000&@66
+|<+0#00e0e07&|f+0#af5f00255&|o|r|m|>+0#00e0e07&| +0#0000000&@68
+|<+0#00e0e07&|h+0#af5f00255&|1|>+0#00e0e07&|.+0#e000e06&@2|<+0#00e0e07&|/|h+0#af5f00255&|1|>+0#00e0e07&| +0#0000000&@62
+|<+0#00e0e07&|h+0#af5f00255&|2|>+0#00e0e07&|.+0#e000e06&@2|<+0#00e0e07&|/|h+0#af5f00255&|2|>+0#00e0e07&| +0#0000000&@62
+|<+0#00e0e07&|h+0#af5f00255&|3|>+0#00e0e07&|.+0#e000e06&@2|<+0#00e0e07&|/|h+0#af5f00255&|3|>+0#00e0e07&| +0#0000000&@62
+|<+0#00e0e07&|h+0#af5f00255&|4|>+0#00e0e07&|.+0#e000e06&@2|<+0#00e0e07&|/|h+0#af5f00255&|4|>+0#00e0e07&| +0#0000000&@62
+|<+0#00e0e07&|h+0#af5f00255&|5|>+0#00e0e07&|.+0#e000e06&@2|<+0#00e0e07&|/|h+0#af5f00255&|5|>+0#00e0e07&| +0#0000000&@62
+@57|3|7|,|1| @9|2|4|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/html_03.dump
@@ -0,0 +1,20 @@
+|<+0#00e0e07#ffffff0|h+0#af5f00255&|5|>+0#00e0e07&|.+0#e000e06&@2|<+0#00e0e07&|/|h+0#af5f00255&|5|>+0#00e0e07&| +0#0000000&@62
+|<+0#00e0e07&|h+0#af5f00255&|6|>+0#00e0e07&|.+0#e000e06&@2|<+0#00e0e07&|/|h+0#af5f00255&|6|>+0#00e0e07&| +0#0000000&@62
+|<+0#00e0e07&|h+0#af5f00255&|e|a|d|>+0#00e0e07&|.+0#e000e06&@2|<+0#00e0e07&|/|h+0#af5f00255&|e|a|d|>+0#00e0e07&| +0#0000000&@58
+|<+0#00e0e07&|h+0#af5f00255&|e|a|d|e|r|>+0#00e0e07&| +0#0000000&@66
+|<+0#00e0e07&|h+0#af5f00255&|g|r|o|u|p|>+0#00e0e07&| +0#0000000&@66
+><+0#00e0e07&|h+0#af5f00255&|r|>+0#00e0e07&| +0#0000000&@70
+|<+0#00e0e07&|h+0#af5f00255&|t|m|l|>+0#00e0e07&| +0#0000000&@68
+|<+0#00e0e07&|i+0#af5f00255&|>+0#00e0e07&|.+4#0000000&@2|<+0#00e0e07&|/|i+0#af5f00255&|>+0#00e0e07&| +0#0000000&@64
+|<+0#00e0e07&|i+0#af5f00255&|f|r|a|m|e|>+0#00e0e07&| +0#0000000&@66
+|<+0#00e0e07&|i+0#af5f00255&|m|g|>+0#00e0e07&| +0#0000000&@69
+|<+0#00e0e07&|i+0#af5f00255&|n|p|u|t|>+0#00e0e07&| +0#0000000&@67
+|<+0#00e0e07&|i+0#af5f00255&|n|s|>+0#00e0e07&| +0#0000000&@69
+|<+0#00e0e07&|k+0#af5f00255&|b|d|>+0#00e0e07&| +0#0000000&@69
+|<+0#00e0e07&|l+0#af5f00255&|a|b|e|l|>+0#00e0e07&| +0#0000000&@67
+|<+0#00e0e07&|l+0#af5f00255&|e|g|e|n|d|>+0#00e0e07&| +0#0000000&@66
+|<+0#00e0e07&|l+0#af5f00255&|i|>+0#00e0e07&| +0#0000000&@70
+|<+0#00e0e07&|l+0#af5f00255&|i|n|k|>+0#00e0e07&| +0#0000000&@68
+|<+0#00e0e07&|m+0#af5f00255&|a|i|n|>+0#00e0e07&| +0#0000000&@68
+|<+0#00e0e07&|m+0#af5f00255&|a|p|>+0#00e0e07&| +0#0000000&@69
+@57|5@1|,|1| @9|3|8|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/html_04.dump
@@ -0,0 +1,20 @@
+|<+0#00e0e07#ffffff0|m+0#af5f00255&|a|p|>+0#00e0e07&| +0#0000000&@69
+|<+0#00e0e07&|m+0#af5f00255&|a|r|k|>+0#00e0e07&| +0#0000000&@68
+|<+0#00e0e07&|m+0#af5f00255&|e|n|u|>+0#00e0e07&| +0#0000000&@68
+|<+0#00e0e07&|m+0#af5f00255&|e|t|a|>+0#00e0e07&| +0#0000000&@68
+|<+0#00e0e07&|m+0#af5f00255&|e|t|e|r|>+0#00e0e07&| +0#0000000&@67
+><+0#00e0e07&|n+0#af5f00255&|a|v|>+0#00e0e07&| +0#0000000&@69
+|<+0#00e0e07&|n+0#af5f00255&|o|s|c|r|i|p|t|>+0#00e0e07&| +0#0000000&@64
+|<+0#00e0e07&|o+0#af5f00255&|b|j|e|c|t|>+0#00e0e07&| +0#0000000&@66
+|<+0#00e0e07&|o+0#af5f00255&|l|>+0#00e0e07&| +0#0000000&@70
+|<+0#00e0e07&|o+0#af5f00255&|p|t|g|r|o|u|p|>+0#00e0e07&| +0#0000000&@64
+|<+0#00e0e07&|o+0#af5f00255&|p|t|i|o|n|>+0#00e0e07&| +0#0000000&@66
+|<+0#00e0e07&|o+0#af5f00255&|u|t|p|u|t|>+0#00e0e07&| +0#0000000&@66
+|<+0#00e0e07&|p+0#af5f00255&|>+0#00e0e07&| +0#0000000&@71
+|<+0#00e0e07&|p+0#af5f00255&|i|c|t|u|r|e|>+0#00e0e07&| +0#0000000&@65
+|<+0#00e0e07&|p+0#af5f00255&|r|e|>+0#00e0e07&|.+0#0000000&@2|<+0#00e0e07&|/|p+0#af5f00255&|r|e|>+0#00e0e07&| +0#0000000&@60
+|<+0#00e0e07&|p+0#af5f00255&|r|o|g|r|e|s@1|>+0#00e0e07&| +0#0000000&@64
+|<+0#00e0e07&|q+0#af5f00255&|>+0#00e0e07&| +0#0000000&@71
+|<+0#00e0e07&|r+0#af5f00255&|p|>+0#00e0e07&| +0#0000000&@70
+|<+0#00e0e07&|r+0#af5f00255&|t|>+0#00e0e07&| +0#0000000&@70
+@57|7|3|,|1| @9|5|2|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/html_05.dump
@@ -0,0 +1,20 @@
+|<+0#00e0e07#ffffff0|r+0#af5f00255&|t|>+0#00e0e07&| +0#0000000&@70
+|<+0#00e0e07&|r+0#af5f00255&|u|b|y|>+0#00e0e07&| +0#0000000&@68
+|<+0#00e0e07&|s+0#af5f00255&|>+0#00e0e07&|.+1024#0000000&@2|<+0#00e0e07&|/|s+0#af5f00255&|>+0#00e0e07&| +0#0000000&@64
+|<+0#00e0e07&|s+0#af5f00255&|a|m|p|>+0#00e0e07&| +0#0000000&@68
+|<+0#00e0e07&|s+0#af5f00255&|c|r|i|p|t|>+0#00e0e07&|.+0#e000e06&@2|<+0#00e0e07&|/|s+0#af5f00255&|c|r|i|p|t|>+0#00e0e07&| +0#0000000&@54
+><+0#00e0e07&|s+0#af5f00255&|e|a|r|c|h|>+0#00e0e07&| +0#0000000&@66
+|<+0#00e0e07&|s+0#af5f00255&|e|c|t|i|o|n|>+0#00e0e07&| +0#0000000&@65
+|<+0#00e0e07&|s+0#af5f00255&|e|l|e|c|t|>+0#00e0e07&| +0#0000000&@66
+|<+0#00e0e07&|s+0#af5f00255&|l|o|t|>+0#00e0e07&| +0#0000000&@68
+|<+0#00e0e07&|s+0#af5f00255&|m|a|l@1|>+0#00e0e07&| +0#0000000&@67
+|<+0#00e0e07&|s+0#af5f00255&|o|u|r|c|e|>+0#00e0e07&| +0#0000000&@66
+|<+0#00e0e07&|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@68
+|<+0#00e0e07&|s+0#af5f00255&|t|r|o|n|g|>+0#00e0e07&|.+2#0000000&@2|<+0#00e0e07&|/|s+0#af5f00255&|t|r|o|n|g|>+0#00e0e07&| +0#0000000&@54
+|<+0#00e0e07&|s+0#af5f00255&|t|y|l|e|>+0#00e0e07&|.+0#0000000&@2|<+0#00e0e07&|/|s+0#af5f00255&|t|y|l|e|>+0#00e0e07&| +0#0000000&@56
+|<+0#00e0e07&|s+0#af5f00255&|u|b|>+0#00e0e07&| +0#0000000&@69
+|<+0#00e0e07&|s+0#af5f00255&|u|m@1|a|r|y|>+0#00e0e07&| +0#0000000&@65
+|<+0#00e0e07&|s+0#af5f00255&|u|p|>+0#00e0e07&| +0#0000000&@69
+|<+0#00e0e07&|t+0#af5f00255&|a|b|l|e|>+0#00e0e07&| +0#0000000&@67
+|<+0#00e0e07&|t+0#af5f00255&|b|o|d|y|>+0#00e0e07&| +0#0000000&@67
+@57|9|1|,|1| @9|6@1|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/html_06.dump
@@ -0,0 +1,20 @@
+|<+0#00e0e07#ffffff0|t+0#af5f00255&|b|o|d|y|>+0#00e0e07&| +0#0000000&@67
+|<+0#00e0e07&|t+0#af5f00255&|d|>+0#00e0e07&| +0#0000000&@70
+|<+0#00e0e07&|t+0#af5f00255&|e|m|p|l|a|t|e|>+0#00e0e07&| +0#0000000&@64
+|<+0#00e0e07&|t+0#af5f00255&|e|x|t|a|r|e|a|>+0#00e0e07&| +0#0000000&@64
+|<+0#00e0e07&|t+0#af5f00255&|f|o@1|t|>+0#00e0e07&| +0#0000000&@67
+><+0#00e0e07&|t+0#af5f00255&|h|>+0#00e0e07&| +0#0000000&@70
+|<+0#00e0e07&|t+0#af5f00255&|h|e|a|d|>+0#00e0e07&| +0#0000000&@67
+|<+0#00e0e07&|t+0#af5f00255&|i|m|e|>+0#00e0e07&| +0#0000000&@68
+|<+0#00e0e07&|t+0#af5f00255&|i|t|l|e|>+0#00e0e07&|.+0#e000e06&@2|<+0#00e0e07&|/|t+0#af5f00255&|i|t|l|e|>+0#00e0e07&| +0#0000000&@56
+|<+0#00e0e07&|t+0#af5f00255&|r|>+0#00e0e07&| +0#0000000&@70
+|<+0#00e0e07&|t+0#af5f00255&|r|a|c|k|>+0#00e0e07&| +0#0000000&@67
+|<+0#00e0e07&|u+0#af5f00255&|>+0#00e0e07&|.+8#0000000&@2|<+0#00e0e07&|/|u+0#af5f00255&|>+0#00e0e07&| +0#0000000&@64
+|<+0#00e0e07&|u+0#af5f00255&|l|>+0#00e0e07&| +0#0000000&@70
+|<+0#00e0e07&|v+0#af5f00255&|a|r|>+0#00e0e07&| +0#0000000&@69
+|<+0#00e0e07&|v+0#af5f00255&|i|d|e|o|>+0#00e0e07&| +0#0000000&@67
+|<+0#00e0e07&|w+0#af5f00255&|b|r|>+0#00e0e07&| +0#0000000&@69
+|<+0#00e0e07&|x+0#af5f00255&|m|p|>+0#00e0e07&| +0#0000000&@69
+@75
+|<+0#0000e05&|!|-@1| |D|e|p|r|e|c|a|t|e|d| |E|l|e|m|e|n|t|s| |-@1|>| +0#0000000&@46
+@57|1|0|9|,|1| @8|8|1|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/html_07.dump
@@ -0,0 +1,20 @@
+|<+0#0000e05#ffffff0|!|-@1| |D|e|p|r|e|c|a|t|e|d| |E|l|e|m|e|n|t|s| |-@1|>| +0#0000000&@46
+|<+0#00e0e07&|a+0#af5f00255&|c|r|o|n|y|m|>+0#00e0e07&| +0#0000000&@65
+|<+0#00e0e07&|b+0#af5f00255&|i|g|>+0#00e0e07&| +0#0000000&@69
+|<+0#00e0e07&|c+0#af5f00255&|e|n|t|e|r|>+0#00e0e07&| +0#0000000&@66
+|<+0#00e0e07&|d+0#af5f00255&|i|r|>+0#00e0e07&| +0#0000000&@69
+><+0#00e0e07&|f+0#af5f00255&|o|n|t|>+0#00e0e07&| +0#0000000&@68
+|<+0#00e0e07&|f+0#af5f00255&|r|a|m|e|>+0#00e0e07&| +0#0000000&@67
+|<+0#00e0e07&|f+0#af5f00255&|r|a|m|e|s|e|t|>+0#00e0e07&| +0#0000000&@64
+|<+0#00e0e07&|m+0#af5f00255&|a|r|q|u|e@1|>+0#00e0e07&| +0#0000000&@65
+|<+0#00e0e07&|m+0#af5f00255&|e|n|u|i|t|e|m|>+0#00e0e07&| +0#0000000&@64
+|<+0#00e0e07&|n+0#af5f00255&|o|b|r|>+0#00e0e07&| +0#0000000&@68
+|<+0#00e0e07&|n+0#af5f00255&|o|f|r|a|m|e|s|>+0#00e0e07&| +0#0000000&@64
+|<+0#00e0e07&|p+0#af5f00255&|a|r|a|m|>+0#00e0e07&| +0#0000000&@67
+|<+0#00e0e07&|r+0#af5f00255&|b|>+0#00e0e07&| +0#0000000&@70
+|<+0#00e0e07&|r+0#af5f00255&|t|c|>+0#00e0e07&| +0#0000000&@69
+|<+0#00e0e07&|s+0#af5f00255&|t|r|i|k|e|>+0#00e0e07&|.+1024#0000000&@2|<+0#00e0e07&|/|s+0#af5f00255&|t|r|i|k|e|>+0#00e0e07&| +0#0000000&@54
+|<+0#00e0e07&|t+0#af5f00255&@1|>+0#00e0e07&| +0#0000000&@70
+@75
+|<+0#0000e05&|!|-@1| |N|o|t|e|:| |t|h|e|s|e| |d|e|p|r|e|c|a|t|e|d| |e|l|e|m|e|n|t|s| |h|a|v|e| |n|e|v|e|r| |b|e@1|n| |m|a|t|c|h|e|d| |-@1|>| +0#0000000&@10
+@57|1|2|7|,|1| @8|9|5|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/html_99.dump
@@ -0,0 +1,20 @@
+|<+0#00e0e07#ffffff0|f+0#af5f00255&|r|a|m|e|>+0#00e0e07&| +0#0000000&@67
+|<+0#00e0e07&|f+0#af5f00255&|r|a|m|e|s|e|t|>+0#00e0e07&| +0#0000000&@64
+|<+0#00e0e07&|m+0#af5f00255&|a|r|q|u|e@1|>+0#00e0e07&| +0#0000000&@65
+|<+0#00e0e07&|m+0#af5f00255&|e|n|u|i|t|e|m|>+0#00e0e07&| +0#0000000&@64
+|<+0#00e0e07&|n+0#af5f00255&|o|b|r|>+0#00e0e07&| +0#0000000&@68
+|<+0#00e0e07&|n+0#af5f00255&|o|f|r|a|m|e|s|>+0#00e0e07&| +0#0000000&@64
+|<+0#00e0e07&|p+0#af5f00255&|a|r|a|m|>+0#00e0e07&| +0#0000000&@67
+|<+0#00e0e07&|r+0#af5f00255&|b|>+0#00e0e07&| +0#0000000&@70
+|<+0#00e0e07&|r+0#af5f00255&|t|c|>+0#00e0e07&| +0#0000000&@69
+|<+0#00e0e07&|s+0#af5f00255&|t|r|i|k|e|>+0#00e0e07&|.+1024#0000000&@2|<+0#00e0e07&|/|s+0#af5f00255&|t|r|i|k|e|>+0#00e0e07&| +0#0000000&@54
+|<+0#00e0e07&|t+0#af5f00255&@1|>+0#00e0e07&| +0#0000000&@70
+@75
+|<+0#0000e05&|!|-@1| |N|o|t|e|:| |t|h|e|s|e| |d|e|p|r|e|c|a|t|e|d| |e|l|e|m|e|n|t|s| |h|a|v|e| |n|e|v|e|r| |b|e@1|n| |m|a|t|c|h|e|d| |-@1|>| +0#0000000&@10
+|<+0#00e0e07&|i+0#0000000&|m|a|g|e|>+0#00e0e07&| +0#0000000&@67
+|<+0#00e0e07&|n+0#0000000&|o|e|m|b|e|d|>+0#00e0e07&| +0#0000000&@65
+|<+0#00e0e07&|p+0#0000000&|l|a|i|n|t|e|x|t|>+0#00e0e07&| +0#0000000&@63
+@75
+|<+0#0000e05&|!|-@1| |E|x|p|e|r|i|m|e|n|t|a|l| |-@1|>| +0#0000000&@53
+><+0#00e0e07&|p+0#0000000&|o|r|t|a|l|>+0#00e0e07&| +0#0000000&@66
+@57|1|4|6|,|1| @8|B|o|t| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/input/html.html
@@ -0,0 +1,146 @@
+<!--
+  HTML Syntax Test File
+  Maintainer: Doug Kearns <dougkearns@gmail.com>
+  Last Change: 2023 Nov 28
+-->
+
+<!-- HTML Elements -->
+<a>
+<abbr>
+<address>
+<area>
+<article>
+<aside>
+<audio>
+<b>...</b>
+<base>
+<bdi>
+<bdo>
+<blockquote>
+<body>
+<br>
+<button>
+<canvas>
+<caption>
+<cite>
+<code>
+<col>
+<colgroup>
+<data>
+<datalist>
+<dd>
+<del>...</del>
+<details>
+<dfn>
+<dialog>
+<div>
+<dl>
+<dt>
+<em>...</em>
+<embed>
+<fieldset>
+<figcaption>
+<figure>
+<footer>
+<form>
+<h1>...</h1>
+<h2>...</h2>
+<h3>...</h3>
+<h4>...</h4>
+<h5>...</h5>
+<h6>...</h6>
+<head>...</head>
+<header>
+<hgroup>
+<hr>
+<html>
+<i>...</i>
+<iframe>
+<img>
+<input>
+<ins>
+<kbd>
+<label>
+<legend>
+<li>
+<link>
+<main>
+<map>
+<mark>
+<menu>
+<meta>
+<meter>
+<nav>
+<noscript>
+<object>
+<ol>
+<optgroup>
+<option>
+<output>
+<p>
+<picture>
+<pre>...</pre>
+<progress>
+<q>
+<rp>
+<rt>
+<ruby>
+<s>...</s>
+<samp>
+<script>...</script>
+<search>
+<section>
+<select>
+<slot>
+<small>
+<source>
+<span>
+<strong>...</strong>
+<style>...</style>
+<sub>
+<summary>
+<sup>
+<table>
+<tbody>
+<td>
+<template>
+<textarea>
+<tfoot>
+<th>
+<thead>
+<time>
+<title>...</title>
+<tr>
+<track>
+<u>...</u>
+<ul>
+<var>
+<video>
+<wbr>
+<xmp>
+
+<!-- Deprecated Elements -->
+<acronym>
+<big>
+<center>
+<dir>
+<font>
+<frame>
+<frameset>
+<marquee>
+<menuitem>
+<nobr>
+<noframes>
+<param>
+<rb>
+<rtc>
+<strike>...</strike>
+<tt>
+
+<!-- Note: these deprecated elements have never been matched -->
+<image>
+<noembed>
+<plaintext>
+
+<!-- Experimental -->
+<portal>