КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Синтаксические особенности основных видов литералов
Синтаксис типу Перейдем к рассмотрению структуры синтаксически допустимых описаний типов объектов языка. Приведем соответствующую формализацию в терминах БНФ. <тип>::= int | bool | <тип> *... * <тип> |<тип> -> <тип>Как следует из представленной БНФ, синтаксически допустимыми типами языка программирования SML являются: 1. Целочисленные величины, обозначаемые зарезервированным словом int; 2. Логические значения, обозначаемые зарезервированным словом bool; 3. Кортежи - упорядоченные n-ки элементов определенных типов; 4. Функции - упорядоченные n-ки элементов определенных типов, соединенных зарезервированными символами "->". Рассмотрим следующий пример, иллюстрирующий приписывание типов в языке SML. Константа типа кортеж вида (0,false,1,true) имеет тип (int*bool*int*bool). Заметим, что варианты типов (1) и (2) являются элементарными, тогда как (3) и (4) представляют собой производные типы с явно указанной (или выводимой) структурой, откуда и происходит название "структурированный тип". Рассмотрим такие синтаксические категории как литералы, или базовые типы SML, состоящие из определенных последовательностей символов. Приведем соответствующую формализацию в терминах БНФ. <литерал>::= <литерал целого типа> | <литерал строкового типа> | <литерал вещественного типа>
Как следует из представленной БНФ, синтаксически допустимыми типами литералов в языке программирования SML являются следующие: 1. Целочисленные литералы, имеющие тип int и лежащие в диапазоне от -230 до +230 (последнее обстоятельство связано с особенностями машинного представления данных); 2. Строковые литералы, имеющие тип string и представляющие собой алфавитно-цифровые последовательности символов в коде формата ASCII; 3. Вещественные литералы, имеющие базовый тип real, обобщенную форму вида M x 10E, где M - мантисса в диапазоне от -1 до +1, а E - порядок в соответствующем диапазоне. Заметим, что значение (т.е. семантика) литералов в полной мере определяется их лексическим (а, значит, и синтаксическим) представлением. Продолжим обсуждение синтаксических категорий языка программирования SML.
Аппликация функций Перейдем к рассмотрению фундаментальной с точки зрения формализации языков функционального программирования - ламбда-исчисления - операции аппликации функций. Соответствующая формализация в терминах БНФ имеет вид: <выражение> <выражение>
Как следует из представленной БНФ, синтаксически допустимая конструкция языка программирования SML, описывающая операцию аппликации, весьма точно соответствует описанию операции аппликации в ламбда-исчислении. Проиллюстрируем аппликацию функции к аргументу в языке программирования SML следующим примером. Рассмотрим функцию succ, которая задается определением fun succ n = n+1;и осуществляет прибавление единицы к (целочисленному) аргументу. Для рассматриваемой функции succ синтаксически корректная аппликация может иметь вид succ 2 и вычисляться в ходе выполнения программы в значение 3.
Дата добавления: 2014-01-07; Просмотров: 334; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |