Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 4.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
95.74 Кб
Скачать

Лекция №4 Темы «Синтаксис и семантика языка программирования Паскаль»

4.1. Общие определения

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

Синтаксис языка - совокупность правил, определяющих допустимые конструкции (слова, предложения) языка, его форму.

Семантика языка - совокупность правил, определяющих смысл синтаксически корректных конструкций языка, его содерэюание.

Языки программирования относятся к группе формальных языков, для которых в отличие от естественных языков однозначно определены синтаксис и семантика. Описание синтаксиса языка включает определение алфавита и правил построения различных конструкций языка из символов алфавита и более простых конструкций. Для этого обычно используют форму Бэкуса-Наура (БНФ) или синтаксические диаграммы. Описание конструкции в БНФ состоит из символов алфавита языка, названий более простых конструкций и двух специальных знаков:

«::=» - читается как «может быть заменено на», «|» - читается как «или».

При этом символы алфавита языка, которые часто называют терминальными символами или терминалами, записывают в неизменном виде. Названия конструкций языка (нетерминальные символы или нетерминалы), определяемых через некоторые другие символы, при записи заключают в угловые скобки («< », « >»).

Например, правила построения конструкции <Целое>, записанные в БНФ, могут выглядеть следующим образом:

<Целое> ::= <3нак> <Целое без знака> | <Целое без знака>

<Целое без знака> ::= <Целое без знака> <Цифра> | <Цифра>

<Цифра> ::= О | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

<3нак> ::= + | -

Для отображения того, что конструкция <Целое без знака> может включать неограниченное количество цифр, использовано правило с левосторонней рекурсией. Многократное применение этого правила позволяет построить целое число с любым количеством цифр.

Синтаксические диаграммы отображают правила построения конструкций в более наглядной форме. На такой диаграмме символы алфавита изображают блоками в овальных рамках, названия конструкций - в прямоугольных, а правила построения конструкций - в виде линий со стрелками на концах. При этом, если линия входит в блок, то в описываемую конструкцию должен входить соответствующий символ. Разветвление линии означает, что при построении конструкции возможны варианты.

На рис.4.1 представлена синтаксическая диаграмма, иллюстрирующая первые два правила описания конструкции <Целое>. Из диаграммы видно, что целое число может быть записано со знаком или без и включать произвольное количество цифр.

Рис.4.1. Синтаксическая диаграмма конструкции <Целое>

Для описания синтаксических конструкций своего языка Н.Вирт использовал именно синтаксические диаграммы, поэтому в тех случаях, когда словесное описание синтаксиса конструкции длинно и нечетко, мы будем использовать синтаксические диаграммы.

4.2. Словарь языка Pascal

Язык программирования Pascal использует следующий набор символов:

  • Английские и русские буквы, которые могут быть как строчными, так и прописными.

  • Арабские цифры.

  • Знаки операций и знаки, входящие в составное обозначение операций: + - * / : = < >

  • Ограничители: . , ( ) [ ] { } : ; ‘ “

  • Специальные символы: $ @ # & ^ _ ~ %

Для обеспечения использования ячеек памяти служат переменные. Переменная – это имя физического участка памяти, в котором в любой момент времени может храниться только одно значение. Для обозначения участков памяти используют идентификаторы (имена).

Идентификаторы (имена переменных, констант программ, модулей, функций, процедур) записываются с помощью допустимых в Pascal символов и должны удовлетворять следующим правилам:

  • имя должно состоять только из английских букв, цифр и символов подчеркивания (в идентификаторах в Паскале прописные и строчные буквы не различаются);

  • имя может начинаться только с английской буквы или символа подчеркивания.

Слова, употребляемые в большинстве языков программирования, в том числе и Pascal, делятся на три группы: зарезервированные (ключевые) слова; предопределенные имена и идентификаторы, определяемые программистом.

Служебные (зарезервированные, ключевые) слова – это слова языка программирования, которые имеют специальное, раз и навсегда закрепленное за ними значение. В программе нельзя использовать идентификаторы, совпадающие по написанию ключевыми словами (например, нельзя обозначить переменную именем begin).

Ключевые слова языка программирования Паскаль:

and

end

nil

set

array

file

not

then

begin

for

of

to

case

function

or

type

const

goto

packed

until

div

if

procedure

var

do

in

program

while

downto

label

record

with

else

mod

repeat

Предопределенные (стандартные) имена также имеют специальный (заранее заданный) смысл. Однако программист может обходить закрепленные за ними значения и использовать их в качестве имен, определяемых программистом. Если программист не определит явно, для каких целей применяется то или иное стандартное имя в программе, оно будет восприниматься в присущем данному имени предопределенном смысле (например, предопределенными являются имена Integer, Writeln и др.).

Пользовательские имена определяются программистом и должны быть явно объявлены в программе.

Десятичные числа всегда начинаются с цифры, перед которой может стоять знак числа, + или -.

Действительные числа изображаются в двух форматах. В формате с фиксированной точкой явно указывают положение десятичной точки (например, 4.505, -16.25, +1.0). В формате с плавающей точкой используется десятичный порядок, обозначаемый прописной или строчной буквой E, после которой идет целое число, указывающее значение порядка, например, 8e10, 1.62e-3, 0.8E+3.

В языке Pascal максимально допустимое целое число равняется 2147483647 (оно содержится в предопределенной целой константе MaxLongInt). Чтобы получить это число достаточно выполнить выражение

writeln(maxlongint);

Диапазон целых чисел от -2147483647 до 2147483647. Предопределенная в Паскале целая константа MaxInt содержит в себе значение 32767

writeln(maxint);

Распространенные компиляторы с Pascal позволяют оперировать действительными числами до 38 порядка, а некоторые – до 67 порядка.

Целое число может задаваться не только в десятичной, но и в шестнадцатеричной системе счисления. Шестнадцатеричному числу предшествует знак $.

Текстовым литералом (строкой) в языке Pascal называют последовательность любых допустимых символов, стоящих между апострофами (например, ‘Hello World!’). Если в качестве символа строки необходимо использовать апостроф, то записывают подряд два апострофа

writeln('Don''t do it')

Строку можно задавать также в виде последовательности, образованной из символов # с последующим цифровым кодом требуемого символа (например, запись #72#73#33 эквивалентна строке 'HI!'). В строковых данных прописные и строчные буквы различаются.

Пробелы являются разделителями. Между любыми именами, числами, ключевыми словами должен стоять, по крайней мере, один разделитель, а может их быть и сколько угодно. Но нельзя отделять один символ от другого внутри имени, числа, либо ключевого слова.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]