Этот синтаксис 'a'
является совершенно новым для Forth. Он добавляется как расширение поверх традиционного синтаксиса, который анализирует все на токены с пробелами. Таким образом, 'a'
- это один атомный токен, который затем анализируется как символьный литерал.
' '
не является атомарным токеном, так как он содержит пробельный символ. Скорее, он анализируется как два токена '
. Это на самом деле абсолютно правильный код Forth, потому что '
- это четвертое слово (называемое тиком). В вашем примере первый тик работает на втором. Результат, 34384939008
, является xt для '
.
Что делать вместо этого? Традиционными словами для получения ASCII-кода символа являются CHAR
или [CHAR]
. Первый работает в интерпретируемом режиме, а второй - в скомпилированном режиме. BUT они не работают для конкретного случая символа пробела, потому что снова все пробелы разбираются.
Однако есть еще одно слово, которое толкает символ пробела ASCII: BL
.
lol, tick даже не эзотерическое слово ... неловко ;-) Я только начал с FORTH и пропустил это. –
только один вопрос: что может быть причиной наличия двух разных версий 'char' и' [char] 'в режиме исполнения и компиляции? –
В интерпретируемом коде имеет смысл только «CHAR». Но оба 'CHAR' и' [CHAR] 'могут быть полезны в скомпилированном коде. '[CHAR]' работает во время компиляции, поэтому он анализирует следующее слово в программе. 'CHAR' работает во время выполнения, поэтому он не работает с текстом программы, а затем вводит поток позже. Это может быть удобно, например, немедленные слова. –