Базовые элементы

В настоящей главе рассматриваются базовые элементы Maple-языка в предположении, что читатель в определенной мере имеет представление о работе в Windows-среде и с самим пакетом в режиме его графического меню.

Определение Maple-языка можно условно разбить на четыре базовые составляющие, а именно: алфавит, лексемы, синтаксис и семантику. Именно две последние составляющие и определяют суть того или иного языка. Синтаксис составляют правила образования корректных предложений из слов языка, которые должны строго соблюдаться. В случае обнаружения на входе Maple-предложения с синтаксической ошибкой выводится диагностическое сообщение, сопровождаемое “^”-указателем на место возможной ошибки или установкой в место ошибки |-курсора, как это иллюстрирует следующий фрагмент:

> A:= sqrt(x^2+y^2+z^2); V:=x*56 |Z:= sin(x)/(a+b);
>Error, missing operator or `;`
> A:= sqrt(x^2+y^2+z^2): V:= x**|*56: Z:= sin(x)/(a+b);
Error, `*` unexpected
> read `C:\\ARM_Book\\Grodno\\Academy.99`:
on line 0, syntax error, `*` unexpected:
VGS:=56***sin(x)/sqrt(Art^2+Kr^2)-98*F(x,y);
________^
Error, while reading `C:\ARM_Book\Grodno\Academy.99`

При этом следует иметь в виду два обстоятельства:

1) идентифицируется только первая встреченная ошибка

2) при наличии синтаксических ошибок (например, несогласования открывающих и закрывающих скобок) в сложных выражениях язык может затрудняться с точной их диагностикой, идентифицируя ошибочную ситуацию сообщением вида “ `;` unexpected”, носящим в целом ряде случаев весьма приблизительный характер.

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

В отличие от синтаксиса, определяющего правила составления корректных языковых конструкций, семантика языка определяет алгоритмы их обработки, т.е. определяет их понятийное назначение с точки зрения самого языка. Например, результатом обработки конструкции вида “W:= 57*sin(19.99);” является присвоение W-переменной результата произведения целого числа “57” и значения sin-функции в точке “19.99” ее вызова. При этом, определяется как собственно результат, так и его тип. В связи со сказанным наряду с синтаксическими, как правило, распознаваемыми языком, могут возникать и семантические ошибки, которые язык не распознает, если они при этом, не инициируют, в свою очередь, ошибок выполнения. Типичным примером семантических ошибок является конструкция вида “A/B*C”, трактуемая языком как “(A*C)/B”, а не как “A/(B*C)” на первый взгляд. Как правило, семантические ошибки выявляются на стадии выполнения Maple-программы или вычисления отдельных Maple-выражений и данная процедура относится к этапу отладки программ и процедур.

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

♦ заглавные и прописные буквы латинского алфавита (A .. ÷Z; a .. ÷z; 52);

♦ десятичные цифры (0 .. 9; 10);

♦ специальные символы (` ! @ # $ % ^ & * ( ) _ + { } : “ < > ? | - = [ ] ; ‘ ,

♦ заглавные и прописные буквы русского алфавита (кириллицы: A .. Я;

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


Ключевые слова: Смысловая нагрузка:
if, then, else, elif, fi условное if-предложение языка
for, from, in, by, to, while, do, od предложения циклических конструкций
proc, local, global, option, description, end процедурные выражения языка
read, save функции чтения и записи выражений
done, quit, stop функции завершения работы
union, minus, intersect операторы над множествами
and, or, not операторы над множествами
mod оператор вычисления по модулю

Так как ключевые слова несут определенную смысловую нагрузку, то они не могут ис- пользоваться в качестве переменных, в противном случае инициируется ошибка:

> local:= 64;
Error, reserved word `local` unexpected

ДАЛЕЕ