runtime(java): Improve the recognition of literals (#14120)

Commit: 
https://github.com/vim/vim/commit/100a665634a0a2edbc755daf453c4915800684dd
Author: Aliaksei Budavei <[email protected]>
Date:   Sat Mar 2 01:11:14 2024 +0300

    runtime(java): Improve the recognition of literals 
(https://github.com/vim/vim/issues/14120)
    
    * Emend the Unicode and octal escape sequence patterns;
    * Accept the (repeated) underscore separators in all
      numerical literals;
    * Recognise hexadecimal floating-point literals.
    
    (The space escape sequence '\s' will be introduced along
    with text blocks in another PR.)
    
    References:
    https://docs.oracle.com/javase/specs/jls/se17/html/jls-3.html#jls-3.3
    https://docs.oracle.com/javase/specs/jls/se17/html/jls-3.html#jls-3.10.1
    https://docs.oracle.com/javase/specs/jls/se17/html/jls-3.html#jls-3.10.2
    https://docs.oracle.com/javase/specs/jls/se17/html/jls-3.html#jls-3.10.7
    
    
    Signed-off-by: Aliaksei Budavei <[email protected]>
    Signed-off-by: Christian Brabandt <[email protected]>

diff --git a/runtime/syntax/java.vim b/runtime/syntax/java.vim
index 1b940ebd3..aec295553 100644
--- a/runtime/syntax/java.vim
+++ b/runtime/syntax/java.vim
@@ -2,7 +2,7 @@
 " Language:    Java
 " Maintainer:  Claudio Fleiner <[email protected]>
 " URL:          
https://github.com/fleiner/vim/blob/master/runtime/syntax/java.vim
-" Last Change: 2024 Feb 27
+" Last Change: 2024 Mar 01
 
 " Please check :help java.vim for comments on some of the options available.
 
@@ -226,20 +226,28 @@ syn match   javaComment            "/\*\*/"
 " Strings and constants
 syn match   javaSpecialError    contained "\."
 syn match   javaSpecialCharError contained "[^']"
-syn match   javaSpecialChar     contained 
"\\([4-9]\d\|[0-3]\d\d\|[\"\'ntbrf]\|u\x\{4\}\)"
+" Escape Sequences (JLS-17, §3.10.7):
+syn match   javaSpecialChar     contained 
"\\%(u\x\x\x\x\|[0-3]\o\o\|\o\o\=\|[btnfr"'\]\)"
 syn region  javaString         start=+"+ end=+"+ end=+$+ 
contains=javaSpecialChar,javaSpecialError,@Spell
-" next line disabled, it can cause a crash for a long line
+" The next line is commented out, it can cause a crash for a long line
 "syn match   javaStringError     +"\([^"\]\|\.\)*$+
 syn match   javaCharacter       "'[^']*'" 
contains=javaSpecialChar,javaSpecialCharError
 syn match   javaCharacter       "'\''" contains=javaSpecialChar
 syn match   javaCharacter       "'[^\]'"
-syn match   javaNumber          
"\<\(0[bB][0-1]\+\|0[0-7]*\|0[xX]\x\+\|\d\(\d\|_\d\)*\)[lL]\=\>"
-syn match   javaNumber          
"\(\<\d\(\d\|_\d\)*\.\(\d\(\d\|_\d\)*\)\=\|\.\d\(\d\|_\d\)*\)\([eE][-+]\=\d\(\d\|_\d\)*\)\=[fFdD]\="
-syn match   javaNumber          
"\<\d\(\d\|_\d\)*[eE][-+]\=\d\(\d\|_\d\)*[fFdD]\=\>"
-syn match   javaNumber          
"\<\d\(\d\|_\d\)*\([eE][-+]\=\d\(\d\|_\d\)*\)\=[fFdD]\>"
-
-" unicode characters
-syn match   javaSpecial "\u\d\{4\}"
+" Integer literals (JLS-17, §3.10.1):
+syn keyword javaNumber          0 0l 0L
+syn match   javaNumber          
"\<\%(0\%([xX]\x\%(_*\x\)*\|_*\o\%(_*\o\)*\|[bB][01]\%(_*[01]\)*\)\|[1-9]\%(_*\d\)*\)[lL]\=\>"
+" Decimal floating-point literals (JLS-17, §3.10.2):
+" Against "\<\d\+\>\.":
+syn match   javaNumber          "\<\d\%(_*\d\)*\."
+syn match   javaNumber          
"\%(\<\d\%(_*\d\)*\.\%(\d\%(_*\d\)*\)\=\|\.\d\%(_*\d\)*\)\%([eE][-+]\=\d\%(_*\d\)*\)\=[fFdD]\=\>"
+syn match   javaNumber          
"\<\d\%(_*\d\)*[eE][-+]\=\d\%(_*\d\)*[fFdD]\=\>"
+syn match   javaNumber          
"\<\d\%(_*\d\)*\%([eE][-+]\=\d\%(_*\d\)*\)\=[fFdD]\>"
+" Hexadecimal floating-point literals (JLS-17, §3.10.2):
+syn match   javaNumber          
"\<0[xX]\%(\x\%(_*\x\)*\.\=\|\%(\x\%(_*\x\)*\)\=\.\x\%(_*\x\)*\)[pP][-+]\=\d\%(_*\d\)*[fFdD]\=\>"
+
+" Unicode characters
+syn match   javaSpecial "\u\x\x\x\x"
 
 syn cluster javaTop 
add=javaString,javaCharacter,javaNumber,javaSpecial,javaStringError
 
@@ -265,16 +273,19 @@ endif
 if exists("java_highlight_debug")
 
   " Strings and constants
-  syn match   javaDebugSpecial         contained "\\d\d\d\|\."
+  syn match   javaDebugSpecial         contained 
"\\%(u\x\x\x\x\|[0-3]\o\o\|\o\o\=\|[btnfr"'\]\)"
   syn region  javaDebugString          contained start=+"+  end=+"+  
contains=javaDebugSpecial
-  syn match   javaDebugStringError     +"\([^"\]\|\.\)*$+
+  syn match   javaDebugStringError     contained +"\%([^"\]\|\.\)*$+
   syn match   javaDebugCharacter       contained "'[^\]'"
   syn match   javaDebugSpecialCharacter contained "'\.'"
   syn match   javaDebugSpecialCharacter contained "'\''"
-  syn match   javaDebugNumber          contained 
"\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
-  syn match   javaDebugNumber          contained 
"\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
-  syn match   javaDebugNumber          contained 
"\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
-  syn match   javaDebugNumber          contained 
"\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
+  syn keyword javaDebugNumber          contained 0 0l 0L
+  syn match   javaNumber               contained "\<\d\%(_*\d\)*\."
+  syn match   javaDebugNumber          contained 
"\<\%(0\%([xX]\x\%(_*\x\)*\|_*\o\%(_*\o\)*\|[bB][01]\%(_*[01]\)*\)\|[1-9]\%(_*\d\)*\)[lL]\=\>"
+  syn match   javaDebugNumber          contained 
"\%(\<\d\%(_*\d\)*\.\%(\d\%(_*\d\)*\)\=\|\.\d\%(_*\d\)*\)\%([eE][-+]\=\d\%(_*\d\)*\)\=[fFdD]\=\>"
+  syn match   javaDebugNumber          contained 
"\<\d\%(_*\d\)*[eE][-+]\=\d\%(_*\d\)*[fFdD]\=\>"
+  syn match   javaDebugNumber          contained 
"\<\d\%(_*\d\)*\%([eE][-+]\=\d\%(_*\d\)*\)\=[fFdD]\>"
+  syn match   javaDebugNumber          contained 
"\<0[xX]\%(\x\%(_*\x\)*\.\=\|\%(\x\%(_*\x\)*\)\=\.\x\%(_*\x\)*\)[pP][-+]\=\d\%(_*\d\)*[fFdD]\=\>"
   syn keyword javaDebugBoolean         contained true false
   syn keyword javaDebugType            contained null this super
   syn region javaDebugParen  start=+(+ end=+)+ contained 
