txtファイル「blah.txt」があります
word 3 + 6
ここで、次のコードを検討してください。
(define c (read-char file))
(define (toke c)
(cond
((null? c)(write "empty"))
((equal? (read-char c) #\space)(write 'space)
; (toke (with the next character)
)
((equal? (read-char c) #\+) (write '+)
; (toke (with the next character)
)
((equal? (read-char c) #\-) (write '-)
; (toke (with the next character)
)
((equal? (read-char c) #\*) (write '*)
; (toke (with the next character)
)
((equal? (read-char c) #\/) (write '/)
; (toke (with the next character)
)
((equal? (read-char c) #\=) (write '=)
; (toke (with the next character)
)
((equal? (read-char c) #\() (write 'LPAREN)
; (toke (with the next character)
)
((equal? (read-char c) #\)) (write 'RPAREN)
; (toke (with the next character)
)
((char-numeric? (read-char c)) (write 'Num)
; (toke (with the next character)
)
((char-alphabetic? (read-char c))(write 'ID)
; (toke (with the next character)
)
(else
(write "error"))))
テキストファイルに出力するつもりはありません。次のキャラクターに移れるようにしたいだけです。私はそれを解決しようとして失敗しました。また、何らかの理由で、文字数値でエラーが発生し続けますか? と文字アルファベット?ファイルを 3 a + r として保存するときに期待する a の代わりに eof を指定したことを教えてくれます(たとえば)
それを文字列に変更する必要があることは知っていますが、実行できない「単語3 + 6」の文字列を取得し続けます(車)。'(word 3 + 4) を含む (define list file->list "blah.txt") ことができることをもう少し説明しますが、その後 (define str file->string "blah.txt" ) 「word 3 + 4」が含まれますが、(car str) で「word」を取り出すことはできません。全体 (car) は「word 3 + 4」なので、正しく説明できない場合はご容赦ください。スキームは初めてです