* Fixed some reader bugs wrt bug 173201.
This commit is contained in:
		
							parent
							
								
									75e09500c4
								
							
						
					
					
						commit
						4c16c8b340
					
				|  | @ -83,15 +83,19 @@ | |||
|         (cond | ||||
|          [(eof-object? c)  | ||||
|           (error 'tokenize "end-of-file while inside a string")] | ||||
|          [($char= #\" c)  ls] | ||||
|          [($char= #\" c) ls] | ||||
|          [($char= #\\ c)  | ||||
|           (let ([c (read-char p)]) | ||||
|             (cond | ||||
|               [($char= #\" c) (tokenize-string (cons #\" ls) p)] | ||||
|               [($char= #\\ c) (tokenize-string (cons #\\ ls) p)] | ||||
|               [($char= #\n c) (tokenize-string (cons #\newline ls) p)] | ||||
|               [($char= #\r c) (tokenize-string (cons #\return ls) p)] | ||||
|               [($char= #\t c) (tokenize-string (cons #\tab ls) p)] | ||||
|               [($char= #\a c) (tokenize-string (cons #\x7 ls) p)] | ||||
|               [($char= #\b c) (tokenize-string (cons #\x8 ls) p)] | ||||
|               [($char= #\t c) (tokenize-string (cons #\x9 ls) p)] | ||||
|               [($char= #\n c) (tokenize-string (cons #\xA ls) p)] | ||||
|               [($char= #\v c) (tokenize-string (cons #\xB ls) p)] | ||||
|               [($char= #\f c) (tokenize-string (cons #\xC ls) p)] | ||||
|               [($char= #\r c) (tokenize-string (cons #\xD ls) p)] | ||||
|               [($char= #\" c) (tokenize-string (cons #\x22 ls) p)] | ||||
|               [($char= #\\ c) (tokenize-string (cons #\x5C ls) p)] | ||||
|               [($char= #\x c) ;;; unicode escape \xXXX; | ||||
|                (let ([c (read-char p)]) | ||||
|                  (cond | ||||
|  | @ -116,6 +120,7 @@ | |||
|                    [else  | ||||
|                     (error 'tokenize | ||||
|                       "invalid char in escape sequence" c)]))] | ||||
|               ;;; FIXME: handle whitespace | ||||
|               [else (error 'tokenize "invalid string escape" c)]))] | ||||
|          [else | ||||
|           (tokenize-string (cons c ls) p)])))) | ||||
|  | @ -1064,6 +1069,10 @@ | |||
|            [(eq? (car t) 'datum) (values (cdr t) locs k)] | ||||
|            [(eq? (car t) 'macro) | ||||
|             (let-values ([(expr locs k) (read-expr p locs k)]) | ||||
|               (when (eof-object? expr)  | ||||
|                 (error 'read  | ||||
|                   (format "invalid eof after ~a read macro" | ||||
|                           (cdr t)))) | ||||
|               (let ([x (list expr)]) | ||||
|                 (values (cons (cdr t) x) locs | ||||
|                         (if (loc? expr) | ||||
|  |  | |||
|  | @ -1 +1 @@ | |||
| 1158 | ||||
| 1159 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Abdulaziz Ghuloum
						Abdulaziz Ghuloum