Библиотека программиста

«Машины должны работать. Люди должны думать»

Девиз компании IBM

Главная страница > Язык Object Pascal > 4. Синтаксические элементы языка

4. Синтаксические элементы языка

В программе используются символы таблицы ASCII. Символ пробел (space) и управляющие символы (control characters) с кодами 0..31 называются «пустыми» символами (blanks) и используются, наряду с комментариями, в качестве разделителей (separators).

Программа состоит из лексем (token), которые отделяются друг от друга разделителями (separator). Лексема – это минимальная значимая единица текста программы. Из лексем составляются:

Ø описания (declarations);

Ø выражения (expressions);

Ø операторы (statements).

Лексемы подразделяются на следующие категории:

Ø специальные символы (special symbols);

Ø идентификаторы (identifiers);

Ø зарезервированные слова (reserved words);

Ø директивы (directives);

Ø числа (numerals);

Ø метки (labels);

Ø строки символов (character string).

Специальные символы – те же, что и в Borland Pascal:

# $ & ' ( ) * + , – . / : ; < = > @ [ ] ^ { }

К специальным символам относятся также следующие пары символов:

(* (. *) .) .. // := <= >= <>

Новая пара символов – это //, используемая для однострочного комментария.

Идентификаторы – составляются по тем же правилам, но длина идентификатора может быть любой. В идентификаторе распознаются первые 255 символов.

Зарезервированные слова.

and

downto

in

or

string

array

else

inherited

out

then

as

end

initialization

packed

threadvar

asm

except

inline

procedure

to

begin

exports

interface

program

try

case

file

is

property

type

class

finalization

label

raise

unit

const

finally

library

record

until

constructor

for

mod

repeat

uses

destructor

function

nil

resource-
string

var

dispinterface

goto

not

set

while

div

if

object

shl

with

do

implementation

of

shr

xor

В дополнение к приведенным в таблице идентификаторы private, protected, public, published и automated ведут себя как зарезервированные слова в описаниях объектов и классов, а вне их трактуются как директивы компилятора.

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

Директивы компилятора

absolute

dynamic

name

protected

resident

abstract

export

near

public

safecall

assembler

external

nodefault

published

stdcall

automated

far

overload

read

stored

cdecl

forward

override

readonly

virtual

contains

implements

package

register

write

default

index

pascal

reintroduce

writeonly

dispid

message

private

requires

Числа, метки и строки символов – подчиняются тем же правилам, что и в BP.

Комментарии – вводятся с помощью фигурных скобок и символов //. Директива компилятора записывается так же, как и в ВР, например, {$R+}.

Операции(operators):

@, not, ^, *, /, div, mod, and, shl, shr, as, +, –, or,

xor, =, >, <, <>, <=, >=, in, is.

Новыми являются as и is. Они применяются к экземплярам (instances) классов. Операция as используется для приведения типа экземпляра класса, а is – для проверки принадлежности экземпляра класса определенному типу.

Арифметические, булевские, битовые операции и операции над строками – трактуются так же, как и в ВР.

Операции над указателями – трактуются так же, как и в ВР.

Операция

Смысл

Типы операндов

Тип результата

Пример

+

прибавление к указателю

указатель на символ, целый

указатель на символ

P + I

-

вычитание из указателя

указатель на символ, целый

указатель на символ, целый

P - Q

^

разыменование указателя

указатель

базовый тип указателя

P^

=

равенство

указатель

Boolean

P = Q

<>

неравенство

указатель

Boolean

P <> Q

Операции над множествами и операции отношения – те же. Операции отношения применимы также к экземплярам классов (равно и не равно).

Вызовы функций – допускается вызывать функцию как процедуру. Также разрешается указывать пустые круглые скобки после имени функции или процедуры, которая не имеет параметров.

Приведение типа (typecasts) имеет такой синтаксис:

typeIdentifier (expression)

Тип значения выражения должен быть задан идентификатором типа typeIdentifier. Если выражение expression является переменной, говорят о приведении типа переменной (variable typecast), в противном случае ­– о приведении типа значения (value typecast).

В случае приведения типа значения идентификатор типа и тип значения должны быть оба порядкового типа (ordinal) или типа указатель:

Integer('A')

Char(48)

Boolean(0)

Color(2)

Longint(@Buffer)

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

Можно приводить любую переменную к любому типу, при условии, что они имеют одинаковый размер и нет смешения целочисленного и вещественного типов, например:

Char(I)

Boolean(Count)

TSomeDefinedType(MyVariable)

var MyChar: char;

Shortint(MyChar) := 122;





<< Предыдущая статья
«3. Структура программы и модулей»
Следующая статья >>
5. Типы данных