Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 15:24

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Как работает форт? (в качестве ликбеза)
СообщениеДобавлено: Пт июн 19, 2009 19:29 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Ответ на этот вопрос явно необходим, а по сему попытаюсь это сделать здесь, объясняя как можно проще.

(Ссылок не даю, потому что в каждой мало-мальски правильной книжке по Форту все это рассказано, возможно, иными словами, но по сути - то же)


Первое. Как работает простейший интерпретатор?

1. Интерпретатор берет из входного потока (файла, строки ввода и т.п.) слова.
(Каждому (опредленному) слову в форте соответствует некая программа.)
2. Интерпретатор находит программу, соответствующую взятому слову
3. и вызывает ее на исполнение.
После чего интерпретатор берет следующее слово и снова повторяет все действия по кругу, т.е.
4. -- зацикливание на 1.

Если интерпретатору попадается незнакомое(неправильное) слово, то он начинает "ругаться".

Второе. Как работает простейший компилятор?

1. Компилятор берет из входного потока (файла, строки ввода и т.п.) слова.
(Каждому (опредленному) слову в форте соответствует некая программа.)
2. Компилятор находит программу, соответствующую взятому слову
3. и компилирует ее вызов в компилируемую программу.
После чего компилятор берет следующее слово и снова повторяет все действия по кругу, т.е.
4. -- зацикливание на 1.

Для того, чтобы переключаться между компилятором и интерпретатором существуют специальные слова, которые при исполнении делают это переключение. Исполнение этих слов в режиме интерпретации не вызывает сложностей - встретилось слово переключения на компиляцию - исполнилось, и переключение произошло.

А вот, чтобы переключиться назад, т.е. с компиляции на интерпретацию, переключающие слова должны иметь специальный признак - признак немедленного исполнения. Компилятор, встретив слово с таким признаком не компилирует его, а исполняет. Поэтому слово переключения с компиляции на интерпретацию имеет такой признак.

Теперь о том, как же связываются скомпилированные программы с новыми словами?

Для этого существуют так называемые определяющие слова.
Определяющее слово создает в словаре форта новую статью и включает компиляцию так, что все последующие слова компилируются в тело нового слова.

Когда программа написана, другое специальное слово (с признаком немедленного исполнения!) заканчивает определение - компилирует в конец программы код возврата и переключает систему в режим интерпретации.

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

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт июн 19, 2009 20:37 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Цитата:
и компилирует ее вызов
инлайн не учтён :D


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт июн 19, 2009 23:15 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
хм... А вам только шашечки подавай?

Речь о смысле жизни, а не о выкрутасах преисподней!

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс июн 21, 2009 23:31 
Не в сети
Аватара пользователя

Зарегистрирован: Чт апр 26, 2007 21:09
Сообщения: 303
Благодарил (а): 12 раз.
Поблагодарили: 10 раз.
WingLion писал(а):
Речь о смысле жизни, а не о выкрутасах преисподней!

+1000
Это не на утро после отмечания бакалавра такие мысли в голову заходят?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс июн 21, 2009 23:42 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
А отмечания бакалавра еще и не было... :) оно на следующую неделю намечено... когда диплом получу...

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB