Константы и идентификаторы
До сих пор идентификаторы использовались для построения термов или, точнее, полиномов. Одной из важнейших характеристик ЯП является то, что они используют идентификаторы. Идентификаторы используются в ЯП как имена для различных встречающихся элементов. Они служат, кроме всего прочего, для обозначения промежуточных результатов, как держатели мест ("параметры") в выражениях, и для обозначения функций.
Сначала обсуждается вопрос конкретного синтаксического представления для идентификаторов. Большей частью в ЯП для представления идентификаторов берутся слова над некоторым алфавитом (например, малые латинские буквы и цифры), которые для отличия от чисел должны начинаться по меньшей мере одной буквой. Синтаксическая единица <id> обозначает множество слов, которые допускаются в качестве идентификаторов.
<id>::=<буква>{<символ>}*
<буква>::=а| b| с|...| z
<символ>::=<буква>|0| 1|... |9
В простых аппликативных ЯП идентификаторы служат в качестве элементов носителей или n-местных функций (с любым n
![](image/index-image020.gif)
ENV=def{
![](image/index-image026.gif)
![](image/index-image024.gif)
Интерпретация I есть отображение:
I: <выражение>
![](image/index-image024.gif)
![](image/index-image024.gif)
Для идентификатора х мы определяем:
I
![](image/index-image026.gif)
![](image/index-image026.gif)
Одна специальная конкретизация представляет то отображение, которое всем идентификаторам ставит в соответствие элемент
![](image/index-image019.gif)
![](image/index-image027.gif)
![](image/index-image027.gif)
![](image/index-image024.gif)
с
![](image/index-image027.gif)
![](image/index-image019.gif)
Наряду с идентификаторами часто используются определенные символы и последовательности символов с постоянной, от конкретизации не зависящей интерпретацией. В этом случае говорят о константах. Они могут трактоваться как нульместные функции нашей вычислительной структуры. В ЯП moot быть внесены даже отображения заданной вычислительной структуры и их соотнесение к символам функций ("идентификаторам") вне конкретизации.
В дальнейшем для рассматриваемых ЯП будем предполагать заданными вычислительные структуры BOOL, NAT, SEQ. Тем самым предусмотренные в соответствующих сигнатурах типы и символы функций - частично в инфиксной форме - могут использоваться в программах. В качестве типов, тем самым, пока будем рассматривать только типы, входящие в эти вычислительные структуры. Пусть синтаксическая единица <тип> используется в качестве обозначений типа (т.е. в качестве идентификаторов типа). Для улучшения читаемости программы обозначения типа выделяются жирным шрифтом.