contains=javaDebug.*,javaDebugParen
diff --git a/runtime/syntax/testdir/dumps/java_escapes_00.dump 
b/runtime/syntax/testdir/dumps/java_escapes_00.dump
new file mode 100644
index 000000000..3db803d41
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_escapes_00.dump
@@ -0,0 +1,20 @@
+>c+0#00e0003#ffffff0|l|a|s@1| +0#0000000&|E|s|c|a|p|e|s|T|e|s|t|s| @56
+|{| @2|/+0#0000e05&@1| |j|a|v|a|p| |-|c|o|n|s|t|a|n|t|s| 
|E|s|c|a|p|e|s|T|e|s|t|s|.|c|l|a|s@1| +0#0000000&@32
+@4|/+0#0000e05&@1| |s|t|a|t|i|c| |f|i|n|a|l| |S|t|r|i|n|g| |h|e|l@1|o| |=| 
|"|h|e|l@1|o|"|;| +0#0000000&@31
+@4|\+0#e000e06&|u|0@1|7|3|\|u|0@1|7|4|\|u|0@1|6|1|\|u|0@1|7|4|\|u|0@1|6|9|\|u|0@1|6|3|
 +0#0000000&@34
+@4|\+0#e000e06&|u|0@1|6@1|\|u|0@1|6|9|\|u|0@1|6|e|\|u|0@1|6|1|\|u|0@1|6|c| 
+0#0000000&@40
+@4|\+0#e000e06&|u|0@1|5|3|\|u|0@1|7|4|\|u|0@1|7|2|\|u|0@1|6|9|\|u|0@1|6|e|\|u|0@1|6|7|
 +0#0000000&@34
+@4|\+0#e000e06&|u|0@1|6|8|\|u|0@1|6|5|\|u|0@1|6|c|\|u|0@1|6|c|\|u|0@1|6|f| 
+0#0000000&@40
+@4|\+0#e000e06&|u|0@1|3|d| +0#0000000&@64
+@4|\+0#e000e06&|u|0@1|2@1|\|u|0@1|6|8|\|u|0@1|6|5|\|u|0@1|6|c|\|u|0@1|6|c|\|u|0@1|6|f|\|u|0@1|2@1|
 +0#0000000&@28
+@4|\+0#e000e06&|u|0@1|3|b| +0#0000000&@64
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|{| @62
+@8|c+0#00e0003&|h|a|r| +0#0000000&|e@1|[|]| |=| |{| @53
+@12|'+0#e000002&|\+0#e000e06&|b|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|t|'+0#e000002&|,+0#0000000&| @51
+@12|'+0#e000002&|\+0#e000e06&|n|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|f|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|r|'+0#e000002&|,+0#0000000&| @45
+@12|'+0#e000002&|\+0#e000e06&|"|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|'|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&@1|'+0#e000002&|,+0#0000000&| @45
+@8|}|;| @64
+@75
+@8|S|y|s|t|e|m|.|o|u|t|.|p|r|i|n|t|l|n|(|n+0#af5f00255&|e|w| 
+0#0000000&|S|t|r|i|n|g|[|]| |{| @33
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/java_escapes_01.dump 
b/runtime/syntax/testdir/dumps/java_escapes_01.dump
new file mode 100644
index 000000000..8d2c395ad
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_escapes_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@11|'+0#e000002&|\+0#e000e06&|b|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|t|'+0#e000002&|,+0#0000000&| @51
+@12|'+0#e000002&|\+0#e000e06&|n|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|f|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|r|'+0#e000002&|,+0#0000000&| @45
+@12|'+0#e000002&|\+0#e000e06&|"|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|'|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&@1|'+0#e000002&|,+0#0000000&| @45
+@8|}|;| @64
+@75
+@8>S|y|s|t|e|m|.|o|u|t|.|p|r|i|n|t|l|n|(|n+0#af5f00255&|e|w| 
+0#0000000&|S|t|r|i|n|g|[|]| |{| @33
+@12|"+0#e000002&|\+0#e000e06&|b|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|t|"+0#e000002&|,+0#0000000&| @51
+@12|"+0#e000002&|\+0#e000e06&|n|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|f|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|r|"+0#e000002&|,+0#0000000&| @45
+@12|"+0#e000002&|\+0#e000e06&|"|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|'|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&@1|"+0#e000002&|,+0#0000000&| @45
+@8|}|)|;| @63
+@75
+@8|c+0#00e0003&|h|a|r| +0#0000000&|o@1|[|]| |=| |{| @53
+@12|'+0#e000002&|\+0#e000e06&|0|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|4|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|5|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|6|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|7|'+0#e000002&|,+0#0000000&| @15
+@75
+@8|'+0#e000002&|\+0#e000e06&|0@1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|3|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|4|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|5|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|6|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|7|'+0#e000002&|,+0#0000000&| @11
+@75
+@4|'+0#e000002&|\+0#e000e06&|0@2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0@1|1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0@1|2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0@1|3|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0@1|4|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0@1|5|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0@1|6|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0@1|7|'+0#e000002&|,+0#0000000&| @7
+@75
+@8|'+0#e000002&|\+0#e000e06&|1|0|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1@1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|3|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|4|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|5|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|6|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|7|'+0#e000002&|,+0#0000000&| @11
+@57|1|9|,|3|-|9| @7|1|2|%| 
diff --git a/runtime/syntax/testdir/dumps/java_escapes_02.dump 
b/runtime/syntax/testdir/dumps/java_escapes_02.dump
new file mode 100644
index 000000000..da8b1a975
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_escapes_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|'+0#e000002&|\+0#e000e06&|1|0|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1@1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|3|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|4|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|5|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|6|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|7|'+0#e000002&|,+0#0000000&| @11
+@8|'+0#e000002&|\+0#e000e06&|2|0|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2@1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|3|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|4|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|5|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|6|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|7|'+0#e000002&|,+0#0000000&| @11
+@8|'+0#e000002&|\+0#e000e06&|3|0|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3@1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|4|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|5|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|6|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|7|'+0#e000002&|,+0#0000000&| @11
+@8|'+0#e000002&|\+0#e000e06&|4|0|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|4|1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|4|2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|4|3|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|4@1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|4|5|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|4|6|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|4|7|'+0#e000002&|,+0#0000000&| @11
+@8|'+0#e000002&|\+0#e000e06&|5|0|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|5|1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|5|2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|5|3|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|5|4|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|5@1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|5|6|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|5|7|'+0#e000002&|,+0#0000000&| @11
+@8>'+0#e000002&|\+0#e000e06&|6|0|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|6|1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|6|2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|6|3|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|6|4|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|6|5|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|6@1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|6|7|'+0#e000002&|,+0#0000000&| @11
+@8|'+0#e000002&|\+0#e000e06&|7|0|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|7|1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|7|2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|7|3|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|7|4|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|7|5|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|7|6|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|7@1|'+0#e000002&|,+0#0000000&| @11
+@75
+@4|'+0#e000002&|\+0#e000e06&|0|1|0|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|1@1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|1|2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|1|3|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|1|4|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|1|5|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|1|6|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|1|7|'+0#e000002&|,+0#0000000&| @7
+@4|'+0#e000002&|\+0#e000e06&|0|2|0|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|2|1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|2@1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|2|3|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|2|4|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|2|5|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|2|6|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|2|7|'+0#e000002&|,+0#0000000&| @7
+@4|'+0#e000002&|\+0#e000e06&|0|3|0|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|3|1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|3|2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|3@1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|3|4|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|3|5|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|3|6|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|3|7|'+0#e000002&|,+0#0000000&| @7
+@4|'+0#e000002&|\+0#e000e06&|0|4|0|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|4|1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|4|2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|4|3|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|4@1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|4|5|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|4|6|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|4|7|'+0#e000002&|,+0#0000000&| @7
+@4|'+0#e000002&|\+0#e000e06&|0|5|0|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|5|1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|5|2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|5|3|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|5|4|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|5@1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|5|6|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|5|7|'+0#e000002&|,+0#0000000&| @7
+@4|'+0#e000002&|\+0#e000e06&|0|6|0|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|6|1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|6|2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|6|3|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|6|4|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|6|5|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|6@1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|6|7|'+0#e000002&|,+0#0000000&| @7
+@4|'+0#e000002&|\+0#e000e06&|0|7|0|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|7|1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|7|2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|7|3|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|7|4|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|7|5|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|7|6|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|7@1|'+0#e000002&|,+0#0000000&| @7
+@75
+@4|'+0#e000002&|\+0#e000e06&|1|0@1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|0|1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|0|2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|0|3|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|0|4|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|0|5|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|0|6|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|0|7|'+0#e000002&|,+0#0000000&| @7
+@4|'+0#e000002&|\+0#e000e06&|1@1|0|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1@2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1@1|2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1@1|3|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1@1|4|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1@1|5|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1@1|6|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1@1|7|'+0#e000002&|,+0#0000000&| @7
+@4|'+0#e000002&|\+0#e000e06&|1|2|0|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|2|1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|2@1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|2|3|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|2|4|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|2|5|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|2|6|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|2|7|'+0#e000002&|,+0#0000000&| @7
+@57|3|7|,|3|-|9| @7|2|9|%| 
diff --git a/runtime/syntax/testdir/dumps/java_escapes_03.dump 
b/runtime/syntax/testdir/dumps/java_escapes_03.dump
new file mode 100644
index 000000000..920ab1c33
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_escapes_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|'+0#e000002&|\+0#e000e06&|1|2|0|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|2|1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|2@1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|2|3|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|2|4|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|2|5|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|2|6|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|2|7|'+0#e000002&|,+0#0000000&| @7
+@4|'+0#e000002&|\+0#e000e06&|1|3|0|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|3|1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|3|2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|3@1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|3|4|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|3|5|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|3|6|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|3|7|'+0#e000002&|,+0#0000000&| @7
+@4|'+0#e000002&|\+0#e000e06&|1|4|0|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|4|1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|4|2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|4|3|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|4@1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|4|5|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|4|6|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|4|7|'+0#e000002&|,+0#0000000&| @7
+@4|'+0#e000002&|\+0#e000e06&|1|5|0|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|5|1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|5|2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|5|3|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|5|4|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|5@1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|5|6|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|5|7|'+0#e000002&|,+0#0000000&| @7
+@4|'+0#e000002&|\+0#e000e06&|1|6|0|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|6|1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|6|2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|6|3|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|6|4|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|6|5|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|6@1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|6|7|'+0#e000002&|,+0#0000000&| @7
+@4>'+0#e000002&|\+0#e000e06&|1|7|0|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|7|1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|7|2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|7|3|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|7|4|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|7|5|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|7|6|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|1|7@1|'+0#e000002&|,+0#0000000&| @7
+@4|'+0#e000002&|\+0#e000e06&|2|0@1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|0|1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|0|2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|0|3|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|0|4|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|0|5|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|0|6|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|0|7|'+0#e000002&|,+0#0000000&| @7
+@4|'+0#e000002&|\+0#e000e06&|2|1|0|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|1@1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|1|2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|1|3|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|1|4|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|1|5|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|1|6|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|1|7|'+0#e000002&|,+0#0000000&| @7
+@4|'+0#e000002&|\+0#e000e06&|2@1|0|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2@1|1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2@2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2@1|3|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2@1|4|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2@1|5|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2@1|6|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2@1|7|'+0#e000002&|,+0#0000000&| @7
+@4|'+0#e000002&|\+0#e000e06&|2|3|0|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|3|1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|3|2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|3@1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|3|4|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|3|5|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|3|6|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|3|7|'+0#e000002&|,+0#0000000&| @7
+@4|'+0#e000002&|\+0#e000e06&|2|4|0|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|4|1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|4|2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|4|3|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|4@1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|4|5|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|4|6|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|4|7|'+0#e000002&|,+0#0000000&| @7
+@4|'+0#e000002&|\+0#e000e06&|2|5|0|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|5|1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|5|2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|5|3|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|5|4|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|5@1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|5|6|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|5|7|'+0#e000002&|,+0#0000000&| @7
+@4|'+0#e000002&|\+0#e000e06&|2|6|0|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|6|1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|6|2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|6|3|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|6|4|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|6|5|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|6@1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|6|7|'+0#e000002&|,+0#0000000&| @7
+@4|'+0#e000002&|\+0#e000e06&|2|7|0|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|7|1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|7|2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|7|3|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|7|4|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|7|5|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|7|6|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|2|7@1|'+0#e000002&|,+0#0000000&| @7
+@4|'+0#e000002&|\+0#e000e06&|3|0@1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|0|1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|0|2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|0|3|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|0|4|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|0|5|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|0|6|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|0|7|'+0#e000002&|,+0#0000000&| @7
+@4|'+0#e000002&|\+0#e000e06&|3|1|0|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|1@1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|1|2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|1|3|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|1|4|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|1|5|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|1|6|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|1|7|'+0#e000002&|,+0#0000000&| @7
+@4|'+0#e000002&|\+0#e000e06&|3|2|0|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|2|1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|2@1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|2|3|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|2|4|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|2|5|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|2|6|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|2|7|'+0#e000002&|,+0#0000000&| @7
+@4|'+0#e000002&|\+0#e000e06&|3@1|0|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3@1|1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3@1|2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3@2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3@1|4|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3@1|5|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3@1|6|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3@1|7|'+0#e000002&|,+0#0000000&| @7
+@4|'+0#e000002&|\+0#e000e06&|3|4|0|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|4|1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|4|2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|4|3|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|4@1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|4|5|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|4|6|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|4|7|'+0#e000002&|,+0#0000000&| @7
+@57|5@1|,|2|-|5| @7|4|7|%| 
diff --git a/runtime/syntax/testdir/dumps/java_escapes_04.dump 
b/runtime/syntax/testdir/dumps/java_escapes_04.dump
new file mode 100644
index 000000000..79f11f1f0
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_escapes_04.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|'+0#e000002&|\+0#e000e06&|3|4|0|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|4|1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|4|2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|4|3|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|4@1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|4|5|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|4|6|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|4|7|'+0#e000002&|,+0#0000000&| @7
+@4|'+0#e000002&|\+0#e000e06&|3|5|0|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|5|1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|5|2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|5|3|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|5|4|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|5@1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|5|6|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|5|7|'+0#e000002&|,+0#0000000&| @7
+@4|'+0#e000002&|\+0#e000e06&|3|6|0|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|6|1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|6|2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|6|3|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|6|4|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|6|5|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|6@1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|6|7|'+0#e000002&|,+0#0000000&| @7
+@4|'+0#e000002&|\+0#e000e06&|3|7|0|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|7|1|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|7|2|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|7|3|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|7|4|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|7|5|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|7|6|'+0#e000002&|,+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|3|7@1|'+0#e000002&|,+0#0000000&| @7
+@8|}|;| @64
+> @74
+@8|S|y|s|t|e|m|.|o|u|t|.|p|r|i|n|t|l|n|(|n+0#af5f00255&|e|w| 
+0#0000000&|S|t|r|i|n|g|[|]| |{| @33
+@12|"+0#e000002&|\+0#e000e06&|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|7|"+0#e000002&|,+0#0000000&| @15
+@75
+@8|"+0#e000002&|\+0#e000e06&|0@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|7|"+0#e000002&|,+0#0000000&| @11
+@75
+@4|"+0#e000002&|\+0#e000e06&|0@2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0@1|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0@1|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0@1|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0@1|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0@1|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0@1|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0@1|7|"+0#e000002&|,+0#0000000&| @7
+@75
+@8|"+0#e000002&|\+0#e000e06&|1|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|7|"+0#e000002&|,+0#0000000&| @11
+@8|"+0#e000002&|\+0#e000e06&|2|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|7|"+0#e000002&|,+0#0000000&| @11
+@8|"+0#e000002&|\+0#e000e06&|3|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|7|"+0#e000002&|,+0#0000000&| @11
+@8|"+0#e000002&|\+0#e000e06&|4|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|4|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|4|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|4|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|4@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|4|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|4|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|4|7|"+0#e000002&|,+0#0000000&| @11
+@8|"+0#e000002&|\+0#e000e06&|5|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|5|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|5|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|5|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|5|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|5@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|5|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|5|7|"+0#e000002&|,+0#0000000&| @11
+@8|"+0#e000002&|\+0#e000e06&|6|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|6|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|6|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|6|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|6|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|6|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|6@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|6|7|"+0#e000002&|,+0#0000000&| @11
+@57|7|3|,|0|-|1| @7|6|4|%| 
diff --git a/runtime/syntax/testdir/dumps/java_escapes_05.dump 
b/runtime/syntax/testdir/dumps/java_escapes_05.dump
new file mode 100644
index 000000000..487198aff
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_escapes_05.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|"+0#e000002&|\+0#e000e06&|6|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|6|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|6|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|6|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|6|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|6|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|6@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|6|7|"+0#e000002&|,+0#0000000&| @11
+@8|"+0#e000002&|\+0#e000e06&|7|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|7|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|7|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|7|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|7|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|7|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|7|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|7@1|"+0#e000002&|,+0#0000000&| @11
+@75
+@4|"+0#e000002&|\+0#e000e06&|0|1|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|1@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|1|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|1|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|1|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|1|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|1|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|1|7|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|0|2|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|2|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|2@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|2|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|2|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|2|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|2|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|2|7|"+0#e000002&|,+0#0000000&| @7
+@4>"+0#e000002&|\+0#e000e06&|0|3|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|3|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|3|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|3@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|3|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|3|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|3|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|3|7|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|0|4|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|4|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|4|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|4|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|4@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|4|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|4|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|4|7|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|0|5|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|5|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|5|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|5|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|5|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|5@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|5|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|5|7|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|0|6|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|6|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|6|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|6|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|6|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|6|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|6@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|6|7|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|0|7|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|7|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|7|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|7|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|7|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|7|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|7|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|0|7@1|"+0#e000002&|,+0#0000000&| @7
+@75
+@4|"+0#e000002&|\+0#e000e06&|1|0@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|0|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|0|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|0|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|0|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|0|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|0|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|0|7|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|1@1|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1@2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1@1|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1@1|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1@1|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1@1|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1@1|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1@1|7|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|1|2|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|2|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|2@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|2|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|2|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|2|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|2|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|2|7|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|1|3|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|3|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|3|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|3@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|3|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|3|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|3|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|3|7|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|1|4|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|4|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|4|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|4|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|4@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|4|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|4|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|4|7|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|1|5|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|5|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|5|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|5|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|5|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|5@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|5|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|5|7|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|1|6|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|6|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|6|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|6|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|6|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|6|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|6@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|6|7|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|1|7|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|7|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|7|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|7|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|7|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|7|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|7|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|7@1|"+0#e000002&|,+0#0000000&| @7
+@57|9|1|,|2|-|5| @7|8|1|%| 
diff --git a/runtime/syntax/testdir/dumps/java_escapes_06.dump 
b/runtime/syntax/testdir/dumps/java_escapes_06.dump
new file mode 100644
index 000000000..01d73c54e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_escapes_06.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|"+0#e000002&|\+0#e000e06&|1|7|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|7|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|7|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|7|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|7|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|7|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|7|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|1|7@1|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|2|0@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|0|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|0|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|0|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|0|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|0|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|0|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|0|7|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|2|1|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|1@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|1|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|1|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|1|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|1|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|1|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|1|7|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|2@1|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2@1|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2@2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2@1|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2@1|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2@1|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2@1|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2@1|7|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|2|3|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|3|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|3|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|3@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|3|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|3|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|3|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|3|7|"+0#e000002&|,+0#0000000&| @7
+@4>"+0#e000002&|\+0#e000e06&|2|4|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|4|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|4|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|4|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|4@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|4|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|4|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|4|7|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|2|5|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|5|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|5|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|5|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|5|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|5@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|5|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|5|7|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|2|6|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|6|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|6|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|6|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|6|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|6|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|6@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|6|7|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|2|7|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|7|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|7|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|7|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|7|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|7|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|7|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|7@1|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|3|0@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|0|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|0|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|0|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|0|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|0|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|0|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|0|7|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|3|1|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|1@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|1|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|1|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|1|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|1|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|1|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|1|7|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|3|2|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|2|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|2@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|2|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|2|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|2|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|2|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|2|7|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|3@1|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3@1|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3@1|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3@2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3@1|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3@1|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3@1|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3@1|7|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|3|4|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|4|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|4|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|4|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|4@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|4|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|4|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|4|7|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|3|5|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|5|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|5|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|5|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|5|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|5@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|5|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|5|7|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|3|6|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|6|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|6|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|6|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|6|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|6|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|6@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|6|7|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|3|7|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|7|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|7|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|7|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|7|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|7|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|7|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|7@1|"+0#e000002&|,+0#0000000&| @7
+@8|}|)|;| @63
+@4|}| @69
+@57|1|0|9|,|2|-|5| @6|9@1|%| 
diff --git a/runtime/syntax/testdir/dumps/java_escapes_99.dump 
b/runtime/syntax/testdir/dumps/java_escapes_99.dump
new file mode 100644
index 000000000..617317c23
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_escapes_99.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|"+0#e000002&|\+0#e000e06&|2|0@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|0|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|0|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|0|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|0|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|0|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|0|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|0|7|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|2|1|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|1@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|1|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|1|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|1|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|1|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|1|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|1|7|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|2@1|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2@1|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2@2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2@1|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2@1|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2@1|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2@1|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2@1|7|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|2|3|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|3|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|3|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|3@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|3|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|3|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|3|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|3|7|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|2|4|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|4|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|4|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|4|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|4@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|4|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|4|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|4|7|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|2|5|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|5|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|5|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|5|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|5|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|5@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|5|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|5|7|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|2|6|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|6|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|6|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|6|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|6|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|6|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|6@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|6|7|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|2|7|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|7|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|7|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|7|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|7|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|7|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|7|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|2|7@1|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|3|0@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|0|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|0|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|0|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|0|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|0|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|0|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|0|7|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|3|1|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|1@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|1|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|1|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|1|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|1|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|1|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|1|7|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|3|2|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|2|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|2@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|2|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|2|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|2|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|2|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|2|7|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|3@1|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3@1|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3@1|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3@2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3@1|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3@1|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3@1|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3@1|7|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|3|4|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|4|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|4|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|4|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|4@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|4|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|4|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|4|7|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|3|5|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|5|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|5|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|5|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|5|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|5@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|5|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|5|7|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|3|6|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|6|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|6|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|6|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|6|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|6|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|6@1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|6|7|"+0#e000002&|,+0#0000000&| @7
+@4|"+0#e000002&|\+0#e000e06&|3|7|0|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|7|1|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|7|2|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|7|3|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|7|4|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|7|5|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|7|6|"+0#e000002&|,+0#0000000&| 
|"+0#e000002&|\+0#e000e06&|3|7@1|"+0#e000002&|,+0#0000000&| @7
+@8|}|)|;| @63
+@4|}| @69
+>}| @73
+@57|1|2|3|,|1| @8|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/java_numbers_00.dump 
b/runtime/syntax/testdir/dumps/java_numbers_00.dump
new file mode 100644
index 000000000..6ffb5d127
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_numbers_00.dump
@@ -0,0 +1,20 @@
+>c+0#00e0003#ffffff0|l|a|s@1| +0#0000000&|N|u|m|b|e|r|s|T|e|s|t|s| @56
+|{| @73
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|{| @62
+@8|d+0#00e0003&|o|u|b|l|e|[+0#0000000&|]| |d@1| |=| |{| @51
+@12|0+0#e000002&|x|.|0|p|0|,+0#0000000&| |0+0#e000002&|x|0|.|p|0|,+0#0000000&| 
|0+0#e000002&|x|0|.|0|p|0|,+0#0000000&| |0+0#e000002&|x|0|P|0|,+0#0000000&| @31
+@12|0+0#e000002&|x|.|0|p|0|d|,+0#0000000&| 
|0+0#e000002&|x|0|.|p|0|d|,+0#0000000&| 
|0+0#e000002&|x|0|.|0|p|0|d|,+0#0000000&| |0+0#e000002&|x|0|P|0|D|,+0#0000000&| 
@27
+@12|0+0#e000002&|x|.|0|p|0|f|,+0#0000000&| 
|0+0#e000002&|x|0|.|p|0|f|,+0#0000000&| 
|0+0#e000002&|x|0|.|0|p|0|f|,+0#0000000&| |0+0#e000002&|x|0|P|0|F|,+0#0000000&| 
@27
+@12|0+0#e000002&|x|.|0|p|0|,+0#0000000&| |0+0#e000002&|x|0|.|p|0|,+0#0000000&| 
|0+0#e000002&|x|0|.|0|p|0|,+0#0000000&| |0+0#e000002&|x|0|P|0|,+0#0000000&| @31
+@12|0+0#e000002&|x|.|0|p|0|d|,+0#0000000&| 
|0+0#e000002&|x|0|.|p|0|d|,+0#0000000&| 
|0+0#e000002&|x|0|.|0|p|0|d|,+0#0000000&| |0+0#e000002&|x|0|P|0|D|,+0#0000000&| 
@27
+@12|0+0#e000002&|x|.|0|p|0|f|,+0#0000000&| 
|0+0#e000002&|x|0|.|p|0|f|,+0#0000000&| 
|0+0#e000002&|x|0|.|0|p|0|f|,+0#0000000&| |0+0#e000002&|x|0|P|0|F|,+0#0000000&| 
@27
+@12|0+0#e000002&|x|.|0|p|-|0|,+0#0000000&| 
|0+0#e000002&|x|0|.|p|-|0|,+0#0000000&| 
|0+0#e000002&|x|0|.|0|p|-|0|,+0#0000000&| |0+0#e000002&|x|0|P|-|0|,+0#0000000&| 
@27
+@12|0+0#e000002&|x|.|0|p|-|0|d|,+0#0000000&| 
|0+0#e000002&|x|0|.|p|-|0|d|,+0#0000000&| 
|0+0#e000002&|x|0|.|0|p|-|0|d|,+0#0000000&| 
|0+0#e000002&|x|0|P|-|0|D|,+0#0000000&| @23
+@12|0+0#e000002&|x|.|0|p|-|0|f|,+0#0000000&| 
|0+0#e000002&|x|0|.|p|-|0|f|,+0#0000000&| 
|0+0#e000002&|x|0|.|0|p|-|0|f|,+0#0000000&| 
|0+0#e000002&|x|0|P|-|0|F|,+0#0000000&| @23
+@12|0+0#e000002&|x|.|0|p|+|0|,+0#0000000&| 
|0+0#e000002&|x|0|.|p|+|0|,+0#0000000&| 
|0+0#e000002&|x|0|.|0|p|+|0|,+0#0000000&| |0+0#e000002&|x|0|P|+|0|,+0#0000000&| 
@27
+@12|0+0#e000002&|x|.|0|p|+|0|d|,+0#0000000&| 
|0+0#e000002&|x|0|.|p|+|0|d|,+0#0000000&| 
|0+0#e000002&|x|0|.|0|p|+|0|d|,+0#0000000&| 
|0+0#e000002&|x|0|P|+|0|D|,+0#0000000&| @23
+@12|0+0#e000002&|x|.|0|p|+|0|f|,+0#0000000&| 
|0+0#e000002&|x|0|.|p|+|0|f|,+0#0000000&| 
|0+0#e000002&|x|0|.|0|p|+|0|f|,+0#0000000&| 
|0+0#e000002&|x|0|P|+|0|F|,+0#0000000&| @23
+@75
+@12|1+0#e000002&|.|,+0#0000000&| |1+0#e000002&|.|2|,+0#0000000&| 
|1+0#e000002&|.|2|e|3|,+0#0000000&| |1+0#e000002&|.|2|e|3|d|,+0#0000000&| 
|1+0#e000002&|.|2|e|3|f|,+0#0000000&| @31
+@16|1+0#e000002&|.|2|e|-|3|,+0#0000000&| 
|1+0#e000002&|.|2|e|-|3|d|,+0#0000000&| |1+0#e000002&|.|2|E|-|3|F|,+0#0000000&| 
@33
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/java_numbers_01.dump 
b/runtime/syntax/testdir/dumps/java_numbers_01.dump
new file mode 100644
index 000000000..a66487ace
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_numbers_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@11|0+0#e000002&|x|.|0|p|+|0|,+0#0000000&| 
|0+0#e000002&|x|0|.|p|+|0|,+0#0000000&| 
|0+0#e000002&|x|0|.|0|p|+|0|,+0#0000000&| |0+0#e000002&|x|0|P|+|0|,+0#0000000&| 
@27
+@12|0+0#e000002&|x|.|0|p|+|0|d|,+0#0000000&| 
|0+0#e000002&|x|0|.|p|+|0|d|,+0#0000000&| 
|0+0#e000002&|x|0|.|0|p|+|0|d|,+0#0000000&| 
|0+0#e000002&|x|0|P|+|0|D|,+0#0000000&| @23
+@12|0+0#e000002&|x|.|0|p|+|0|f|,+0#0000000&| 
|0+0#e000002&|x|0|.|p|+|0|f|,+0#0000000&| 
|0+0#e000002&|x|0|.|0|p|+|0|f|,+0#0000000&| 
|0+0#e000002&|x|0|P|+|0|F|,+0#0000000&| @23
+@75
+@12|1+0#e000002&|.|,+0#0000000&| |1+0#e000002&|.|2|,+0#0000000&| 
|1+0#e000002&|.|2|e|3|,+0#0000000&| |1+0#e000002&|.|2|e|3|d|,+0#0000000&| 
|1+0#e000002&|.|2|e|3|f|,+0#0000000&| @31
+@16>1+0#e000002&|.|2|e|-|3|,+0#0000000&| 
|1+0#e000002&|.|2|e|-|3|d|,+0#0000000&| |1+0#e000002&|.|2|E|-|3|F|,+0#0000000&| 
@33
+@16|1+0#e000002&|.|2|e|+|3|,+0#0000000&| 
|1+0#e000002&|.|2|E|+|3|D|,+0#0000000&| |1+0#e000002&|.|2|e|+|3|f|,+0#0000000&| 
@33
+@12|.+0#e000002&|2|,+0#0000000&| |.+0#e000002&|2|e|3|,+0#0000000&| 
|.+0#e000002&|2|e|3|d|,+0#0000000&| |.+0#e000002&|2|e|3|f|,+0#0000000&| @39
+@16|.+0#e000002&|2|e|-|3|,+0#0000000&| |.+0#e000002&|2|e|-|3|d|,+0#0000000&| 
|.+0#e000002&|2|E|-|3|F|,+0#0000000&| @36
+@16|.+0#e000002&|2|e|+|3|,+0#0000000&| |.+0#e000002&|2|E|+|3|D|,+0#0000000&| 
|.+0#e000002&|2|e|+|3|f|,+0#0000000&| @36
+@12|1+0#e000002&|e|3|,+0#0000000&| |1+0#e000002&|e|3|d|,+0#0000000&| 
|1+0#e000002&|e|3|f|,+0#0000000&| @46
+@16|1+0#e000002&|e|-|3|,+0#0000000&| |1+0#e000002&|e|-|3|d|,+0#0000000&| 
|1+0#e000002&|E|-|3|F|,+0#0000000&| @39
+@16|1+0#e000002&|e|+|3|,+0#0000000&| |1+0#e000002&|E|+|3|D|,+0#0000000&| 
|1+0#e000002&|e|+|3|f|,+0#0000000&| @39
+@12|1+0#e000002&|d|,+0#0000000&| |1+0#e000002&|D|,+0#0000000&| 
|1+0#e000002&|f|,+0#0000000&| |1+0#e000002&|F|,+0#0000000&| @47
+@75
+|/+0#0000e05&@3| |M|A|L|F|O|R|M|E|D|:| |:|l|e|t| 
|g|:|j|a|v|a|_|c|o|m@1|e|n|t|_|s|t|r|i|n|g|s| |=| |1| ||| |d|o|a|u|t|o|c|m|d| 
|S|y|n|t|a|x| +0#0000000&@8
+|/+0#0000e05&@1| @9|0|_|x|.|0|p|0|,| |0|x|.|_|0|p|0|,| |0|x|.|0|_|p|0|,| 
|0|x|.|0|p|_|0|,| |0|x|.|0|p|0|_|,| +0#0000000&@18
+|/+0#0000e05&@1| @9|0|x|0|_|.|0|p|0|,| |0|x|_|0|.|0|p|0|,| |0|x|p|0|,| 
+0#0000000&@37
+@8|}|;| @64
+@57|1|9|,|5|-|1|7| @6|1|8|%| 
diff --git a/runtime/syntax/testdir/dumps/java_numbers_02.dump 
b/runtime/syntax/testdir/dumps/java_numbers_02.dump
new file mode 100644
index 000000000..73f2e8e2d
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_numbers_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|}|;| @64
+@75
+@8|i+0#00e0003&|n|t| +0#0000000&|O| |=| |0+0#e000002&|;+0#0000000&| @56
+@8|i+0#00e0003&|n|t| +0#0000000&|O@1| |=| |0+0#e000002&@1|;+0#0000000&| @54
+@8|i+0#00e0003&|n|t| +0#0000000&|O|x|O| |=| |0+0#e000002&|x|0|;+0#0000000&| @52
+> @74
+@8|i+0#00e0003&|n|t| +0#0000000&|x| |=| 
|0+0#e000002&|x|1|2|_|3|4|5|_|6|7|8|;+0#0000000&| @45
+@8|i+0#00e0003&|n|t| +0#0000000&|y| |=| 
|0+0#e000002&|b|0|1|_|0|1|_|0|1|_|0|1|_|0|1|;+0#0000000&| @41
+@8|i+0#00e0003&|n|t| +0#0000000&|z| |=| 
|0+0#e000002&|_@1|1|_@1|2|_@1|3|_@1|4|_@1|5|_@1|6|_@1|7|;+0#0000000&| @35
+@75
+@8|/+0#0000e05&@1| |S|t|r|i|n|g|.|f|o|r|m|a|t|(|"|%|a|"|,| |-|1|.|0|)| 
+0#0000000&@38
+@8|d+0#00e0003&|o|u|b|l|e| +0#0000000&|m|i|n|u|s|_|o|n|e|_|d| |=| 
|-|0+0#e000002&|x|1|.|0|p|0|;+0#0000000&| @36
+@75
+@8|d+0#00e0003&|o|u|b|l|e| +0#0000000&|z|_|d| |=| 
|-|0+0#e000002&|x|.|0|p|0|;+0#0000000&| @45
+@8|d+0#00e0003&|o|u|b|l|e| +0#0000000&|y|_|d| |=| 
|0+0#e000002&|x|a|p|1|_@1|0|_@1|0|;+0#0000000&| @41
+@8|d+0#00e0003&|o|u|b|l|e| +0#0000000&|x|_|d| |=| 
|.+0#e000002&|0|_@1|1|_@1|2|_@1|3|_@1|4|_@1|5|_@1|6|_@1|7|_@1|8|_@1|9|;+0#0000000&|
 @23
+@8|d+0#00e0003&|o|u|b|l|e| +0#0000000&|d|o|t|_|O| |=| 
|.+0#e000002&|0|;+0#0000000&| @48
+@75
+@8|/+0#0000e05&@1| |J|L|S|,| |§|3|.|1|0|.|2|:| +0#0000000&@50
+@57|3|7|,|0|-|1| @7|4@1|%| 
diff --git a/runtime/syntax/testdir/dumps/java_numbers_03.dump 
b/runtime/syntax/testdir/dumps/java_numbers_03.dump
new file mode 100644
index 000000000..e3b5dba14
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_numbers_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|/+0#0000e05&@1| |J|L|S|,| |§|3|.|1|0|.|2|:| +0#0000000&@50
+@8|f+0#00e0003&|l|o|a|t| +0#0000000&|m|a|x|_|d|e|c|_|f| |=| 
|3+0#e000002&|.|4|0|2|8|2|3|5|e|3|8|f|;+0#0000000&| @34
+@8|f+0#00e0003&|l|o|a|t| +0#0000000&|m|a|x|_|h|e|x|_|f| |=| 
|0+0#e000002&|x|1|.|f@4|e|P|+|1|2|7|f|;+0#0000000&| @31
+@8|f+0#00e0003&|l|o|a|t| +0#0000000&|m|i|n|_|d|e|c|_|f| |=| 
|1+0#e000002&|.|4|e|-|4|5|f|;+0#0000000&| @39
+@8|f+0#00e0003&|l|o|a|t| +0#0000000&|m|i|n|_|h|e|x|_|f|_|a| |=| 
|0+0#e000002&|x|0|.|0@4|2|P|-|1|2|6|f|;+0#0000000&| @29
+@8>f+0#00e0003&|l|o|a|t| +0#0000000&|m|i|n|_|h|e|x|_|f|_|b| |=| 
|0+0#e000002&|x|1|.|0|P|-|1|4|9|f|;+0#0000000&| @34
+@75
+@8|d+0#00e0003&|o|u|b|l|e| +0#0000000&|m|a|x|_|d|e|c|_|d| |=| 
|1+0#e000002&|.|7|9|7|6|9|3|1|3|4|8|6|2|3|1|5|7|e|3|_@1|0|_@1|8|;+0#0000000&| 
@20
+@8|d+0#00e0003&|o|u|b|l|e| +0#0000000&|m|a|x|_|h|e|x|_|d| |=| 
|0+0#e000002&|x|1|.|f|_|f@3|_|f@3|_|f@3|P|+|1|0|2|3|;+0#0000000&| @20
+@8|d+0#00e0003&|o|u|b|l|e| +0#0000000&|m|i|n|_|d|e|c|_|d| |=| 
|4+0#e000002&|.|9|e|-|3|_@1|2|_@1|4|;+0#0000000&| @34
+@8|d+0#00e0003&|o|u|b|l|e| +0#0000000&|m|i|n|_|h|e|x|_|d|_|a| |=| 
|0+0#e000002&|x|0|.|0|_|0@3|_|0@3|_|0@2|1|P|-|1|0|2@1|;+0#0000000&| @18
+@8|d+0#00e0003&|o|u|b|l|e| +0#0000000&|m|i|n|_|h|e|x|_|d|_|b| |=| 
|0+0#e000002&|x|1|.|0|P|-|1|0|7|4|;+0#0000000&| @33
+@75
+@8|/+0#0000e05&@1| |J|L|S|,| |§|3|.|1|0|.|1|:| +0#0000000&@50
+@8|i+0#00e0003&|n|t| +0#0000000&|m|a|x|_|h|e|x| |=| 
|0+0#e000002&|x|7|f@2|_|f@3|;+0#0000000&| @40
+@8|i+0#00e0003&|n|t| +0#0000000&|m|a|x|_|o|c|t| |=| 
|0+0#e000002&|1|7@1|_|7@3|_|7@3|;+0#0000000&| @37
+@8|i+0#00e0003&|n|t| +0#0000000&|m|a|x|_|b|i|n| |=| 
|0+0#e000002&|b|0|1@2|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|;+0#0000000&| 
@10
+@75
+@8|i+0#00e0003&|n|t| +0#0000000&|m|i|n|_|h|e|x| |=| 
|0+0#e000002&|x|8|0@2|_|0@3|;+0#0000000&| @40
+@57|5@1|,|3|-|9| @7|7|1|%| 
diff --git a/runtime/syntax/testdir/dumps/java_numbers_04.dump 
b/runtime/syntax/testdir/dumps/java_numbers_04.dump
new file mode 100644
index 000000000..d03904dd1
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_numbers_04.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|i+0#00e0003&|n|t| +0#0000000&|m|i|n|_|h|e|x| |=| 
|0+0#e000002&|x|8|0@2|_|0@3|;+0#0000000&| @40
+@8|i+0#00e0003&|n|t| +0#0000000&|m|i|n|_|o|c|t| |=| 
|0+0#e000002&|2|0@1|_|0@3|_|0@3|;+0#0000000&| @37
+@8|i+0#00e0003&|n|t| +0#0000000&|m|i|n|_|b|i|n| |=| 
|0+0#e000002&|b|1|0@2|_|0@3|_|0@3|_|0@3|_|0@3|_|0@3|_|0@3|_|0@3|;+0#0000000&| 
@10
+@75
+@8|i+0#00e0003&|n|t| +0#0000000&|m|i|n|u|s|_|o|n|e|_|h|e|x| |=| 
|0+0#e000002&|x|f@3|_|f@3|;+0#0000000&| @34
+@8>i+0#00e0003&|n|t| +0#0000000&|m|i|n|u|s|_|o|n|e|_|o|c|t| |=| 
|0+0#e000002&|3|7@1|_|7@3|_|7@3|;+0#0000000&| @31
+@8|i+0#00e0003&|n|t| +0#0000000&|m|i|n|u|s|_|o|n|e|_|b|i|n| |=| 
|0+0#e000002&|b|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|;+0#0000000&| @4
+@75
+@8|l+0#00e0003&|o|n|g| +0#0000000&|m|a|x|_|h|e|x|_|l| |=| 
|0+0#e000002&|x|7|f@2|_|f@3|_|f@3|_|f@3|L|;+0#0000000&| @26
+@8|l+0#00e0003&|o|n|g| +0#0000000&|m|a|x|_|o|c|t|_|l| |=| 
|0+0#e000002&|7|_|7@3|_|7@3|_|7@3|_|7@3|_|7@3|L|;+0#0000000&| @20
+@8|l+0#00e0003&|o|n|g| +0#0000000&|m|a|x|_|b|i|n|_|l| |=| 
|0+0#e000002&|b|0|1@2|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@2
+@1|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|L|;+0#0000000&| @41
+@75
+@8|l+0#00e0003&|o|n|g| +0#0000000&|m|i|n|_|h|e|x|_|l| |=| 
|0+0#e000002&|x|8|0@2|_|0@3|_|0@3|_|0@3|L|;+0#0000000&| @26
+@8|l+0#00e0003&|o|n|g| +0#0000000&|m|i|n|_|o|c|t|_|l| |=| 
|0+0#e000002&|1|0|_|0@3|_|0@3|_|0@3|_|0@3|_|0@3|L|;+0#0000000&| @19
+@8|l+0#00e0003&|o|n|g| +0#0000000&|m|i|n|_|b|i|n|_|l| |=| 
|0+0#e000002&|b|1|0@2|_|0@3|_|0@3|_|0@3|_|0@3|_|0@3|_|0@3|_|0@3|_|0@3|_|0@2
+@1|_|0@3|_|0@3|_|0@3|_|0@3|_|0@3|_|0@3|L|;+0#0000000&| @41
+@75
+@8|l+0#00e0003&|o|n|g| +0#0000000&|m|i|n|u|s|_|o|n|e|_|h|e|x|_|l| |=| 
|0+0#e000002&|x|f@3|_|f@3|_|f@3|_|f@3|L|;+0#0000000&| @20
+@57|7|3|,|3|-|9| @7|9|4|%| 
diff --git a/runtime/syntax/testdir/dumps/java_numbers_99.dump 
b/runtime/syntax/testdir/dumps/java_numbers_99.dump
new file mode 100644
index 000000000..7637b85ff
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_numbers_99.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|i+0#00e0003&|n|t| +0#0000000&|m|i|n|u|s|_|o|n|e|_|o|c|t| |=| 
|0+0#e000002&|3|7@1|_|7@3|_|7@3|;+0#0000000&| @31
+@8|i+0#00e0003&|n|t| +0#0000000&|m|i|n|u|s|_|o|n|e|_|b|i|n| |=| 
|0+0#e000002&|b|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|;+0#0000000&| @4
+@75
+@8|l+0#00e0003&|o|n|g| +0#0000000&|m|a|x|_|h|e|x|_|l| |=| 
|0+0#e000002&|x|7|f@2|_|f@3|_|f@3|_|f@3|L|;+0#0000000&| @26
+@8|l+0#00e0003&|o|n|g| +0#0000000&|m|a|x|_|o|c|t|_|l| |=| 
|0+0#e000002&|7|_|7@3|_|7@3|_|7@3|_|7@3|_|7@3|L|;+0#0000000&| @20
+@8|l+0#00e0003&|o|n|g| +0#0000000&|m|a|x|_|b|i|n|_|l| |=| 
|0+0#e000002&|b|0|1@2|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@2
+@1|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|L|;+0#0000000&| @41
+@75
+@8|l+0#00e0003&|o|n|g| +0#0000000&|m|i|n|_|h|e|x|_|l| |=| 
|0+0#e000002&|x|8|0@2|_|0@3|_|0@3|_|0@3|L|;+0#0000000&| @26
+@8|l+0#00e0003&|o|n|g| +0#0000000&|m|i|n|_|o|c|t|_|l| |=| 
|0+0#e000002&|1|0|_|0@3|_|0@3|_|0@3|_|0@3|_|0@3|L|;+0#0000000&| @19
+@8|l+0#00e0003&|o|n|g| +0#0000000&|m|i|n|_|b|i|n|_|l| |=| 
|0+0#e000002&|b|1|0@2|_|0@3|_|0@3|_|0@3|_|0@3|_|0@3|_|0@3|_|0@3|_|0@3|_|0@2
+@1|_|0@3|_|0@3|_|0@3|_|0@3|_|0@3|_|0@3|L|;+0#0000000&| @41
+@75
+@8|l+0#00e0003&|o|n|g| +0#0000000&|m|i|n|u|s|_|o|n|e|_|h|e|x|_|l| |=| 
|0+0#e000002&|x|f@3|_|f@3|_|f@3|_|f@3|L|;+0#0000000&| @20
+@8|l+0#00e0003&|o|n|g| +0#0000000&|m|i|n|u|s|_|o|n|e|_|o|c|t|_|l| |=| 
|0+0#e000002&|1|7|_|7@3|_|7@3|_|7@3|_|7@3|_|7@3|L|;+0#0000000&| @13
+@8|l+0#00e0003&|o|n|g| +0#0000000&|m|i|n|u|s|_|o|n|e|_|b|i|n|_|l| |=| 
|0+0#e000002&|b|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@1
+@2|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|L|;+0#0000000&| @35
+@4|}| @69
+>}| @73
+@57|8@1|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/input/java_escapes.java 
b/runtime/syntax/testdir/input/java_escapes.java
new file mode 100644
index 000000000..624d4fcd8
--- /dev/null
+++ b/runtime/syntax/testdir/input/java_escapes.java
@@ -0,0 +1,123 @@
+class EscapesTests
+{      // javap -constants EscapesTests.class
+       // static final String hello = "hello";
+       \u0073\u0074\u0061\u0074\u0069\u0063
+       \u0066\u0069\u006e\u0061\u006c
+       \u0053\u0074\u0072\u0069\u006e\u0067
+       \u0068\u0065\u006c\u006c\u006f
+       \u003d
+       \u0022\u0068\u0065\u006c\u006c\u006f\u0022
+       \u003b
+
+       static {
+               char ee[] = {
+                       ' ', '  ',
+                       '
', '', '
',
+                       '\"', '\'', '\',
+               };
+
+               System.out.println(new String[] {
+                       " ", "  ",
+                       "
", "", "
",
+                       "\"", "\'", "\",
+               });
+
+               char oo[] = {
+                       '
+
+               '
+
+       '
+
+               ' ', '  ', '
', ' ', '', '
', ' ', ' ',
+               ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
+               ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
+               ' ', '!', '"', '#', '$', '%', '&', ''',
+               '(', ')', '*', '+', ',', '-', '.', '/',
+               '0', '1', '2', '3', '4', '5', '6', '7',
+               '8', '9', ':', ';', '<', '=', '>', '?',
+
+       ' ', '  ', '
', ' ', '', '
', ' ', ' ',
+       ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
+       ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
+       ' ', '!', '"', '#', '$', '%', '&', ''',
+       '(', ')', '*', '+', ',', '-', '.', '/',
+       '0', '1', '2', '3', '4', '5', '6', '7',
+       '8', '9', ':', ';', '<', '=', '>', '?',
+
+       '@', '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', '[', '\', ']', '^', '_',
+       '`', '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', '{', '|', '}', '~', ' ',
+       '€', ' ', '‚', 'ƒ', '„', '…', '†', '‡',
+       'ˆ', '‰', 'Š', '‹', 'Œ', ' ', 'Ž', ' ',
+       ' ', '‘', '’', '“', '”', '•', '–', '—',
+       '˜', '™', 'š', '›', 'œ', ' ', 'ž', 'Ÿ',
+       ' ', '¡', '¢', '£', '¤', '¥', '¦', '§',
+       '¨', '©', 'ª', '«', '¬', '­', '®', '¯',
+       '°', '±', '²', '³', '´', 'µ', '¶', '·',
+       '¸', '¹', 'º', '»', '¼', '½', '¾', '¿',
+       'À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ç',
+       'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï',
+       'Ð', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', '×',
+       'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'Þ', 'ß',
+       'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'ç',
+       'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï',
+       'ð', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', '÷',
+       'ø', 'ù', 'ú', 'û', 'ü', 'ý', 'þ', 'ÿ',
+               };
+
+               System.out.println(new String[] {
+                       "
+
+               "
+
+       "
+
+               " ", "  ", "
", " ", "", "
", " ", " ",
+               " ", " ", " ", " ", " ", " ", " ", " ",
+               " ", " ", " ", " ", " ", " ", " ", " ",
+               " ", "!", """, "#", "$", "%", "&", "'",
+               "(", ")", "*", "+", ",", "-", ".", "/",
+               "0", "1", "2", "3", "4", "5", "6", "7",
+               "8", "9", ":", ";", "<", "=", ">", "?",
+
+       " ", "  ", "
", " ", "", "
", " ", " ",
+       " ", " ", " ", " ", " ", " ", " ", " ",
+       " ", " ", " ", " ", " ", " ", " ", " ",
+       " ", "!", """, "#", "$", "%", "&", "'",
+       "(", ")", "*", "+", ",", "-", ".", "/",
+       "0", "1", "2", "3", "4", "5", "6", "7",
+       "8", "9", ":", ";", "<", "=", ">", "?",
+
+       "@", "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", "[", "\", "]", "^", "_",
+       "`", "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", "{", "|", "}", "~", " ",
+       "€", " ", "‚", "ƒ", "„", "…", "†", "‡",
+       "ˆ", "‰", "Š", "‹", "Œ", " ", "Ž", " ",
+       " ", "‘", "’", "“", "”", "•", "–", "—",
+       "˜", "™", "š", "›", "œ", " ", "ž", "Ÿ",
+       " ", "¡", "¢", "£", "¤", "¥", "¦", "§",
+       "¨", "©", "ª", "«", "¬", "­", "®", "¯",
+       "°", "±", "²", "³", "´", "µ", "¶", "·",
+       "¸", "¹", "º", "»", "¼", "½", "¾", "¿",
+       "À", "Á", "Â", "Ã", "Ä", "Å", "Æ", "Ç",
+       "È", "É", "Ê", "Ë", "Ì", "Í", "Î", "Ï",
+       "Ð", "Ñ", "Ò", "Ó", "Ô", "Õ", "Ö", "×",
+       "Ø", "Ù", "Ú", "Û", "Ü", "Ý", "Þ", "ß",
+       "à", "á", "â", "ã", "ä", "å", "æ", "ç",
+       "è", "é", "ê", "ë", "ì", "í", "î", "ï",
+       "ð", "ñ", "ò", "ó", "ô", "õ", "ö", "÷",
+       "ø", "ù", "ú", "û", "ü", "ý", "þ", "ÿ",
+               });
+       }
+}
diff --git a/runtime/syntax/testdir/input/java_numbers.java 
b/runtime/syntax/testdir/input/java_numbers.java
new file mode 100644
index 000000000..e9265349a
--- /dev/null
+++ b/runtime/syntax/testdir/input/java_numbers.java
@@ -0,0 +1,88 @@
+class NumbersTests
+{
+       static {
+               double[] dd = {
+                       0x.0p0, 0x0.p0, 0x0.0p0, 0x0P0,
+                       0x.0p0d, 0x0.p0d, 0x0.0p0d, 0x0P0D,
+                       0x.0p0f, 0x0.p0f, 0x0.0p0f, 0x0P0F,
+                       0x.0p0, 0x0.p0, 0x0.0p0, 0x0P0,
+                       0x.0p0d, 0x0.p0d, 0x0.0p0d, 0x0P0D,
+                       0x.0p0f, 0x0.p0f, 0x0.0p0f, 0x0P0F,
+                       0x.0p-0, 0x0.p-0, 0x0.0p-0, 0x0P-0,
+                       0x.0p-0d, 0x0.p-0d, 0x0.0p-0d, 0x0P-0D,
+                       0x.0p-0f, 0x0.p-0f, 0x0.0p-0f, 0x0P-0F,
+                       0x.0p+0, 0x0.p+0, 0x0.0p+0, 0x0P+0,
+                       0x.0p+0d, 0x0.p+0d, 0x0.0p+0d, 0x0P+0D,
+                       0x.0p+0f, 0x0.p+0f, 0x0.0p+0f, 0x0P+0F,
+
+                       1., 1.2, 1.2e3, 1.2e3d, 1.2e3f,
+                               1.2e-3, 1.2e-3d, 1.2E-3F,
+                               1.2e+3, 1.2E+3D, 1.2e+3f,
+                       .2, .2e3, .2e3d, .2e3f,
+                               .2e-3, .2e-3d, .2E-3F,
+                               .2e+3, .2E+3D, .2e+3f,
+                       1e3, 1e3d, 1e3f,
+                               1e-3, 1e-3d, 1E-3F,
+                               1e+3, 1E+3D, 1e+3f,
+                       1d, 1D, 1f, 1F,
+
+//// MALFORMED: :let g:java_comment_strings = 1 | doautocmd Syntax
+//                     0_x.0p0, 0x._0p0, 0x.0_p0, 0x.0p_0, 0x.0p0_,
+//                     0x0_.0p0, 0x_0.0p0, 0xp0,
+               };
+
+               int O = 0;
+               int OO = 00;
+               int OxO = 0x0;
+
+               int x = 0x12_345_678;
+               int y = 0b01_01_01_01_01;
+               int z = 0__1__2__3__4__5__6__7;
+
+               // String.format("%a", -1.0)
+               double minus_one_d = -0x1.0p0;
+
+               double z_d = -0x.0p0;
+               double y_d = 0xap1__0__0;
+               double x_d = .0__1__2__3__4__5__6__7__8__9;
+               double dot_O = .0;
+
+               // JLS, §3.10.2:
+               float max_dec_f = 3.4028235e38f;
+               float max_hex_f = 0x1.fffffeP+127f;
+               float min_dec_f = 1.4e-45f;
+               float min_hex_f_a = 0x0.000002P-126f;
+               float min_hex_f_b = 0x1.0P-149f;
+
+               double max_dec_d = 1.7976931348623157e3__0__8;
+               double max_hex_d = 0x1.f_ffff_ffff_ffffP+1023;
+               double min_dec_d = 4.9e-3__2__4;
+               double min_hex_d_a = 0x0.0_0000_0000_0001P-1022;
+               double min_hex_d_b = 0x1.0P-1074;
+
+               // JLS, §3.10.1:
+               int max_hex = 0x7fff_ffff;
+               int max_oct = 0177_7777_7777;
+               int max_bin = 0b0111_1111_1111_1111_1111_1111_1111_1111;
+
+               int min_hex = 0x8000_0000;
+               int min_oct = 0200_0000_0000;
+               int min_bin = 0b1000_0000_0000_0000_0000_0000_0000_0000;
+
+               int minus_one_hex = 0xffff_ffff;
+               int minus_one_oct = 0377_7777_7777;
+               int minus_one_bin = 0b1111_1111_1111_1111_1111_1111_1111_1111;
+
+               long max_hex_l = 0x7fff_ffff_ffff_ffffL;
+               long max_oct_l = 07_7777_7777_7777_7777_7777L;
+               long max_bin_l = 
0b0111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111L;
+
+               long min_hex_l = 0x8000_0000_0000_0000L;
+               long min_oct_l = 010_0000_0000_0000_0000_0000L;
+               long min_bin_l = 
0b1000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000L;
+
+               long minus_one_hex_l = 0xffff_ffff_ffff_ffffL;
+               long minus_one_oct_l = 017_7777_7777_7777_7777_7777L;
+               long minus_one_bin_l = 
0b1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111L;
+       }
+}

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/E1rgB9p-00BPQJ-IS%40256bit.org.

Raspunde prin e-mail lui