core: \foo is literally just foo. To escape it, do ``\ foo`` instead.

Fix smalltalk too.
modern-harvey2
Doug Coleman 2017-08-27 12:40:09 -05:00
parent fbaa172732
commit b0858e48b8
4 changed files with 12 additions and 12 deletions

View File

@ -81,7 +81,7 @@ ERROR: can't-nest-definitions word ;
: (:) ( -- word def effect )
[
scan-new-word
scan-new-syntax-word
scan-effect
parse-definition swap
] with-definition ;

View File

@ -118,10 +118,16 @@ DEFER: parse-token
nip
] if ;
: unescape-token ( string -- string' )
dup length 1 = [ "\\" ?head drop ] unless ;
: unescape-tokens ( seq -- seq' )
[ unescape-token ] map ;
: parse-token ( lexer -- str/f )
dup parse-raw [ skip-comments ] [ drop f ] if* ;
: ?scan-token ( -- str/f ) lexer get parse-token ;
: ?scan-token ( -- str/f ) lexer get parse-token unescape-token ;
PREDICATE: unexpected-eof < unexpected got>> not ;
@ -143,12 +149,6 @@ PREDICATE: unexpected-eof < unexpected got>> not ;
: parse-tokens ( end -- seq )
[ ] map-tokens ;
: unescape-token ( string -- string' )
"\\" ?head drop ;
: unescape-tokens ( seq -- seq' )
[ unescape-token ] map ;
TUPLE: lexer-error line column line-text parsing-words error ;
M: lexer-error error-file error>> error-file ;

View File

@ -26,14 +26,14 @@ M: ast-name compile-ast name>> swap lookup-reader ;
[ compile-arguments ] 2bi
[ new ] 3append ;
: compile-ifTrue:ifFalse: ( lexenv ast -- quot )
: \compile-ifTrue:ifFalse: ( lexenv ast -- quot )
[ receiver>> compile-ast ]
[ compile-arguments ] 2bi
[ if ] 3append ;
M: ast-message-send compile-ast
dup selector>> {
{ "ifTrue:ifFalse:" [ compile-ifTrue:ifFalse: ] }
{ "ifTrue:ifFalse:" [ \compile-ifTrue:ifFalse: ] }
{ "new" [ compile-new ] }
[
drop

View File

@ -17,8 +17,8 @@ SELECTOR: tab
SELECTOR: nl
M: object selector-print: [ present ] dip stream-print nil ;
M: object selector-nextPutAll: selector-print: ;
M: object selector-tab " " swap selector-print: ;
M: object selector-nextPutAll: \selector-print: ;
M: object selector-tab " " swap \selector-print: ;
M: object selector-nl stream-nl nil ;
SELECTOR: +