Константы и переменные - объявление

Грамматика


CONST_BLOCK : const CONST_BODY VAR_BLOCK : var VAR_BODY CONST_BODY : CONST_DECL CONST_BODY : CONST_BODY CONST_DECL VAR_BODY : VAR_DECL VAR_BODY : VAR_BODY VAR_DECL VAR_DECL : name ":" DATATYPE [INITIALIZER] ";" INITIALIZER : "=" EXPR CONST_DECL : name ":" DATATYPE "=" EXPR ";"

Константы

Константы объявляются в блоке implementation, в самом начале блока. Блок объявлений констант начинается со слова const, за которым идут объявления. Пустые блоки объявлений не допускаются - если ключевое слово const появилось, то должна быть объявлена хотя бы одна константа. Объявление константы состоит из её имени, двоеточия, типа данных, знака равенства и инициализатора - выражения, задающего значение константы. Выражение-инициализатор может содержать только константы и операции над ними, вызовы функций запрещены. Завершается объявление точкой с запятой. Константы бывают только простых типов - объявлять структурированные константы нельзя.

Переменные

Переменные объявляются в блоках declaration и implementation, после констант, если они есть, иначе в самом начале блока, а также внутри подпрограмм. Блок объявлений переменных начинается со слова var, за которым идут объявления. Пустые блоки объявлений не допускаются - если ключевое слово var появилось, то должна быть объявлена хотя бы одна переменная. Объявление переменной состоит из её имени, двоеточия и типа данных. Завершается объявление точкой с запятой. Для переменных простого типа в разделе implementation возможна необязательная часть объявления - инициализатор, задающий начальное значение переменной. Выражение-инициализатор может содержать только константы и операции над ними, вызовы функций запрещены. В отличие от обычного Паскаля, в алгоритмическом Паскале нельзя указывать несколько имён переменных через запятую в одной строке - если есть две переменных одного типа, нужны два отдельных объявления.

Примеры


const DeltaX : Real = 0.0001; Dimension : Integer = 4; B : Boolean = True; Size : Integer = 9.2;//ошибка - 9.2 несовместимо с вещественным типом var A : Real; A1 : Real = DeltaX*Dimension; E : Real = DeltaX-A1;//ошибка - инициализатор содержит переменную A1