2012-05-07 4 views
0

Просто нужно знать основы заглядывания в схему. Я попробовал посмотреть на сайт ракетки, но на него не было много. Или, может быть, я искал не тот раздел. В любом случае, дело в следующем.peek-char в схеме

, если у меня есть (#\x #\b #\o #\x #\space #\3 #\6 #\0)

Я хочу, чтобы быть в состоянии идентифицировать й как полукокс, а затем продолжают заглядывать, пока пространство не будет достигнуто, и пересмотреть это как слово. Затем сделайте то же самое для 360.

Любые советы? Пожалуйста и спасибо! :)

Вот что мой код выглядит как в случае, если это помогает

(define (work x) 
(cond 
((null? x)(write '$$)) 
(char-numeric? (car x)) 
(write 'Num) 
(toke (cdr x))) 
((char-alphabetic? (car x)) 
(write 'ID) 
(work (cdr x))) 
(else (write "other"))) 

Проблема с этим состоит в том, что это дало бы мне IDIDIDID для «Xbox» (который имеет смысл причину кода), но я хочу, чтобы он выводил только один идентификатор один раз для всего слова xbox

Оскар, я знаю, что вы помогли мне с этим, но моя нехватка знаний по схеме не позволила мне далеко зайти. Извините за сообщение.

ответ

3

Смотрите раздел прятки-полукокса в руководстве: http://docs.racket-lang.org/reference/Byte_and_String_Input.html#(def.((quote.~23~25kernel)._peek-char))

Пример (где я использую строку в качестве входного порта для того, чтобы например работать без дополнительного файла данных):

> (define a-string "Foo bar") 
> (define in (open-input-string a-string)) 
> (peek-char in) 
#\F 
> (peek-char in) 
#\F 
> (read-char in) 
#\F 
> (peek-char in) 
#\o 
> (peek-char in) 
#\o 
> (read-char in) 
#\o 
> (read-char in) 
#\o 
> (peek-char in) 
#\space 
+0

СПАСИБО! Это все, что мне нужно было знать. Я могу взять это отсюда:) – Ceelos

Смежные вопросы