Формализуем основные конструкции языка программирования SML посредством
Неформально определим синтаксис (языка программирования или математической теории) как форму конструкций (программы или теории) и способов их комбинирования. Более точное определение синтаксиса будет сформулировано далее в ходе лекции.
Определим понятие синтаксиса более строго.
Под синтаксисом понимают раздел описания формального математического языка или языка программирования, исследующий вид, форму и структуру конструкций (без учета их значения или практической применимости).
Забегая вперед, заметим, что значение конструкций языка программирования описывается и исследуется
Основной задачей синтаксиса является определение формы и вида допустимых языковых конструкций. Эту задачу можно решить путем перечисления описаний всех языковых конструкций. Одним из механизмов такого описания является уже упомянутая нами нотация
Мы будем рассматривать параллельно
Для формирования правильного понимания роли и места синтаксиса в исследовании языков программирования рассмотрим обобщенную схему трансляции исходного текста программы (написанной, например, на языке программирования SML) в машинный код.
По завершении
Наконец, в случае, если все конструкции языка, присутствующие в тексте программы, являются
Рассмотрим синтаксис языка программирования SML в сравнении с синтаксисом
Для большей наглядности и сопоставимости формализаций синтаксиса обоих языков (языка формальной математической теории и языка программирования) будем использовать единую нотацию, а именно,
Прежде всего, необходимо договориться об обозначениях.
Рассмотрим традиционные обозначения
Фактически
"::=" отделяет определяемую конструкцию от составляющих ее ранее определенных базовых конструкций
Определяемая конструкция записывается слева от "::=" в угловых скобках "<" и ">".
Альтернативы (возможные варианты) конструкций перечисляются по вертикали.
Цитирование (подобно тому, как мы
Проиллюстрируем формализацию синтаксиса посредством нотации
Поясним смысл приведенных обозначений.
В данном примере определяется понятие выражения, синтаксическое представление которого может быть выражено в виде одной из следующих альтернатив:
Оказывается, что синтаксис языка программирования SML имеет ряд очевидных аналогий с синтаксисом
Для иллюстрации перечисленных выше тезисов рассмотрим важнейшие синтаксические категории языка программирования SML.
Под
Описанием будем в дальнейшем называть запись, связывающую
Под термином " "if", "then", "let" ). Напомним, что в данной нотации
Комментарием назовем произвольный поясняющий текст к программе, который, согласно синтаксису языка SML, положено заключать в ограничители вида "(*" и "*)".
Продолжим обсуждение синтаксических категорий языка программирования SML.
В частности, рассмотрим структуру основных синтаксически допустимых
Приведем соответствующую формализацию в терминах
<выражение> ::= <идентификатор> | <литерал> |
<выражение> <выражение> |
<выражение> <идентификатор> <выражение>
Как видно из
Продолжим обсуждение выражений.
В дополнение к перечисленным
if <выражение> then <выражение>
else <выражение> |
( <выражение> ... <выражение> ) |
let <описание> in <выражение> end |
( <выражение> )
if ("если"), then ("тогда") и else ("в противном случае"), называемые let ("положим"), in ("в") и end ("конец"), которые определяют операцию подстановки описания в Продолжим обсуждение синтаксических категорий языка программирования SML.
Перейдем к рассмотрению структуры синтаксически допустимых видов описаний объектов языка.
Приведем соответствующую формализацию в терминах
<описание> ::=
val < идентификатор > = < выражение > |
fun < идентификатор > < идентификатор > =
< выражение > |
local < описание > in <описание> end
Синтаксически допустимыми описаниями языка программирования SML, как следует из представленной
val и "=", которые обозначают fun и "=", которые обозначают local, in и end, которые обозначают локальное определение первого описания в контексте второго.Продолжим обсуждение синтаксических категорий языка программирования SML.
Перейдем к рассмотрению структуры синтаксически допустимых описаний
Приведем соответствующую формализацию в терминах
<тип> ::= int | bool | <тип> * ... * <тип> | <тип> -> <тип>
Как следует из представленной
int ;bool ;n -ки элементов определенных n -ки элементов определенных "->".Рассмотрим следующий пример, иллюстрирующий (0,false,1,true) имеет (int*bool*int*bool).
Заметим, что варианты
В ходе лекции нами уже упоминалось о такой синтаксической категории как
Рассмотрим подробнее синтаксические особенности основных видов
Приведем соответствующую формализацию в терминах
<литерал> ::= <литерал целого типа> |
<литерал строкового типа> |
<литерал вещественного типа>
Как следует из представленной
int и лежащие в диапазоне от -230 до +230 (последнее обстоятельство связано с особенностями машинного представления данных);string и представляющие собой алфавитно-цифровые последовательности символов в коде формата ASCII;real, обобщенную форму вида M x 10E, где M - мантисса в диапазоне от -1 до +1, а E - порядок в соответствующем диапазоне.Заметим, что значение (т.е.
Продолжим обсуждение синтаксических категорий языка программирования SML.
Перейдем к рассмотрению фундаментальной с точки зрения формализации языков
Приведем соответствующую формализацию в терминах
<выражение> <выражение>
Как следует из представленной
Проиллюстрируем
Рассмотрим succ, которая задается определением
fun succ n = n+1;
и осуществляет прибавление единицы к (целочисленному) аргументу.
Для рассматриваемой succ succ 2 и вычисляться в ходе выполнения программы в значение 3.
Продолжим обсуждение синтаксических категорий языка программирования SML.
Перейдем к рассмотрению синтаксически допустимых конструкций языка программирования SML, называемых
Приведем соответствующую формализацию в терминах
if <выражение> then <выражение> else <выражение>;
Как видно из if, then и else, уже упоминавшихся нами в ходе лекции.
Добавим к сказанному ряд необходимых замечаний. Во-первых, результатом вычисления первого выражения должно быть логическое значение. Во-вторых, else, не является обязательной.
Заметим также, что SML и имеют вид: "=" (равно), "<" (меньше), ">" (больше), "<=" (меньше или равно), ">=" (больше или равно), "<>" (не равно). Результатом вычисления любой из этих
Проиллюстрируем синтаксис SML:
if n>=10 then 1 else 0;
Заметим, что приведенное
Продолжим обсуждение основных синтаксических категорий языка программирования SML.
Рассмотрим структуру синтаксически допустимых конструкций, известных под названием
Приведем соответствующую формализацию в терминах
let <описание> in <выражение> end;
Как видно из let, in и end.
Как можно заключить из синтаксиса,
Проиллюстрируем синтаксис
Рассмотрим следующие
let val n=2 in n+1 end; let k=9876*8765 in (k-1, k, k+1) end;
Как можно заметить, первое
В ходе лекции неоднократно упоминалось понятие
Рассмотрим подробнее этот весьма важный (в особенности при реализации
Приведем формализацию синтаксически допустимого представления
(<выражение>, ..., <выражение>)
Исходя из вида
Заметим, что
Проиллюстрируем синтаксис конструкции
Пример 1: (1, 2*1, 2*2*1) Пример 2: (1, true, 0, false)
Заметим, что в случае единственного выражения
Полученный в ходе лекции опыт рассмотрения основных видов синтаксических конструкций языка программирования SML позволяет перейти к формальному синтаксису таких фундаментальных языковых конструкций как описания
Рассмотрим формализации
<описание> ::=
val <идентификатор> = <выражение>
<описание> ::=
fun <идентификатор> <идентификатор> =
<выражение>
Первое определение представляет собой
Проиллюстрируем формальные описания
Пример 1. val x=2;
Пример 2. fun fact n =
if n<2 then 1
else n * fact (n - 1);
Пример 3. fun f (x,y) = x*x + y*y;
Первый из приведенных примеров представляет собой x, второй - fact вычисления факториала (произведения натуральных чисел от 1 до n ), а третий - двухместной f, вычисляющей сумму квадратов аргументов.
Заметим в заключение, что именно при реализации последней
Итак, в данной лекции были рассмотрены основные виды синтаксических конструкций языка программирования SML. По итогам обсуждения можно сделать следующие выводы:
Для более подробного самостоятельного ознакомления с тематикой лекции рекомендуется следующий список источников: [24, 58].
Формализуем основные конструкции языка программирования SML посредством
Неформально определим синтаксис (языка программирования или математической теории) как форму конструкций (программы или теории) и способов их комбинирования. Более точное определение синтаксиса будет сформулировано далее в ходе лекции.
Определим понятие синтаксиса более строго.
Под синтаксисом понимают раздел описания формального математического языка или языка программирования, исследующий вид, форму и структуру конструкций (без учета их значения или практической применимости).
Забегая вперед, заметим, что значение конструкций языка программирования описывается и исследуется
Основной задачей синтаксиса является определение формы и вида допустимых языковых конструкций. Эту задачу можно решить путем перечисления описаний всех языковых конструкций. Одним из механизмов такого описания является уже упомянутая нами нотация
Мы будем рассматривать параллельно
Для формирования правильного понимания роли и места синтаксиса в исследовании языков программирования рассмотрим обобщенную схему трансляции исходного текста программы (написанной, например, на языке программирования SML) в машинный код.
По завершении
Наконец, в случае, если все конструкции языка, присутствующие в тексте программы, являются
Рассмотрим синтаксис языка программирования SML в сравнении с синтаксисом
Для большей наглядности и сопоставимости формализаций синтаксиса обоих языков (языка формальной математической теории и языка программирования) будем использовать единую нотацию, а именно,
Прежде всего, необходимо договориться об обозначениях.
Рассмотрим традиционные обозначения
Фактически
"::=" отделяет определяемую конструкцию от составляющих ее ранее определенных базовых конструкций
Определяемая конструкция записывается слева от "::=" в угловых скобках "<" и ">".
Альтернативы (возможные варианты) конструкций перечисляются по вертикали.
Цитирование (подобно тому, как мы
Проиллюстрируем формализацию синтаксиса посредством нотации
Поясним смысл приведенных обозначений.
В данном примере определяется понятие выражения, синтаксическое представление которого может быть выражено в виде одной из следующих альтернатив:
Оказывается, что синтаксис языка программирования SML имеет ряд очевидных аналогий с синтаксисом
Для иллюстрации перечисленных выше тезисов рассмотрим важнейшие синтаксические категории языка программирования SML.
Под
Описанием будем в дальнейшем называть запись, связывающую
Под термином " "if", "then", "let" ). Напомним, что в данной нотации
Комментарием назовем произвольный поясняющий текст к программе, который, согласно синтаксису языка SML, положено заключать в ограничители вида "(*" и "*)".
Продолжим обсуждение синтаксических категорий языка программирования SML.
В частности, рассмотрим структуру основных синтаксически допустимых
Приведем соответствующую формализацию в терминах
<выражение> ::= <идентификатор> | <литерал> |
<выражение> <выражение> |
<выражение> <идентификатор> <выражение>
Как видно из
Продолжим обсуждение выражений.
В дополнение к перечисленным
if <выражение> then <выражение>
else <выражение> |
( <выражение> ... <выражение> ) |
let <описание> in <выражение> end |
( <выражение> )
if ("если"), then ("тогда") и else ("в противном случае"), называемые let ("положим"), in ("в") и end ("конец"), которые определяют операцию подстановки описания в Продолжим обсуждение синтаксических категорий языка программирования SML.
Перейдем к рассмотрению структуры синтаксически допустимых видов описаний объектов языка.
Приведем соответствующую формализацию в терминах
<описание> ::=
val < идентификатор > = < выражение > |
fun < идентификатор > < идентификатор > =
< выражение > |
local < описание > in <описание> end
Синтаксически допустимыми описаниями языка программирования SML, как следует из представленной
val и "=", которые обозначают fun и "=", которые обозначают local, in и end, которые обозначают локальное определение первого описания в контексте второго.Продолжим обсуждение синтаксических категорий языка программирования SML.
Перейдем к рассмотрению структуры синтаксически допустимых описаний
Приведем соответствующую формализацию в терминах
<тип> ::= int | bool | <тип> * ... * <тип> | <тип> -> <тип>
Как следует из представленной
int ;bool ;n -ки элементов определенных n -ки элементов определенных "->".Рассмотрим следующий пример, иллюстрирующий (0,false,1,true) имеет (int*bool*int*bool).
Заметим, что варианты
В ходе лекции нами уже упоминалось о такой синтаксической категории как
Рассмотрим подробнее синтаксические особенности основных видов
Приведем соответствующую формализацию в терминах
<литерал> ::= <литерал целого типа> |
<литерал строкового типа> |
<литерал вещественного типа>
Как следует из представленной
int и лежащие в диапазоне от -230 до +230 (последнее обстоятельство связано с особенностями машинного представления данных);string и представляющие собой алфавитно-цифровые последовательности символов в коде формата ASCII;real, обобщенную форму вида M x 10E, где M - мантисса в диапазоне от -1 до +1, а E - порядок в соответствующем диапазоне.Заметим, что значение (т.е.
Продолжим обсуждение синтаксических категорий языка программирования SML.
Перейдем к рассмотрению фундаментальной с точки зрения формализации языков
Приведем соответствующую формализацию в терминах
<выражение> <выражение>
Как следует из представленной
Проиллюстрируем
Рассмотрим succ, которая задается определением
fun succ n = n+1;
и осуществляет прибавление единицы к (целочисленному) аргументу.
Для рассматриваемой succ succ 2 и вычисляться в ходе выполнения программы в значение 3.
Продолжим обсуждение синтаксических категорий языка программирования SML.
Перейдем к рассмотрению синтаксически допустимых конструкций языка программирования SML, называемых
Приведем соответствующую формализацию в терминах
if <выражение> then <выражение> else <выражение>;
Как видно из if, then и else, уже упоминавшихся нами в ходе лекции.
Добавим к сказанному ряд необходимых замечаний. Во-первых, результатом вычисления первого выражения должно быть логическое значение. Во-вторых, else, не является обязательной.
Заметим также, что SML и имеют вид: "=" (равно), "<" (меньше), ">" (больше), "<=" (меньше или равно), ">=" (больше или равно), "<>" (не равно). Результатом вычисления любой из этих
Проиллюстрируем синтаксис SML:
if n>=10 then 1 else 0;
Заметим, что приведенное
Продолжим обсуждение основных синтаксических категорий языка программирования SML.
Рассмотрим структуру синтаксически допустимых конструкций, известных под названием
Приведем соответствующую формализацию в терминах
let <описание> in <выражение> end;
Как видно из let, in и end.
Как можно заключить из синтаксиса,
Проиллюстрируем синтаксис
Рассмотрим следующие
let val n=2 in n+1 end; let k=9876*8765 in (k-1, k, k+1) end;
Как можно заметить, первое
В ходе лекции неоднократно упоминалось понятие
Рассмотрим подробнее этот весьма важный (в особенности при реализации
Приведем формализацию синтаксически допустимого представления
(<выражение>, ..., <выражение>)
Исходя из вида
Заметим, что
Проиллюстрируем синтаксис конструкции
Пример 1: (1, 2*1, 2*2*1) Пример 2: (1, true, 0, false)
Заметим, что в случае единственного выражения
Полученный в ходе лекции опыт рассмотрения основных видов синтаксических конструкций языка программирования SML позволяет перейти к формальному синтаксису таких фундаментальных языковых конструкций как описания
Рассмотрим формализации
<описание> ::=
val <идентификатор> = <выражение>
<описание> ::=
fun <идентификатор> <идентификатор> =
<выражение>
Первое определение представляет собой
Проиллюстрируем формальные описания
Пример 1. val x=2;
Пример 2. fun fact n =
if n<2 then 1
else n * fact (n - 1);
Пример 3. fun f (x,y) = x*x + y*y;
Первый из приведенных примеров представляет собой x, второй - fact вычисления факториала (произведения натуральных чисел от 1 до n ), а третий - двухместной f, вычисляющей сумму квадратов аргументов.
Заметим в заключение, что именно при реализации последней
Итак, в данной лекции были рассмотрены основные виды синтаксических конструкций языка программирования SML. По итогам обсуждения можно сделать следующие выводы:
Для более подробного самостоятельного ознакомления с тематикой лекции рекомендуется следующий список источников: [24, 58].
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.