modern: Still support ``\ foo`` for now.
							parent
							
								
									fbb5f871c4
								
							
						
					
					
						commit
						161a50c0b8
					
				| 
						 | 
				
			
			@ -62,7 +62,7 @@ IN: modern.tests
 | 
			
		|||
    { { "SYNTAX:" { "\\AVL{" } } }
 | 
			
		||||
} [ "SYNTAX: \\AVL{" string>literals >strings ] unit-test
 | 
			
		||||
 | 
			
		||||
{ { "\\" } } [ "\\" string>literals >strings ] unit-test
 | 
			
		||||
[ "\\" string>literals >strings ] must-fail ! \ alone should be legal eventually (?)
 | 
			
		||||
{ { "\\FOO" } } [ "\\FOO" string>literals >strings ] unit-test
 | 
			
		||||
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -81,4 +81,10 @@ IN: modern.tests
 | 
			
		|||
[ "char: {" string>literals >strings ] must-fail
 | 
			
		||||
[ "char: \"" string>literals >strings ] must-fail
 | 
			
		||||
{ { { "char:" "\\\\" } } } [ "char: \\\\" string>literals >strings ] unit-test
 | 
			
		||||
{ { { "char:" "\\" } } } [ "char: \\" string>literals >strings ] unit-test
 | 
			
		||||
 | 
			
		||||
[ "char: \\" string>literals >strings ] must-fail ! char: \ should be legal eventually
 | 
			
		||||
 | 
			
		||||
! \ backslash going away someday
 | 
			
		||||
 | 
			
		||||
{ { { "\\" "(" } } } [ "\\ (" string>literals >strings ] unit-test
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -198,7 +198,15 @@ ERROR: colon-word-must-be-all-uppercase-or-lowercase n string word ;
 | 
			
		|||
    dup { [ "!" sequence= ] [ "#!" sequence= ] } 1||
 | 
			
		||||
    [ take-comment ] [ merge-slice-til-whitespace ] if ;
 | 
			
		||||
 | 
			
		||||
ERROR: backslash-expects-whitespace slice ;
 | 
			
		||||
ERROR: no-backslash-payload n string slice ;
 | 
			
		||||
: read-backslash ( n string slice -- n' string obj )
 | 
			
		||||
    merge-slice-til-whitespace dup "\\" tail? [
 | 
			
		||||
        ! \ foo, M\ foo
 | 
			
		||||
        [
 | 
			
		||||
            skip-blank-from slice-til-whitespace drop
 | 
			
		||||
            dup [ no-backslash-payload ] unless
 | 
			
		||||
        ] dip swap 2array
 | 
			
		||||
    ] when ;
 | 
			
		||||
 | 
			
		||||
! If the slice is 0 width, we stopped on whitespace.
 | 
			
		||||
! Advance the index and read again!
 | 
			
		||||
| 
						 | 
				
			
			@ -267,6 +275,7 @@ ERROR: mismatched-terminator n string slice ;
 | 
			
		|||
            [ "\"!:[{(<>\s\r\n" slice-til-either ] dip swap [ span-slices ] dip
 | 
			
		||||
            over "\\" head? [
 | 
			
		||||
                drop
 | 
			
		||||
                dup "\\" sequence= [ read-backslash ] when
 | 
			
		||||
            ] [
 | 
			
		||||
                (lex-factor)
 | 
			
		||||
            ] if
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -131,7 +131,9 @@ ERROR: unexpected-end n string ;
 | 
			
		|||
    ] if ; inline
 | 
			
		||||
 | 
			
		||||
: merge-slice-til-whitespace ( n string slice --  n' string slice' )
 | 
			
		||||
    [ slice-til-whitespace drop ] dip merge-slices ;
 | 
			
		||||
    pick [
 | 
			
		||||
        [ slice-til-whitespace drop ] dip merge-slices
 | 
			
		||||
    ] when ;
 | 
			
		||||
 | 
			
		||||
: merge-slice-til-eol ( n string slice --  n' string slice' )
 | 
			
		||||
    [ slice-til-eol drop ] dip merge-slices ;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue