Интернет магазин китайских планшетных компьютеров



Компьютеры - Конкатенативный язык программирования - Постфиксная нотация

22 января 2011


Оглавление:
1. Конкатенативный язык программирования
2. История и определение
3. Постфиксная нотация
4. Определения и лексический анализ
5. Стековый эффект



Программы на конкатенативных языках имеют сходство с постфиксной нотацией или обратной польской записью арифметических выражений. Аргументы, или программный код, чьим результатом являются аргументы предшествуют слову, использующему данные аргументы. Литералы, такие как числа, помещают значения на стек; другие слова могут брать со стека одни значения и помещать на него другие.

Например:

2 3 + .

В языках Forth и Factor это — корректная программа: 2 и 3 — слова литералы, помещающие на стек представляемые ими значения. + — это математический оператор; он снимает со стека два верхних значения и помещает на него их сумму. Наконец, оператор . снимает вершину стека и печатает её значение на дисплее. Так эта программа выведет число 5.

Управление последовательностью действий

В рамках полноты по Тьюрингу, язык должен иметь некоторые средства управления последовательностью действий — возможность делать переходы или совершать тот или иной выбор на основании значения выражения. Конкатенативные языки реализуют управление последовательностью действий различными способами. Сравним два примера из языков Forth и Factor:

= IF 23 ELSE 17 THEN
= if

Оба примера делают одно и то же: сравнивают два верхних элемента стека и, если они равны, оставляют на стеке значение 23; в противном случае — значение 17. В Форте слово IF — специальное; оно приводит к тому, что программный код предшествующий слову ELSE будет выполнен если условие истинно, если же оно ложно, выполняется код после ELSE. В языке Factor, у слова if другая функция; оно принимает условие и две цитаты — программных фрагмента взятых в кавычки; слово if выполняет первую или вторую «цитату», в зависимости от того, является ли выражение истинным. Примерно так же работает оператор ifelse языка PostScript.

Формализация цитирования кода, средства, полностью унаследованного из Лиспа, отличает поздние конкатенативные языки, такие как Factor или PostScript, от ранних, таких как Forth. Слова, оперирующие цитатами, иногда называют комбинаторами.



Просмотров: 3941


<<< Компонентный Паскаль