В исходном тексте программы, написанной на языке программирования PLM-51 можно использовать буквы латинского алфавита верхнего и нижнего регистров, а также арабские цифры:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d i f g h i j k l m n o p q r s t
0 1 2 3 4 5 6 7 8 9
В языке программирования PLM-51 используются также специальные символы:
= . / ( ) + ' < > : ; $ _
Кроме того, язык программирования PL/M-51 использует символы пробела, табуляции, возврата каретки, перевода строки.
Компилятор PLM-51 выдает сообщение об ошибке, если в тексте исходной программы встречается символ, отличающийся от символов, перечисленных выше. (То есть строки и символьные константы на русском языке запрещены!) Компилятор воспринимает последовательность непрерывных пробелов как один пробел.
PLM-51 не делает различий между строчными и заглавными буквами, кроме символьных строк. Например, имена xyz и XYZ одинаковы, а строки 'PLM' и 'plm' различны.
Идентификаторы в языке программирования PLM-51 используются для того, чтобы дать имя переменной, процедуре, символической константе или метке оператора. Длина идентификатора не превышает 31 символ. Первый символ обязательно должен быть буквой, последующие символы могут быть буквами, цифрами, знаками _ или $. Знак $ внутри идентификатора всегда игнорируется транслятором и может использоваться для улучшения читаемости идентификатора. Идентификатор, содержащий знак $, является полным эквивалентом идентификатора, из которого этот знак удален.
Примеры правильных идентификаторов:
A XYR_56 DFG$$RTY$CFG RT$EUI RTEUI
Последние два примера эквивалентны.
Идентификаторы должны отличаться от зарезервированных (ключевых) слов.
Лексические единицы, разделители и использование пробелов
Наименьшей единицей операторов PL/M-51 является лексическая единица. Каждая из лексических единиц относится к одному из классов:
- идентификаторы;
- ключевые слова;
- простые ограничители (все специальные символы, кроме $ и _, являются простыми ограничителями);
- составные ограничители (они образуются посредством определенных комбинаций двух спецсимволов, а именно: <>, <=, >=, /*, */);
- числовые константы;
- текстовые строковые константы;
В большинстве случаев вполне очевидно, где заканчивается одна лексическая единица и начинается следующая. Например, в операторе присваивания:
X=AP*(FT-3)/A;
X, AP, FT, A - являются идентификаторами переменных;
3 - числовой константой;
все прочие символы - простыми ограничителями.
Ключевые слова, идентификаторы и числовые константы должны обязательно отделяться друг от друга. Если между двумя идентификаторами, числовыми константами или ключевыми словами не может быть указан простой или составной ограничитель, то в качестве разделителя между ними должен вставляться символ пробела. Вместо одного символа пробел может использоваться непрерывная последовательность символов пробела.
Целочисленные константы
Целочисленные константы могут быть записаны как двоичные, восьмеричные, десятичные или шестнадцатеричные числа в зависимости от того, какая система счисления удобнее для представления константы. Компилятор распознает основание системы счисления по одной из букв B, Q’ O’ D или Н, следующей за числом (суффикс).
Буква B используется для обозначения двоичных чисел. Примеры записи двоичных констант:
1001b, 1000$1100B.
Эти константы удобно использовать при работе непосредственно с выводами портов или с отдельными битами внутренних регистров специального назначения.
Буквы 'O' или 'Q' используется для обозначения восьмеричных чисел (рекомендуется буква Q).
Для обозначения десятичных чисел используется буква D. Если буква за числом отсутствует, то считается, что это десятичная константа.
Шестнадцатеричные цифры определяются по букве H. Первым символом шестнадцатеричной константы обязательно должна быть цифра, это отличает ее от идентификаторов. Например, шестнадцатеричное представление числа 163 должно быть записано как 0A3H, а не А3Н, что будет принято компилятором за идентификатор.
Если константа содержит цифру, недопустимую в данной системе счисления, то данная константа считается ошибочной.
Максимальное значение целочисленной константы с размерностью word:
1111$1111$1111$1111В = 177777Q = 65535D = 0FFFFH
Примеры правильных целочисленных констант:
12AH, 2, 33Q, 1010B, 55D, 0BF3H, 65535, 0FC05H
Примеры синтаксически недопустимых целочисленных констант:
12AF - шестнадцатеричная константа не имеет буквы Н в конце, поэтому по умолчанию для нее принимается десятичная система счисления, но тогда в ней присутствуют недопустимые символы.
12AD - последний символ D может быть интерпретирован как основание системы счисления, но тогда символ А не десятичная цифра. Если же это шестнадцатеричная константа, то тогда в ней отсутствует указатель системы счисления буква Н.
11А2В - А и 2 недопустимые цифры для двоичного числа. Если необходимо записать шестнадцатеричную константу, то надо указать суффикс Н.
2ADGH - символ G недопустим при записи шестнадцатеричных чисел.