Способ мышления-Форт


Глава 4. Детализированная разработка/решение задачи - часть 16


Ничего не сказано о специальных компилирующих словах типа IF, THEN, ELSE и т.д. Компилятор определения через двоеточие ничего не знает об этих словах. Он просто распознает определенные слова как "немедленные" и исполняет их, позволяя им проделывать свою собственную работу. (Смотрите "Начальный курс ...", главу 11.)

Рис.4-7. Традиционный компилятор против Форт-компилятора.

ТРАДИЦИОННЫЙ КОМПИЛЯТОР +-----------------------------+ | IF = #$%&"#$-ku.,"#K | | ELSE = 3"!#$578('%#"!"2" | | THEN = "$64ami%$46#E!Ey!" | | BEGIN = 2!"#$12%$%$%67 | | REPEAT = "!#$$&$$&$%[][] | | WHILE = !"#$+++#"$" | | AGAIN = <><>$&&$&** | / \>~_ IF BOOP THEN BEEP | INTEGER = "#$~*?KACU~"#K?

ФОРТ-КОМПИЛЯТОР +----+ +------+ +--------------------+ | IF | | THEN | | НЕ-IMMEDIATE | /$#!&| |&'&%<>| | = КОМПИЛИРОВАТЬ | / /+----+ +/-----+ | IMMEDIATE |/ / / | = ИСПОЛНИТЬ IF BOOP THEN BEEP | ЧИСЛО

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

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

Текстовый интерпретатор Форта и его адресный интерпретатор также подчиняются этому правилу.

Следующий совет - быть может, самый важный в этой главе:

------------------------------------------------------------ СОВЕТ Не пишите свой собственный интерпретатор/компилятор, если можно использовать готовый из Форта. ------------------------------------------------------------

Один из классов задач состоит в определении языков специального назначения - самодостаточном наборе команд для выполнения определенной работы.


Начало  Назад  Вперед