6033

Розробка лексичного аналізатора (сканеру, scanner)

Лабораторная работа

Информатика, кибернетика и программирование

Розробка лексичного аналізатора (сканеру, scanner) Постановка задачі Розробити програму лексичного аналізатора (ЛА) для підмножини мови програмування SIGNAL. Програма має забезпечувати наступне (якщо це передбачається граматикою варіанту): зг...

Украинкский

2012-12-27

300 KB

3 чел.

Розробка лексичного аналізатора (сканеру, scanner )

Постановка задачі

Розробити програму лексичного аналізатора (ЛА) для підмножини мови програмування SIGNAL.

Програма має забезпечувати наступне (якщо це передбачається граматикою варіанту):

  •  згортання ідентифікаторів;
  •  згортання ключових слів;
  •  згортання цілих десяткових констант;
  •  згортання дійсних десяткових констант;
  •  згортання строкових констант, якщо вони визначені в заданій мові;

Також у всіх варіантах необхідно забезпечити:

  •  видалення коментарів, заданих у вигляді (*<текст коментарю>*)

Для кодування лексем необхідно використовувати числові діапазони, вказані в Таблиці 1.

  1. Діапазони кодування лексем

Вид лексеми

Числовий діапазон

односимвольні роздільники та знаки операцій (: / ; +  і т.д.)

0 – 255,

Тобто коди ASCII

багатосимвольні роздільники ( := ,<= ,<=, і т.д.)

301 - 400

цілі десяткові константи

401 - 500

символьні константи

501 - 600

рядкові константи

601 - 700

ключові слова (BEGIN, END, FOR) та ідентифікатори

701 – 1000

Входом ЛА має бути наступне:

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

Вихід ЛА має бути наступним:

  •  закодований рядок лексем;
  •  таблиці ідентифікаторів, числових, символьних та рядкових констант, сформовані для конкретної програми;

Зміст звіту

Зміст оформлюється згідно до вимог, що пред’являються до лабораторних робіт і має містити наступне:

  •  титульний аркуш;
  •  індивідуальне завдання згідно до варіанту;
  •  таблиці або граф автомату, що задає алгоритм ЛА;
  •  лістинг вихідної програми ЛА;
  •  контрольні приклади, необхідні для демонстрації всіх конструкцій заданої граматики, а також всіх можливих помилкових ситуацій. Опис кожного контрольного прикладу має містити згенерований рядок лексем та таблиці;

До звіту на якомусь носії інформації має бути додано наступне:

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

Методичні вказівки до виконання роботи.

Побудуємо лексичний аналізатор (ЛА) на прикладі граматики, наведеної нижче

  1. <statement> ® if <expr> then <expr> |  
    if <expr> then <expr>  else <expr> | <empty>
    1.  <expr> ® <term> <operation> <term>
    2.  <operation> ® = | < | >
    3.  <term> ® <number> | <idn>
    4.  <number> ® <digit> | <digits>
    5.  <digits> ® <digit><digits>
    6.  <idn> ® <let><lets_or_digits>
    7.  <lets_or_digits> ® <let><lets_or_digits> |
      <digit><lets_or_digits> | <empty>
    8.  <let> ® a | b | ...  | z
    9.  <digit> ®  0 | 1 | ... | 9

Для побудови ЛА виділимо з заданої граматики токени, для яких побудуємо регулярні визначення:

if ® if

then ® then

else ® else

identifier ® let(let | digit)*

number ® digit*

delimiter ®  = | < | >

whitespace ® space | tab | newline

Побудуємо укрупнену діаграму переходів для даного прикладу (Рис. 1). Стани в діаграмі позначаються еліпсами. Початковий стан позначається еліпсом з товстою лінією, а кінцевий «подвійним» еліпсом. Стани поєднуються між собою дугами з мітками, що означають умову переходу (вхідний сигнал автомату). Значення міток описано нижче. Дуги, що не позначені мітками, означають безумовний перехід до стану.

  1. Укрупнена діаграма переходів ЛА

В укрупненій діаграмі стани відповідають розпізнаванню токенів з такими самими іменами, а також існують два додаткових стани для обробки знайденої помилки та вводу наступного символу. Вважається, що на виході кожного із цих станів, окрім ERR, буде новий, ще необроблений символ.

Значення станів укрупненої діаграми переходів:

  •  S – стартовий стан (стан діаграми переходів в момент початку роботи ЛА);
  •  EXIT – кінцевий стан ЛА;
  •  identifier – обробка токена identifier;
  •  number – обробка токена number;
  •  delimiter – обробка токена delimiter;
  •  whitespace – обробка токена whitespace;
  •  comment – обробка коментарів;
  •  ERR – видача повідомлення про помилку;
  •  INP – введення чергового символу.

Значення міток:

  •  dig – цифра ( 0 .. 9 );
  •  lit – літера ( a .. z );
  •  ws – пробільний символ (пробіл, табуляція, перехід рядку);
  •  dm – роздільник ( =, <, > );
  •  eof – символ кінцю файлу;
  •  other – будь-який символ, не вказаний іншими дугами, що виходять зі стану.

Будемо вести розробку ЛА методом покрокової деталізації. Деталізуємо роботу ЛА для станів identifier, number, delimiter, whitespace та comment з діаграми на рис. 1. Для цього побудуємо діаграму переходів для кожного регулярного визначення і для обробки коментарів. Необхідно зауважити, що для невеликих граматик можна одразу побудувати всю діаграму переходів ЛА повністю, без деталізації. 

Значення станів деталізованих діаграм переходів:

  •  S – стартовий стан (стан діаграми переходів в момент початку роботи ЛА);
  •  EXIT – кінцевий стан ЛА;
  •  OUT – виведення лексеми;
  •  IDN – введення ідентифікатору;
  •  NUM – введення числа;
  •  BCOM –  початок коментарю;
  •  COM –  коментар;
  •  ECOM –  закінчення коментарю;
  •  WS – пропуск пробільних символів;
  •  INP –  введення чергового символу;
  •  ERR –  видача повідомлення про помилку, що не залежить від контексту;
  •  ERRC –  видача повідомлення про помилку, що залежить від контексту.

У всіх станах, окрім OUT, ERR та ERRC, виконується введення чергового символу. У стані OUT виконується виведення коду сформованої лексеми у файл результату і передавання прийнятого символу на подальший аналіз.

На рис. 2 показана діаграма переходів для токену identifier:

  1. Діаграма переходів для токену identifier

Одним із способів відділення ключових слів від ідентифікаторів є наступним: для ключових слів та ідентифікаторів створюють одну таблицю, в яку при ініціалізації заносять ключові слова. Для нашого прикладу граматики таблиця має бути проініціалізована ключовими словами if, then , else. Саме тому токени if, then , else будуть включені в токен identifier.

На рис. 3 показана діаграма переходів для токена number.

  1. Діаграма переходів для токена number

На рис. 4 показана діаграма переходів для токена delimiter:

  1. Діаграма переходів для токена delimiter

Зауваження: в даному прикладі використовуються тільки односимвольні роздільники, що призводить до простої діаграми їх обробки. У випадку багатосимвольних роздільників виникають певні проблеми виділення роздільників з рядку. Тому необхідно зчитувати в буфер певну кількість символів, рівне максимальній довжині роздільника, а потім працювати зі зчитаними символами. Дане зауваження також відноситься до обробки складних числових констант.

Приклад: Нехай задано визначення delimiter ®  = | < | > | <= | >=.

Для його обробки ЛА не має зупинятися на першому зчитаному роздільнику, а зчитати два символи. І тільки потім визначати чи це один двосимвольний роздільник, чи два односимвольних. При цьому рядок <= означає роздільник <=, а рядок =>” – два роздільника: =  та >.

На рис. 5 показана діаграма  переходів для обробки токену whitespace.

  1. Діаграма  переходів для обробки токену whitespace

Однією із задач ЛА є видалення коментарів. Хоча коментар не можна назвати токеном, його обробку все ж необхідно описати у вигляді діаграми переходів. На рис. 6 показана діаграма переходів для обробки коментарів, заданих у вигляді (*<текст коментарю>*).

  1. Діаграма переходів для обробки коментарів

Зауваження: в даній діаграмі символ otherу стані BCOM призводить до помилки. Однак це вірно лише для для граматик, в яких символ ( не є одно символьним роздільником, як у граматиці нашого прикладу.

Тепер побудовані діаграми можна об’єднати в одну повну діаграму переходів ЛА. Вона надана на рис. 7.

Після побудови повної діаграми переходів можна приступити до реалізації програми ЛА будь-якою мовою програмування. Варто зауважити, що при такому підході розмір програми буде пропорційним кількості виділених станів. Кожен стан дає частину коду, що описує поведінку ЛА.

  1. Повна діаграма переходів ЛА


Варіанти завдань

Варіанти граматик складені на основі граматики мови SIGNAL. В додатку 1 приведена повна граматика мови SIGNAL для загального  уявлення про мову та взаємозв’язки її конструкцій.

Варіант визначається відповідно порядковому номеру студента в списку журнала групи.

Варіант 1

  1. <signal-program> --> <program>
    1.  <program> --> PROGRAM <procedure-identifier> ; <block>. |
      PROCEDURE <procedure-identifier><parameters-list> ; <block> ;
    2.  <block> --> <declarations> BEGIN <statements-list> END
    3.  <declarations> --> <label-declarations>
    4.  <label-declarations> --> LABEL <unsigned-integer> <labels-list>; |
      <empty>
    5.  <labels-list> --> , <unsigned-integer> <labels-list> |
      <empty>
    6.  <parameters-list> --> ( <declarations-list> ) |
      <empty>
    7.  <declarations-list> --> <empty>
    8.  <statements-list> --> <empty>
    9.  <procedure-identifier> --> <identifier>
    10.  <identifier> --> <letter><string>
    11.  <string> --> <letter><string> |
      <digit><string> |
      <empty>
    12.  <unsigned-integer> --> <digit><digits-string>
    13.  <digits-string> --> <digit><digits-string> |
      <empty>
    14.  <digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
    15.  <letter> --> A | B | C | D | ... | Z

Варіант 2

  1. <signal-program> --> <program>
    1.  <program> --> PROGRAM <procedure-identifier> ; <block>. |
      PROCEDURE <procedure-identifier><parameters-list> ; <block> ;
    2.  <block> --> BEGIN <statements-list> END
    3.  <statements-list> --> <empty>
    4.  <parameters-list> --> ( <declarations-list> ) |
      <empty>
    5.  <declarations-list> --> <declaration> <declarations-list> |
      <empty>
    6.  <declaration> --><variable-identifier><identifiers-list>:<attribute><attributes-list> ;
    7.  <identifiers-list> --> , <variable-identifier> <identifiers-list> |
      <empty>
    8.  <attributes-list> --> <attribute> <attributes-list> |
      <empty>
    9.  <attribute> --> SIGNAL |
      COMPLEX |
      INTEGER |
      FLOAT |
      BLOCKFLOAT |
      EXT
    10.  <procedure-identifier> --> <identifier>
    11.  <variable-identifier> --> <identifier>
    12.  <identifier> --> <letter><string>
    13.  <string> --> <letter><string> |
      <digit><string> |
      <empty>
    14.  <letter> --> A | B | C | D | ... | Z

Варіант 3

  1. <signal-program> --> <program>
    1.  <program> --> PROGRAM <procedure-identifier> ; <block>.
    2.  <block> --> <declarations> BEGIN <statements-list> END
    3.  <declarations> --> <constant-declarations>
    4.  <constant-declarations> --> CONST <constant-declarations-list> |
      <empty>
    5.  <constant-declarations-list> --> <constant-declaration> <constant-declarations-list> |
      <empty>
    6.  <constant-declaration> --> <constant-identifier> = <constant>;
    7.  <statements-list> --> <statement> <statements-list> |
      <empty>
    8.  <statement> --> <variable-identifier> := <constant> ;
    9.  <constant> --> <unsigned-integer>
    10.  <constant-identifier> --> <identifier>
    11.  <variable-identifier> --> <identifier>
    12.  <procedure-identifier> --> <identifier>
    13.  <identifier> --> <letter><string>
    14.  <string> --> <letter><string> |
      <digit><string> |
      <empty>
    15.  <unsigned-integer> --> <digit><digits-string>
    16.  <digits-string> --> <digit><digits-string> |
      <empty>
    17.  <digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
    18.  <letter> --> A | B | C | D | ... | Z

Варіант 4

  1. <signal-program> --> <program>
    1.  <program> --> PROCEDURE <procedure-identifier><parameters-list> ; <block> ;
    2.  <block> --> <declarations> BEGIN <statements-list> END
    3.  <statements-list> --> <empty>
    4.  <statements-list> --> <empty>
    5.  <parameters-list> --> ( <declarations-list> ) |
      <empty>
    6.  <declarations-list> --> <declaration> <declarations-list> |
      <empty>
    7.  <declaration> --> <variable-identifier> : <attribute> ;
    8.  <attribute> --> INTEGER |
      FLOAT     
    9.  <declarations> --> <constant-declarations>
    10.  <constant-declarations> --> CONST <constant-declarations-list> |
      <empty>
    11.  <constant-declarations-list> --> <constant-declaration> <constant-declarations-list> |
      <empty>
    12.  <constant-declaration> --> <constant-identifier> = <constant>;
    13.  <constant> --> <unsigned-integer>
    14.  <constant-identifier> --> <identifier>
    15.  <variable-identifier> --> <identifier>
    16.  <procedure-identifier> --> <identifier>
    17.  <identifier> --> <letter><string>
    18.  <string> --> <letter><string> |
      <digit><string> |
      <empty>
    19.  <unsigned-integer> --> <digit><digits-string>
    20.  <digits-string> --> <digit><digits-string> |
      <empty>
    21.  <digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
    22.  <letter> --> A | B | C | D | ... | Z

Варіант 5

  1. <signal-program> --> <program>
    1.  <program> --> PROGRAM <procedure-identifier> ; <block>.
    2.  <block> --> <declarations> BEGIN <statements-list> END
    3.  <statements-list> --> <empty>
    4.  <declarations> --> <constant-declarations>
    5.  <constant-declarations> --> CONST <constant-declarations-list> |
      <empty>
    6.  <constant-declarations-list> --> <constant-declaration> <constant-declarations-list> |
      <empty>
    7.  <constant-declaration> --> <constant-identifier> = <constant>;
    8.  <constant> --> <sign> <unsigned-constant>
    9.  <constant-identifier> --> <identifier>
    10.  <procedure-identifier> --> <identifier>
    11.  <identifier> --> <letter><string>
    12.  <string> --> <letter><string> |
      <digit><string> |
      <empty>
    13.  <unsigned-constant> --> <integer-part><fractional-part>
    14.  <integer-part> --> <unsigned-integer> |
      <empty>
    15.  <fractional-part> --> #<sign><unsigned-integer> |
      <empty>
    16.  <unsigned-integer> --> <digit><digits-string>
    17.  <digits-string> --> <digit><digits-string> |
      <empty>
    18.  <sign> --> + |
      - |
      <empty>
    19.  <digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
    20.  <letter> --> A | B | C | D | ... | Z

Варіант 6

  1. <signal-program> --> <program>
    1.  <program> --> PROGRAM <procedure-identifier> ; <block>.
    2.  <block> --> <declarations> BEGIN <statements-list> END
    3.  <statements-list> --> <empty>
    4.  <declarations> --> <constant-declarations>
    5.  <constant-declarations> --> CONST <constant-declarations-list> |
      <empty>
    6.  <constant-declarations-list> --> <constant-declaration> <constant-declarations-list> |
      <empty>
    7.  <constant-declaration> --> <constant-identifier> = <constant>;
    8.  <constant> --> '<complex-number>'
    9.  <complex-number> --> <left-part> <right-part>
    10.  <left-part> --> <unsigned-integer> |
      <empty>
    11.  <right-part> --> ,<unsigned-integer> |
      $EXP( <unsigned-integer> ) |
      <empty>
    12.  <constant-identifier> --> <identifier>
    13.  <procedure-identifier> --> <identifier>
    14.  <identifier> --> <letter><string>
    15.  <string> --> <letter><string> |
      <digit><string> |
      <empty>
    16.  <unsigned-integer> --> <digit><digits-string>
    17.  <digits-string> --> <digit><digits-string> |
      <empty>
    18.  <digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
    19.  <letter> --> A | B | C | D | ... | Z

Варіант 7

  1. <signal-program> --> <program>
    1.  <program> --> PROGRAM <procedure-identifier> ; <block>.
    2.  <block> --> <declarations> BEGIN <statements-list> END
    3.  <statements-list> --> <empty>
    4.  <declarations> --> <variable-declarations>
    5.  <variable-declarations> --> VAR <declarations-list>  |
      <empty>
    6.  <declarations-list> --> <declaration> <declarations-list> |
      <empty>
    7.  <declaration> --><variable-identifier><identifiers-ist>:<attribute><attributes-list> ;
    8.  <identifiers-list> --> , <variable-identifier> <identifiers-list> |
      <empty>
    9.  <attributes-list> --> <attribute> <attributes-list> |
      <empty>
    10.  <attribute> --> SIGNAL |
      COMPLEX |
      INTEGER |
      FLOAT |
      BLOCKFLOAT |
      EXT |
      [<range><ranges-list>]
    11.  <ranges-list> -->  ,<range> <ranges-list> |
      <empty>
    12.  <range> --> <unsigned-integer> .. <unsigned-integer>
    13.  <variable-identifier> --> <identifier>
    14.  <procedure-identifier> --> <identifier>
    15.  <identifier> --> <letter><string>
    16.  <string> --> <letter><string> |
      <digit><string> |
      <empty>
    17.  <unsigned-integer> --> <digit><digits-string>
    18.  <digits-string> --> <digit><digits-string> |
      <empty>
    19.  <digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
    20.  <letter> --> A | B | C | D | ... | Z

Варіант 8

  1. <signal-program> --> <program>
    1.  <program> --> PROCEDURE <procedure-identifier><parameters-list> ; <block> ;
    2.  <block> --> <declarations> BEGIN <statements-list> END
    3.  <statements-list> --> <empty>
    4.  <parameters-list> --> ( <declarations-list> ) |
      <empty>
    5.  <declarations> --> <variable-declarations>
    6.  <variable-declarations> --> VAR <declarations-list>  |
      <empty>
    7.  <declarations-list> --> <declaration> <declarations-list> |
      <empty>
    8.  <declaration> --><variable-identifier><identifiers-list>:<attribute><attributes-list> ;
    9.  <identifiers-list> --> , <variable-identifier> <identifiers-list> |
      <empty>
    10.  <attributes-list> --> <attribute> <attributes-list> |
      <empty>
    11.  <attribute> --> SIGNAL     |
      COMPLEX    |
      INTEGER    |
      FLOAT      |
      BLOCKFLOAT |
      EXT
    12.  <variable-identifier> --> <identifier>
    13.  <procedure-identifier> --> <identifier>
    14.  <identifier> --> <letter><string>
    15.  <string> --> <letter><string> |
      <digit><string> |
      <empty>
    16.  <letter> --> A | B | C | D | ... | Z

Варіант 9

  1. <signal-program> --> <program>
    1.  <program> --> PROGRAM <procedure-identifier> ; <block>.
    2.  <block> --> <declarations> BEGIN <statements-list> END
    3.  <statements-list> --> <empty>
    4.  <declarations> --> <math-function-declaration>
    5.  <math-function-declaration> --> DEFFUNC <function-list> |
      <empty>
    6.  <function-list> --> <function> <function-list> |
      <empty>
    7.  <function> --> <function-identifier> = <constant><function-characteristic> ;
    8.  <function-characteristic> --> \ <unsigned-integer> , <unsigned-integer>
    9.  <constant> --> <unsigned-integer>
    10.  <procedure-identifier> --> <identifier>
    11.  <function-identifier> --> <identifier>
    12.  <identifier> --> <letter><string>
    13.  <string> --> <letter><string> |
      <digit><string> |
      <empty>
    14.  <unsigned-integer> --> <digit><digits-string>
    15.  <digits-string> --> <digit><digits-string> |
      <empty>
    16.  <digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
    17.  <letter> --> A | B | C | D | ... | Z

Варіант 10

  1. <signal-program> --> <program>
    1.  <program> --> PROGRAM <procedure-identifier> ; <block> ;
    2.  <block> --> <declarations> BEGIN <statements-list> END
    3.  <statements-list> --> <empty>
    4.  <declarations> --> <procedure-declarations>
    5.  <procedure-declarations> --> <procedure> <procedure-declarations> |
      <empty>
    6.  <procedure> --> PROCEDURE <procedure-identifier><parameters-list> ;
    7.  <parameters-list> --> ( <declarations-list> ) |
      <empty>
    8.  <declarations-list> --> <declaration> <declarations-list> |
      <empty>
    9.  <declaration> --><variable-identifier><identifiers-list>:<attribute><attributes-list> ;
    10.  <identifiers-list> --> , <variable-identifier> <identifiers-list> |
      <empty>
    11.  <attributes-list> --> <attribute> <attributes-list> |
      <empty>
    12.  <attribute> --> SIGNAL     |
      COMPLEX    |
      INTEGER    |
      FLOAT      |

      BLOCKFLOAT |
      EXT
    13.  <variable-identifier> --> <identifier>
    14.  <procedure-identifier> --> <identifier>
    15.  <identifier> --> <letter><string>
    16.  <string> --> <letter><string> |
      <digit><string> |
      <empty>
    17.  <letter> --> A | B | C | D | ... | Z

Варіант 11

  1. <signal-program> --> <program>
    1.  <program> --> PROGRAM <procedure-identifier> ; <block>.
    2.  <block> --> <declarations> BEGIN <statements-list> END
    3.  <declarations> --> <label-declarations>
    4.  <label-declarations> --> LABEL <unsigned-integer> <labels-list>; |
      <empty>
    5.  <labels-list> -->  , <unsigned-integer> <labels-list> |
      <empty>
    6.  <statements-list> --> <statement> <statements-list> |
      <empty>
    7.  <statement> --> <unsigned-integer> : <statement> |
      GOTO <unsigned-integer> ; |
      LINK <variable-identifier> , <unsigned-integer> ; |
      IN <unsigned-integer>;  |
      OUT <unsigned-integer>;
    8.  <variable-identifier> --> <identifier>
    9.  <procedure-identifier> --> <identifier>
    10.  <identifier> --> <letter><string>
    11.  <string> --> <letter><string> |
      <digit><string> |
      <empty>
    12.  <unsigned-integer> --> <digit><digits-string>
    13.  <digits-string> --> <digit><digits-string> |
      <empty>
    14.  <digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
    15.  <letter> --> A | B | C | D | ... | Z

Варіант 12

  1. <signal-program> --> <program>
    1.  <program> --> PROCEDURE <procedure-identifier><parameters-list> ; <block> ;
    2.  <block> --> <declarations> BEGIN <statements-list> END
    3.  <declarations> --> <label-declarations>
    4.  <label-declarations> --> LABEL <unsigned-integer> <labels-list>; |
      <empty>
    5.  <labels-list> -->  , <unsigned-integer> <labels-list> |
      <empty>
    6.  <parameters-list> --> ( <variable-identifier> <identifiers-list> ) |
      <empty>
    7.  <identifiers-list> --> , <variable-identifier> <identifiers-list> |
      <empty>
    8.  <statements-list> --> <statement> <statements-list> |
      <empty>
    9.  <statement> --> <unsigned-integer> : <statement> |
      GOTO <unsigned-integer> ; |
      RETURN ; |
      ;  |
      ($ <assembly-insert-file-identifier> $)
    10.  <variable-identifier> --> <identifier>
    11.  <procedure-identifier> --> <identifier>
    12.  <assembly-insert-file-identifier> --> <identifier>
    13.  <identifier> --> <letter><string>
    14.  <string> --> <letter><string> |
      <digit><string> |
      <empty>
    15.  <unsigned-integer> --> <digit><digits-string>
    16.  <digits-string> --> <digit><digits-string> |
      <empty>
    17.  <digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
    18.  <letter> --> A | B | C | D | ... | Z

Варіант 13

  1. <signal-program> --> <program>
    1.  <program> --> PROCEDURE <procedure-identifier><<parameters-list>> ; <block> ;
    2.  <block> --> <declarations> BEGIN <statements-list> END
    3.  <declarations> --> <procedure-declarations>
    4.  <procedure-declarations> --> <procedure> <procedure-declarations> |
      <empty>
    5.  <procedure> --> PROCEDURE <procedure-identifier><parameters-list> ;
    6.  <parameters-list> --> ( <variable-identifier> <identifiers-list> ) |
      <empty>
    7.  <identifiers-list> --> , <variable-identifier> <identifiers-list> |
      <empty>
    8.  <statements-list> --> <statement> <statements-list> |
      <empty>
    9.  <statement> --> <procedure-identifier><actual-arguments> ; |
      RETURN ;
    10.  <actual-arguments> --> ( <unsigned-integer> <actual-arguments-list> )  |
      <empty>
    11.  <actual-arguments-list> --> , <unsigned-integer> <actual-arguments-list> |
      <empty>
    12.  <variable-identifier> --> <identifier>
    13.  <procedure-identifier> --> <identifier>
    14.  <identifier> --> <letter><string>
    15.  <string> --> <letter><string> |
      <digit><string> |
      <empty>
    16.  <unsigned-integer> --> <digit><digits-string>
    17.  <digits-string> --> <digit><digits-string> |
      <empty>
    18.  <digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
    19.  <letter> --> A | B | C | D | ... | Z

Варіант 14

  1. <signal-program> --> <program>
    1.  <program> --> PROGRAM <procedure-identifier> ; <block>.
    2.  <block> --> <declarations> BEGIN <statements-list> END
    3.  <declarations> --> <label-declarations>
    4.  <label-declarations> --> LABEL <unsigned-integer> <labels-list>; |
      <empty>
    5.  <labels-list> -->  , <unsigned-integer> <labels-list> |
      <empty>
    6.  <statements-list> --> <statement> <statements-list> |
      <empty>
    7.  <statement> --> <unsigned-integer> : <statement> |
      GOTO <unsigned-integer> ; |
      <condition-statement> ENDIF ;|
      ;
    8.  <condition-statement> --> <incomplete-condition-statement><alternative-part>
    9.  <incomplete-condition-statement> --> IF <conditional-expression> THEN <statements-list>
    10.  <conditional-expression> --> <variable-identifier> = <unsigned-integer>
    11.  <alternative-part> --> ELSE <statements-list>  |
      <empty>
    12.  <variable-identifier> --> <identifier>
    13.  <procedure-identifier> --> <identifier>
    14.  <identifier> --> <letter><string>
    15.  16  23.<string> --> <letter><string> |
      <digit><string> |
      <empty>
    16.  <unsigned-integer> --> <digit><digits-string>
    17.  <digits-string> --> <digit><digits-string> |
      <empty>
    18.  <digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
    19.  <letter> --> A | B | C | D | ... | Z

Варіант 15

  1. <signal-program> --> <program>
    1.  <program> --> PROGRAM <procedure-identifier> ; <block> ;
    2.  <block> --> BEGIN <statements-list> END
    3.  <statements-list> --> <statement> <statements-list> |
      <empty>
    4.  <statement> --> <unsigned-integer> : <statement> |
      <variable-identifier> := <unsigned-integer> ;  |
      <procedure-identifier><actual-arguments> ; |
      GOTO <unsigned-integer> ; |
      LINK <variable-identifier> , <unsigned-integer> ; |
      IN <unsigned-integer>;  |
      OUT <unsigned-integer>; |
      RETURN ; |
      ;  |
      ($ <assembly-insert-file-identifier> $)
    5.  <actual-arguments> --> ( <variable-identifier> <actual-arguments-list> )  |
      <empty>
    6.  <actual-arguments-list> --> ,<variable-identifier> <actual-arguments-list> |
      <empty>
    7.  <variable-identifier> --> <identifier>
    8.  <procedure-identifier> --> <identifier>
    9.  <assembly-insert-file-identifier> --> <identifier>
    10.  <identifier> --> <letter><string>
    11.  <string> --> <letter><string> |
      <digit><string> |
      <empty>
    12.  <unsigned-integer> --> <digit><digits-string>
    13.  <digits-string> --> <digit><digits-string> |
      <empty>
    14.  <digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
    15.  <letter> --> A | B | C | D | ... | Z

Варіант 16

  1. <signal-program> --> <program>
    1.  <program> --> PROGRAM <procedure-identifier> ; <block>.
    2.  <block> --> BEGIN <statements-list> END
    3.  <statements-list> --> <statement> <statements-list> |
      <empty>
    4.  <statement> --> <condition-statement> ENDIF ;  |
      WHILE <conditional-expression> DO <statements-list> ENDWHILE ;
    5.  <condition-statement> --> <incomplete-condition-statement><alternative-part>
    6.  <incomplete-condition-statement> --> IF <conditional-expression> THEN <statements-list>
    7.  <alternative-part> --> ELSE <statements-list>  |
      <empty>
    8.  <conditional-expression> --> <expression><comparison-operator><expression>
    9.  <comparison-operator> -->  <   |
      <=  |
      =   |
      <>  |
      >=  |
      >
    10.  <expression> --> <variable-identifier> |
      <unsigned-integer>
    11.  <variable-identifier> --> <identifier>
    12.  <procedure-identifier> --> <identifier>
    13.  <identifier> --> <letter><string>
    14.  <string> --> <letter><string> |
      <digit><string> |
      <empty>
    15.  <unsigned-integer> --> <digit><digits-string>
    16.  <digits-string> --> <digit><digits-string> |
      <empty>
    17.  <digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
    18.  <letter> --> A | B | C | D | ... | Z

Варіант 17

  1. <signal-program> --> <program>
    1.  <program> --> PROGRAM <procedure-identifier> ; <block>.
    2.  <block> --> BEGIN <statements-list> END
    3.  <statements-list> --> <statement> <statements-list> |
      <empty>
    4.  <statement> --> LOOP <statements-list> ENDLOOP ; |
      FOR <variable-identifier> := <loop-declaration> ENDFOR ;
    5.  <loop-declaration> --> <expression> TO <expression> DO <statements-list>
    6.  <expression> --> <summand> <summands-list>   |
      - <summand> <summands-list>
    7.  <summands-list> --> <add-instruction> <summand> <summands-list> |
      <empty>
    8.  <add-instruction> -->     +   |
      -
    9.  <summand> --> <variable-identifier> |
      <unsigned-integer>
    10.  <variable-identifier> --> <identifier>
    11.  <procedure-identifier> --> <identifier>
    12.  <identifier> --> <letter><string>
    13.  <string> --> <letter><string> |
      <digit><string> |
      <empty>
    14.  <unsigned-integer> --> <digit><digits-string>
    15.  <digits-string> --> <digit><digits-string> |
      <empty>
    16.  <digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
    17.  <letter> --> A | B | C | D | ... | Z

Варіант 18

  1. <signal-program> --> <program>
    1.  <program> --> PROGRAM <procedure-identifier> ; <block>.
    2.  <block> --> BEGIN <statements-list> END
    3.  <statements-list> --> <statement> <statements-list> |
      <empty>
    4.  <statement> --> LOOP <statements-list> ENDLOOP ; |
      CASE <expression> OF <alternatives-list> ENDCASE ;
    5.  <alternatives-list> --> <alternative> <alternatives-list> |
      <empty>
    6.  <alternative> --> <expression> : / <statements-list> \
    7.  <expression> --> <multiplier><multipliers-list>
    8.  <multipliers-list> --> <multiplication-instruction> <multiplier><multipliers-list>  |
      <empty>
    9.  <multiplication-instruction> -->     *   |
      /   |
      MOD
    10.  <multiplier> --> <variable-identifier> |
      <unsigned-integer>
    11.  <variable-identifier> --> <identifier>
    12.  <procedure-identifier> --> <identifier>
    13.  <identifier> --> <letter><string>
    14.  <string> --> <letter><string> |
      <digit><string> |
      <empty>
    15.  <unsigned-integer> --> <digit><digits-string>
    16.  <digits-string> --> <digit><digits-string> |
      <empty>
    17.  <digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
    18.  <letter> --> A | B | C | D | ... | Z

Варіант 19

  1. <signal-program> --> <program>
    1.  <program> --> PROGRAM <procedure-identifier> ; <block>.
    2.  <block> --> <variable-declarations> BEGIN <statements-list> END
    3.  <variable-declarations> --> VAR <declarations-list>   |
      <empty>
    4.  <declarations-list> --> <declaration> <declarations-list> |
      <empty>
    5.  <declaration> --><variable-identifier>:<attribute> ;
    6.  <attribute> --> INTEGER    |
      FLOAT      
    7.  <statements-list> --> <statement> <statements-list> |
      <empty>
    8.  <statement> --> <condition-statement> ENDIF ;
    9.  <condition-statement> --> <incomplete-condition-statement><alternative-part>
    10.  <incomplete-condition-statement> --> IF <conditional-expression> THEN <statements-list>
    11.  <alternative-part> --> ELSE <statements-list>  |
      <empty>
    12.  <conditional-expression> --> <expression> = <expression>
    13.  <expression> --> <variable-identifier> |
      <unsigned-integer>
    14.  <variable-identifier> --> <identifier>
    15.  <procedure-identifier> --> <identifier>
    16.  <identifier> --> <letter><string>
    17.  <string> --> <letter><string> |
      <digit><string> |
      <empty>
    18.  <unsigned-integer> --> <digit><digits-string>
    19.  <digits-string> --> <digit><digits-string> |
      <empty>
    20.  <digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
    21.  <letter> --> A | B | C | D | ... | Z

Варіант 20

  1. <signal-program> --> <program>
    1.  <program> --> PROGRAM <procedure-identifier> ; <block>.
    2.  <block> --> <variable-declarations> BEGIN <statements-list> END
    3.  <variable-declarations> --> VAR <declarations-list>   |
      <empty>
    4.  <declarations-list> --> <declaration> <declarations-list> |
      <empty>
    5.  <declaration> --><variable-identifier>:<attribute> ;
    6.  <attribute> --> INTEGER    |
      FLOAT      
    7.  <statements-list> --> <statement> <statements-list> |
      <empty>
    8.  <statement> --> WHILE <conditional-expression> DO <statements-list> ENDWHILE ;
    9.  <conditional-expression> --> <expression><comparison-operator><expression>
    10.  <comparison-operator> -->  <   |
      <=  |
      =   |
      <>  |
      >=  |
      >
    11.  <expression> --> <variable-identifier> |
      <unsigned-integer>
    12.  <variable-identifier> --> <identifier>
    13.  <procedure-identifier> --> <identifier>
    14.  <identifier> --> <letter><string>
    15.  <string> --> <letter><string> |
      <digit><string> |
      <empty>
    16.  <unsigned-integer> --> <digit><digits-string>
    17.  <digits-string> --> <digit><digits-string> |
      <empty>
    18.  <digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
    19.  <letter> --> A | B | C | D | ... | Z

Варіант 21

  1. <signal-program> --> <program>
    1.  <program> --> PROGRAM <procedure-identifier> ; <block>.
    2.  <block> --> <variable-declarations> BEGIN <statements-list> END
    3.  <variable-declarations> --> VAR <declarations-list>   |
      <empty>
    4.  <declarations-list> --> <declaration> <declarations-list> |
      <empty>
    5.  <declaration> --><variable-identifier>:<attribute><attributes-list> ;
    6.  <attributes-list> --> <attribute> <attributes-list> |
      <empty>
    7.  <attribute> --> INTEGER    |
      FLOAT      |
      [<range>]
    8.  <range> --> <unsigned-integer> .. <unsigned-integer>
    9.  <statements-list> --> <statement> <statements-list> |
      <empty>
    10.  <statement> --> <variable> := <expression> ;  |
      LOOP <statements-list> ENDLOOP ;
    11.  <expression> --> <variable> |
      <unsigned-integer>
    12.  <variable> --> <variable-identifier><dimension>
    13.  <dimension> --> [ <expression> ]   |
      <empty>
    14.  <variable-identifier> --> <identifier>
    15.  <procedure-identifier> --> <identifier>
    16.  <identifier> --> <letter><string>
    17.  <string> --> <letter><string> |
      <digit><string> |
      <empty>
    18.  <unsigned-integer> --> <digit><digits-string>
    19.  <digits-string> --> <digit><digits-string> |
      <empty>
    20.  <digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
    21.  <letter> --> A | B | C | D | ... | Z

Варіант 22

  1. <signal-program> --> <program>
    1.  <program> --> PROGRAM <procedure-identifier> ; <block>.
    2.  <block> --> <variable-declarations> BEGIN <statements-list> END
    3.  <variable-declarations> --> VAR <declarations-list>   |
      <empty>
    4.  <declarations-list> --> <declaration> <declarations-list> |
      <empty>
    5.  <declaration> --><variable-identifier>:<attribute><attributes-list> ;
    6.  <attributes-list> --> <attribute> <attributes-list> |
      <empty>
    7.  <attribute> --> SIGNAL     |
      INTEGER    |
      FLOAT      |
      EXT
    8.  <statements-list> --> <statement> <statements-list> |
      <empty>
    9.  <statement> --> FOR <variable-identifier> := <loop-declaration> ENDFOR ;
    10.  <loop-declaration> --> <expression> TO <expression> DO <statements-list>
    11.  <expression> --> <multiplier><multipliers-list>
    12.  <multipliers-list> --> <multiplication-instruction> <multiplier><multipliers-list> |
      <empty>
    13.  <multiplication-instruction> -->     *   |
      /   |
      &   |
      MOD
    14.  <multiplier> --> <variable-identifier> |
      <unsigned-integer>
    15.  <variable-identifier> --> <identifier>
    16.  <procedure-identifier> --> <identifier>
    17.  <identifier> --> <letter><string>
    18.  <string> --> <letter><string> |
      <digit><string> |
      <empty>
    19.  <unsigned-integer> --> <digit><digits-string>
    20.  <digits-string> --> <digit><digits-string> |
      <empty>
    21.  <digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
    22.  <letter> --> A | B | C | D | ... | Z

Варіант 23

  1. <signal-program> --> <program>
    1.  <program> --> PROGRAM <procedure-identifier> ; <block>.
    2.  <block> --> <declarations> BEGIN <statements-list> END
    3.  <declarations> --> <constant-declarations>
    4.  <constant-declarations> --> CONST <constant-declarations-list> |
      <empty>
    5.  <constant-declarations-list> --> <constant-declaration> <constant-declarations-list> |
      <empty>
    6.  <constant-declaration> --> <constant-identifier> = <constant>;
    7.  <statements-list> --> <statement> <statements-list> |
      <empty>
    8.  <statement> --> CASE <expression> OF <alternatives-list> ENDCASE ;
    9.  <alternatives-list> --> <alternative> <alternatives-list> |
      <empty>
    10.  <alternative> --> <expression> : / <statements-list> \
    11.  <expression> --> <summand> <summands-list>   |
      - <summand> <summands-list>
    12.  <summands-list> --> <add-instruction> <summand> <summands-list> |
      <empty>
    13.  <add-instruction> -->     +   |
      -   
    14.  <summand> --> <variable-identifier> |
      <unsigned-integer>
    15.  <variable-identifier> --> <identifier>
    16.  <procedure-identifier> --> <identifier>
    17.  <identifier> --> <letter><string>
    18.  <string> --> <letter><string> |
      <digit><string> |
      <empty>
    19.  <unsigned-integer> --> <digit><digits-string>
    20.  <digits-string> --> <digit><digits-string> |
      <empty>
    21.  <digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
    22.  <letter> --> A | B | C | D | ... | Z

Варіант 24

  1. <signal-program> --> <program>
    1.  <program> --> PROGRAM <procedure-identifier> ; <block>.
    2.  <block> --> <variable-declarations> BEGIN <statements-list> END
    3.  <variable-declarations> --> VAR <declarations-list>   |
      <empty>
    4.  <declarations-list> --> <declaration> <declarations-list> |
      <empty>
    5.  <declaration> --><variable-identifier>: INTEGER ;
    6.  <statements-list> --> <statement> <statements-list> |
      <empty>
    7.  <statement> --> <variable-identifier> := <conditional-expression> ;
    8.  <conditional-expression> --> <logical-summand> <logical>
    9.  <logical> --> OR <logical-summand> <logical>  |
      <empty>
    10.  <logical-summand> --> <logical-multiplier> <logical-multipliers-list>
    11.  <logical-multipliers-list> --> AND <logical-multiplier> <logical-multipliers-list> |
      <empty>
    12.  <logical-multiplier> --> <expression><comparison-operator><expression> |
      [ <conditional-expression> ]  |
      NOT <logical-multiplier>
    13.  <comparison-operator> -->  <   |
      <=  |
      =   |
      <>  |
      >=  |
      >
    14.  <expression> --> <variable-identifier> |
      <unsigned-integer>
    15.  <variable-identifier> --> <identifier>
    16.  <procedure-identifier> --> <identifier>
    17.  <identifier> --> <letter><string>
    18.  <string> --> <letter><string> |
      <digit><string> |
      <empty>
    19.  <unsigned-integer> --> <digit><digits-string>
    20.  <digits-string> --> <digit><digits-string> |
      <empty>
    21.  <digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
    22.  <letter> --> A | B | C | D | ... | Z

Варіант 25

  1. <signal-program> --> <program>
    1.  <program> --> PROGRAM <procedure-identifier> ; <block>.
    2.  <block> --> <variable-declarations> BEGIN <statements-list> END
    3.  <variable-declarations> --> VAR <declarations-list>   |
      <empty>
    4.  <declarations-list> --> <declaration> <declarations-list> |
      <empty>
    5.  <declaration> --><variable-identifier>: INTEGER ;
    6.  <statements-list> --> <statement> <statements-list> |
      <empty>
    7.  <statement> --> <variable-identifier> := <expression> ;
    8.  <expression> --> <summand> <summands-list>   |
      - <summand> <summands-list>
    9.  <summands-list> --> <add-instruction> <summand> <summands-list> |
      <empty>
    10.  <add-instruction> -->     +   |
      -   
    11.  <summand> --> <multiplier><multipliers-list>
    12.  <multipliers-list> --> <multiplication-instruction> <multiplier><multipliers-list>  |
      <empty>
    13.  <multiplication-instruction> -->     *   |
      /
    14.  <multiplier> --> <variable-identifier> |
      <unsigned-integer> |
      ( <expression> )  
    15.  <variable-identifier> --> <identifier>
    16.  <procedure-identifier> --> <identifier>
    17.  <identifier> --> <letter><string>
    18.  <string> --> <letter><string> |
      <digit><string> |
      <empty>
    19.  <unsigned-integer> --> <digit><digits-string>
    20.  <digits-string> --> <digit><digits-string> |
      <empty>
    21.  <digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
    22.  <letter> --> A | B | C | D | ... | Z

Варіант 26

  1. <signal-program> --> <program>
    1.  <program> --> PROGRAM <procedure-identifier> ; <block>.
    2.  <block> --> BEGIN <conditional-expression> END
    3.  <conditional-expression> --> <logical-summand> <logical>
    4.  <logical> --> OR <logical-summand> <logical>  |
      <empty>
    5.  <logical-summand> --> <logical-multiplier> <logical-multipliers-list>
    6.  <logical-multipliers-list> --> AND <logical-multiplier> <logical-multipliers-list> |
      <empty>
    7.  <logical-multiplier> --> <expression><comparison-operator><expression> |
      [ <conditional-expression> ]  |
      NOT <logical-multiplier>
    8.  <comparison-operator> -->  <   |
      <=  |
      =   |
      <>  |
      >=  |
      >
    9.  <expression> --> <summand> <summands-list>   |
      - <summand> <summands-list>
    10.  <summands-list> --> <add-instruction> <summand> <summands-list> |
      <empty>
    11.  <add-instruction> -->     +   |
      -   |
      !   |
    12.  <summand> --> <multiplier><multipliers-list>
      <multipliers-list> --> <multiplication-instruction> <multiplier><multipliers-list>  |
      <empty>
    13.  <multiplication-instruction> -->     *   |
      /   |
      &   |
      MOD
    14.  <multiplier> --> <unsigned-constant>  |
      <complex-constant> |
      <constant-identifier>  |
      <variable>  |
      <function-identifier>  |
      <builtin-function-identifier><actual-arguments>  |
      ( <expression> )  |
      ^ <multiplier>
    15.  <variable> --> <variable-identifier><dimension> |
      <complex-variable>
    16.  <complex-variable> --> "<complex-number>"
    17.  <dimension> --> [ <expression> <expressions-list> ]   |
      <empty>
    18.  <expressions-list> -->  ,<expression><expressions-list>  |
      <empty>
    19.  <constant> --> <complex-constant> |
      <unsigned-constant>   |
      - <unsigned-constant>
    20.  <complex-constant> --> '<complex-number>'
    21.  <unsigned-constant> --> <unsigned-number> |
      <unsigned-integer>
    22.  <complex-number> --> <left-part> <right-part>
    23.  <left-part> --> <expression> |
      <empty>
    24.  <right-part> --> ,<expression> |
      $EXP( <expression> )   |
      <empty>
    25.  <constant-identifier> --> <identifier>
    26.  <variable-identifier> --> <identifier>
    27.  <procedure-identifier> --> <identifier>
    28.  <function-identifier>  --> <identifier>
    29.  <builtin-function-identifier> --> <identifier>
    30.  <assembly-insert-file-identifier> --> <identifier>
    31.  <identifier> --> <letter><string>
    32.  <string> --> <letter><string> |
      <digit><string> |
      <empty>
    33.  <unsigned-number> --> <integer-part><fractional-part>
    34.  <integer-part> --> <unsigned-integer> |
      <empty>
    35.  <fractional-part> --> #<sign><unsigned-integer> |
      <empty>
    36.  <unsigned-integer> --> <digit><digits-string>
    37.  <digits-string> --> <digit><digits-string> |
      <empty>
    38.  <sign> --> + |
      - |
      <empty>
    39.  <digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
    40.  <letter> --> A | B | C | D | ... | Z

Варіант 27

  1. <signal-program> --> <program>
    1.  <program> --> PROGRAM <procedure-identifier> ; <block>. |
      PROCEDURE <procedure-identifier><parameters-list> ; <block> ;
    2.  <block> --> <declarations> BEGIN <statements-list> END
    3.  <declarations> --> <label-declarations><constant-declarations><variable-declarations><math-function-declarations><procedure-declarations>
    4.  <label-declarations> --> LABEL <unsigned-integer> <labels-list>; |
      <empty>
    5.  <labels-list> -->  , <unsigned-integer> <labels-list> |
      <empty>
    6.  <constant-declarations> --> CONST <constant-declarations-list> |
      <empty>
    7.  <constant-declarations-list> --> <constant-declaration> <constant-declarations-list> |
      <empty>
    8.  <constant-declaration> --> <constant-identifier> = <constant>;
    9.  <variable-declarations> --> VAR <declarations-list>   |
      <empty>
    10.  <declarations-list> --> <declaration> <declarations-list> |
      <empty>
    11.  <declaration> --><variable-identifier><identifiers-list>:<attribute><attributes-list> ;
    12.  <identifiers-list> --> , <variable-identifier> <identifiers-list> |
      <empty>
    13.  <attributes-list> --> <attribute> <attributes-list> |
      <empty>
    14.  <attribute> --> SIGNAL     |
      COMPLEX    |
      INTEGER    |
      FLOAT      |
      BLOCKFLOAT |
      EXT        |
      [<range><ranges-list>]
    15.  <ranges-list> -->  ,<range> <ranges-list> |
      <empty>
    16.  <range> --> <unsigned-integer> .. <unsigned-integer>
    17.  <math-function-declaration> --> DEFFUNC <function-list> |
      <empty>
    18.  <function-list> --> <function> <function-list> |
      <empty>
    19.  <function> --> <function-identifier> = <expression><function-characteristic> ;
    20.  <function-characteristic> --> \ <unsigned-integer> , <unsigned-integer>
    21.  <procedure-declarations> --> <procedure> <procedure-declarations> |
      <empty>
    22.  <procedure> --> PROCEDURE <procedure-identifier><parameters-list> ;
    23.  <parameters-list> --> ( <declarations-list> ) |
      <empty>
    24.  <statements-list> --> <statement> <statements-list> |
      <empty>
    25.  <statement> --> <unsigned-integer> : <statement> |
      <variable> := <expression> ;  |
      <procedure-identifier><actual-arguments> ; |
      <condition-statement> ENDIF ; |
      WHILE <conditional-expression> DO <statements-list> ENDWHILE ; |
      LOOP <statements-list> ENDLOOP ; |
      FOR <variable-identifier> := <loop-declaration> ENDFOR ; |
      CASE <expression> OF <alternatives-list> ENDCASE ; |
      GOTO <unsigned-integer> ; |
      LINK <variable-identifier> , <unsigned-integer> ; |
      IN <unsigned-integer>;  |
      OUT <unsigned-integer>; |
      RETURN ; |
      ;  |
      ($ <assembly-insert-file-identifier> $)
    26.  <condition-statement> --> <incomplete-condition-statement><alternative-part>
    27.  <incomplete-condition-statement> --> IF <conditional-expression> THEN <statements-list>
    28.  <alternative-part> --> ELSE <statements-list>  |
      <empty>
    29.  <loop-declaration> --> <expression> TO <expression> DO <statements-list>
    30.  <actual-arguments> --> ( <expression> <actual-arguments-list> )  |
      <empty>
    31.  <actual-arguments-list> --> ,<expression> <actual-arguments-list> |
      <empty>
    32.  <alternatives-list> --> <alternative> <alternatives-list> |
      <empty>
    33.  <alternative> --> <expression> : / <statements-list> \
    34.  <conditional-expression> --> <logical-summand> <logical>
    35.  <logical> --> OR <logical-summand> <logical>  |
      <empty>
    36.  <logical-summand> --> <logical-multiplier> <logical-multipliers-list>
    37.  <logical-multipliers-list> --> AND <logical-multiplier> <logical-multipliers-list> |
      <empty>
    38.  <logical-multiplier> --> <expression><comparison-operator><expression> |
      [ <conditional-expression> ]  |
      NOT <logical-multiplier>
    39.  <comparison-operator> -->  <   |
      <=  |
      =   |
      <>  |
      >=  |
      >
    40.  <expression> --> <summand> <summands-list>   |
      - <summand> <summands-list>
    41.  <summands-list> --> <add-instruction> <summand> <summands-list> |
      <empty>
    42.  <add-instruction> -->     +   |
      -   |
      !   |
    43.  <summand> --> <multiplier><multipliers-list>
    44.  <multipliers-list> --> <multiplication-instruction><multiplier><multipliers-list>  |
      <empty>
    45.  <multiplication-instruction> -->     *   |
      /   |
      &   |
      MOD
    46.  <multiplier> --> <unsigned-constant>  |
      <complex-constant> |
      <constant-identifier>  |
      <variable>  |
      <function-identifier>  |
      <builtin-function-identifier><actual-arguments>  |
      ( <expression> )  |
      ^ <multiplier>
    47.  <variable> --> <variable-identifier><dimension> |
      <complex-variable>
    48.  <complex-variable> --> "<complex-number>"
    49.  <dimension> --> [ <expression> <expressions-list> ]   |
      <empty>
    50.  <expressions-list> -->  ,<expression><expressions-list>  |
      <empty>
    51.  <constant> --> <complex-constant> |
      <unsigned-constant>   |
      - <unsigned-constant>
    52.  <complex-constant> --> '<complex-number>'
    53.  <unsigned-constant> --> <unsigned-number> |
      <unsigned-integer>
    54.  <complex-number> --> <left-part> <right-part>
    55.  <left-part> --> <expression> |
      <empty>
    56.  <right-part> --> ,<expression> |
      $EXP( <expression> )   |
      <empty>
    57.  <constant-identifier> --> <identifier>
    58.  <variable-identifier> --> <identifier>
    59.  <procedure-identifier> --> <identifier>
    60.  <function-identifier>  --> <identifier>
    61.  <builtin-function-identifier> --> <identifier>
    62.  <assembly-insert-file-identifier> --> <identifier>
    63.  <identifier> --> <letter><string>
    64.  <string> --> <letter><string> |
      <digit><string> |
      <empty>
    65.  <unsigned-number> --> <integer-part><fractional-part>
    66.  <integer-part> --> <unsigned-integer> |
      <empty>
    67.  <fractional-part> --> #<sign><unsigned-integer> |
      <empty>
    68.  <unsigned-integer> --> <digit><digits-string>
    69.  <digits-string> --> <digit><digits-string> |
      <empty>
    70.  <sign> --> + |
      - |
      <empty>
    71.  <digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
    72.  <letter> --> A | B | C | D | ... | Z

Варіант 28

  1. <signal-program> --> <program>
    1.  <program> --> PROGRAM <procedure-identifier> ; <block>. |
      PROCEDURE <procedure-identifier><parameters-list> ; <block> ;
    2.  <block> --> <declarations> BEGIN <statements-list> END
    3.  <declarations> --> <label-declarations><constant-declarations><variable-declarations><math-function-declarations><procedure-declarations>
    4.  <label-declarations> --> LABEL <unsigned-integer> <labels-list>; |
      <empty>
    5.  <labels-list> -->  , <unsigned-integer> <labels-list> |
      <empty>
    6.  <constant-declarations> --> CONST <constant-declarations-list> |
      <empty>
    7.  <constant-declarations-list> --> <constant-declaration> <constant-declarations-list> |
      <empty>
    8.  <constant-declaration> --> <constant-identifier> = <constant>;
    9.  <variable-declarations> --> VAR <declarations-list>   |
      <empty>
    10.  <declarations-list> --> <declaration> <declarations-list> |
      <empty>
    11.  <declaration> --><variable-identifier><identifiers-list>:<attribute><attributes-list> ;
    12.  <identifiers-list> --> , <variable-identifier> <identifiers-list> |
      <empty>
    13.  <attributes-list> --> <attribute> <attributes-list> |
      <empty>
    14.  <attribute> --> SIGNAL     |
      COMPLEX    |
      INTEGER    |
      FLOAT      |
      BLOCKFLOAT |
      EXT        |
      [<range><ranges-list>]
    15.  <ranges-list> -->  ,<range> <ranges-list> |
      <empty>
    16.  <range> --> <unsigned-integer> .. <unsigned-integer>
    17.  <math-function-declaration> --> DEFFUNC <function-list> |
      <empty>
    18.  <function-list> --> <function> <function-list> |
      <empty>
    19.  <function> --> <function-identifier> = <expression><function-characteristic> ;
    20.  <function-characteristic> --> \ <unsigned-integer> , <unsigned-integer>
    21.  <procedure-declarations> --> <procedure> <procedure-declarations> |
      <empty>
    22.  <procedure> --> PROCEDURE <procedure-identifier><parameters-list> ;
    23.  <parameters-list> --> ( <declarations-list> ) |
      <empty>
    24.  <statements-list> --> <statement> <statements-list> |
      <empty>
    25.  <statement> --> <unsigned-integer> : <statement> |
      <variable> := <expression> ;  |
      <procedure-identifier><actual-arguments> ; |
      <condition-statement> ENDIF ; |
      WHILE <conditional-expression> DO <statements-list> ENDWHILE ; |
      LOOP <statements-list> ENDLOOP ; |
      FOR <variable-identifier> := <loop-declaration> ENDFOR ; |
      CASE <expression> OF <alternatives-list> ENDCASE ; |
      GOTO <unsigned-integer> ; |
      LINK <variable-identifier> , <unsigned-integer> ; |
      IN <unsigned-integer>;  |
      OUT <unsigned-integer>; |
      RETURN ; |
      ;  |
      ($ <assembly-insert-file-identifier> $)
    26.  <condition-statement> --> <incomplete-condition-statement><alternative-part>
    27.  <incomplete-condition-statement> --> IF <conditional-expression> THEN <statements-list>
    28.  <alternative-part> --> ELSE <statements-list>  |
      <empty>
    29.  <loop-declaration> --> <expression> TO <expression> DO <statements-list>
    30.  <actual-arguments> --> ( <expression> <actual-arguments-list> )  |
      <empty>
    31.  <actual-arguments-list> --> ,<expression> <actual-arguments-list> |
      <empty>
    32.  <alternatives-list> --> <alternative> <alternatives-list> |
      <empty>
    33.  <alternative> --> <expression> : / <statements-list> \
    34.  <conditional-expression> --> <logical-summand> <logical>
    35.  <logical> --> OR <logical-summand> <logical>  |
      <empty>
    36.  <logical-summand> --> <logical-multiplier> <logical-multipliers-list>
    37.  <logical-multipliers-list> --> AND <logical-multiplier> <logical-multipliers-list> |
      <empty>
    38.  <logical-multiplier> --> <expression><comparison-operator><expression> |
      [ <conditional-expression> ]  |
      NOT <logical-multiplier>
    39.  <comparison-operator> -->  <   |
      <=  |
      =   |
      <>  |
      >=  |
      >
    40.  <expression> --> <summand> <summands-list>   |
      - <summand> <summands-list>
    41.  <summands-list> --> <add-instruction> <summand> <summands-list> |
      <empty>
    42.  <add-instruction> -->     +   |
      -   |
      !   |
    43.  <summand> --> <multiplier><multipliers-list>
    44.  <multipliers-list> --> <multiplication-instruction><multiplier><multipliers-list>  |
      <empty>
    45.  <multiplication-instruction> -->     *   |
      /   |
      &   |
      MOD
    46.  <multiplier> --> <unsigned-constant>  |
      <complex-constant> |
      <constant-identifier>  |
      <variable>  |
      <function-identifier>  |
      <builtin-function-identifier><actual-arguments>  |
      ( <expression> )  |
      ^ <multiplier>
    47.  <variable> --> <variable-identifier><dimension> |
      <complex-variable>
    48.  <complex-variable> --> "<complex-number>"
    49.  <dimension> --> [ <expression> <expressions-list> ]   |
      <empty>
    50.  <expressions-list> -->  ,<expression><expressions-list>  |
      <empty>
    51.  <constant> --> <complex-constant> |
      <unsigned-constant>   |
      - <unsigned-constant>
    52.  <complex-constant> --> '<complex-number>'
    53.  <unsigned-constant> --> <unsigned-number> |
      <unsigned-integer>
    54.  <complex-number> --> <left-part> <right-part>
    55.  <left-part> --> <expression> |
      <empty>
    56.  <right-part> --> ,<expression> |
      $EXP( <expression> )   |
      <empty>
    57.  <constant-identifier> --> <identifier>
    58.  <variable-identifier> --> <identifier>
    59.  <procedure-identifier> --> <identifier>
    60.  <function-identifier>  --> <identifier>
    61.  <builtin-function-identifier> --> <identifier>
    62.  <assembly-insert-file-identifier> --> <identifier>
    63.  <identifier> --> <letter><string>
    64.  <string> --> <letter><string> |
      <digit><string> |
      <empty>
    65.  <unsigned-number> --> <integer-part><fractional-part>
    66.  <integer-part> --> <unsigned-integer> |
      <empty>
    67.  <fractional-part> --> #<sign><unsigned-integer> |
      <empty>
    68.  <unsigned-integer> --> <digit><digits-string>
    69.  <digits-string> --> <digit><digits-string> |
      <empty>
    70.  <sign> --> + |
      - |
      <empty>
    71.  <digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
    72.  <letter> --> A | B | C | D | ... | Z

Варіант 29

  1. <signal-program> --> <program>
    1.  <program> --> PROGRAM <procedure-identifier> ; <block>. |
      PROCEDURE <procedure-identifier><parameters-list> ; <block> ;
    2.  <block> --> <declarations> BEGIN <statements-list> END
    3.  <declarations> --> <label-declarations><constant-declarations><variable-declarations><math-function-declarations><procedure-declarations>
    4.  <label-declarations> --> LABEL <unsigned-integer> <labels-list>; |
      <empty>
    5.  <labels-list> -->  , <unsigned-integer> <labels-list> |
      <empty>
    6.  <constant-declarations> --> CONST <constant-declarations-list> |
      <empty>
    7.  <constant-declarations-list> --> <constant-declaration> <constant-declarations-list> |
      <empty>
    8.  <constant-declaration> --> <constant-identifier> = <constant>;
    9.  <variable-declarations> --> VAR <declarations-list>   |
      <empty>
    10.  <declarations-list> --> <declaration> <declarations-list> |
      <empty>
    11.  <declaration> --><variable-identifier><identifiers-list>:<attribute><attributes-list> ;
    12.  <identifiers-list> --> , <variable-identifier> <identifiers-list> |
      <empty>
    13.  <attributes-list> --> <attribute> <attributes-list> |
      <empty>
    14.  <attribute> --> SIGNAL     |
      COMPLEX    |
      INTEGER    |
      FLOAT      |
      BLOCKFLOAT |
      EXT        |
      [<range><ranges-list>]
    15.  <ranges-list> -->  ,<range> <ranges-list> |
      <empty>
    16.  <range> --> <unsigned-integer> .. <unsigned-integer>
    17.  <math-function-declaration> --> DEFFUNC <function-list> |
      <empty>
    18.  <function-list> --> <function> <function-list> |
      <empty>
    19.  <function> --> <function-identifier> = <expression><function-characteristic> ;
    20.  <function-characteristic> --> \ <unsigned-integer> , <unsigned-integer>
    21.  <procedure-declarations> --> <procedure> <procedure-declarations> |
      <empty>
    22.  <procedure> --> PROCEDURE <procedure-identifier><parameters-list> ;
    23.  <parameters-list> --> ( <declarations-list> ) |
      <empty>
    24.  <statements-list> --> <statement> <statements-list> |
      <empty>
    25.  <statement> --> <unsigned-integer> : <statement> |
      <variable> := <expression> ;  |
      <procedure-identifier><actual-arguments> ; |
      <condition-statement> ENDIF ; |
      WHILE <conditional-expression> DO <statements-list> ENDWHILE ; |
      LOOP <statements-list> ENDLOOP ; |
      FOR <variable-identifier> := <loop-declaration> ENDFOR ; |
      CASE <expression> OF <alternatives-list> ENDCASE ; |
      GOTO <unsigned-integer> ; |
      LINK <variable-identifier> , <unsigned-integer> ; |
      IN <unsigned-integer>;  |
      OUT <unsigned-integer>; |
      RETURN ; |
      ;  |
      ($ <assembly-insert-file-identifier> $)
    26.  <condition-statement> --> <incomplete-condition-statement><alternative-part>
    27.  <incomplete-condition-statement> --> IF <conditional-expression> THEN <statements-list>
    28.  <alternative-part> --> ELSE <statements-list>  |
      <empty>
    29.  <loop-declaration> --> <expression> TO <expression> DO <statements-list>
    30.  <actual-arguments> --> ( <expression> <actual-arguments-list> )  |
      <empty>
    31.  <actual-arguments-list> --> ,<expression> <actual-arguments-list> |
      <empty>
    32.  <alternatives-list> --> <alternative> <alternatives-list> |
      <empty>
    33.  <alternative> --> <expression> : / <statements-list> \
    34.  <conditional-expression> --> <logical-summand> <logical>
    35.  <logical> --> OR <logical-summand> <logical>  |
      <empty>
    36.  <logical-summand> --> <logical-multiplier> <logical-multipliers-list>
    37.  <logical-multipliers-list> --> AND <logical-multiplier> <logical-multipliers-list> |
      <empty>
    38.  <logical-multiplier> --> <expression><comparison-operator><expression> |
      [ <conditional-expression> ]  |
      NOT <logical-multiplier>
    39.  <comparison-operator> -->  <   |
      <=  |
      =   |
      <>  |
      >=  |
      >
    40.  <expression> --> <summand> <summands-list>   |
      - <summand> <summands-list>
    41.  <summands-list> --> <add-instruction> <summand> <summands-list> |
      <empty>
    42.  <add-instruction> -->     +   |
      -   |!   |
    43.  <summand> --> <multiplier><multipliers-list>
    44.  <multipliers-list> --> <multiplication-instruction><multiplier><multipliers-list>  |
      <empty>
    45.  <multiplication-instruction> -->     *   |
      /   |
      &   |
      MOD
    46.  <multiplier> --> <unsigned-constant>  |
      <complex-constant> |
      <constant-identifier>  |
      <variable>  |
      <function-identifier>  |
      <builtin-function-identifier><actual-arguments>  |
      ( <expression> )  |
      ^ <multiplier>
    47.  <variable> --> <variable-identifier><dimension> |
      <complex-variable>
    48.  <complex-variable> --> "<complex-number>"
    49.  <dimension> --> [ <expression> <expressions-list> ]   |
      <empty>
    50.  <expressions-list> -->  ,<expression><expressions-list>  |
      <empty>
    51.  <constant> --> <complex-constant> |
      <unsigned-constant>   |
      - <unsigned-constant>
    52.  <complex-constant> --> '<complex-number>'
    53.  <unsigned-constant> --> <unsigned-number> |
      <unsigned-integer>
    54.  <complex-number> --> <left-part> <right-part>
    55.  <left-part> --> <expression> |
      <empty>
    56.  <right-part> --> ,<expression> |
      $EXP( <expression> )   |
      <empty>
    57.  <constant-identifier> --> <identifier>
    58.  <variable-identifier> --> <identifier>
    59.  <procedure-identifier> --> <identifier>
    60.  <function-identifier>  --> <identifier>
    61.  <builtin-function-identifier> --> <identifier>
    62.  <assembly-insert-file-identifier> --> <identifier>
    63.  <identifier> --> <letter><string>
    64.  <string> --> <letter><string> |
      <digit><string> |
      <empty>
    65.  <unsigned-number> --> <integer-part><fractional-part>
    66.  <integer-part> --> <unsigned-integer> |
      <empty>
    67.  <fractional-part> --> #<sign><unsigned-integer> |
      <empty>
    68.  <unsigned-integer> --> <digit><digits-string>
    69.  <digits-string> --> <digit><digits-string> |
      <empty>
    70.  <sign> --> + |
      - |
      <empty>
    71.  <digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
    72.  <letter> --> A | B | C | D | ... | Z

Варіант 30

  1. <signal-program> --> <program>
    1.  <program> --> PROGRAM <procedure-identifier> ; <block>. |
      PROCEDURE <procedure-identifier><parameters-list> ; <block> ;
    2.  <block> --> <declarations> BEGIN <statements-list> END
    3.  <declarations> --> <label-declarations><constant-declarations><variable-declarations><math-function-declarations><procedure-declarations>
    4.  <label-declarations> --> LABEL <unsigned-integer> <labels-list>; |
      <empty>
    5.  <labels-list> -->  , <unsigned-integer> <labels-list> |
      <empty>
    6.  <constant-declarations> --> CONST <constant-declarations-list> |
      <empty>
    7.  <constant-declarations-list> --> <constant-declaration> <constant-declarations-list> |
      <empty>
    8.  <constant-declaration> --> <constant-identifier> = <constant>;
    9.  <variable-declarations> --> VAR <declarations-list>   |
      <empty>
    10.  <declarations-list> --> <declaration> <declarations-list> |
      <empty>
    11.  <declaration> --><variable-identifier><identifiers-list>:<attribute><attributes-list> ;
    12.  <identifiers-list> --> , <variable-identifier> <identifiers-list> |
      <empty>
    13.  <attributes-list> --> <attribute> <attributes-list> |
      <empty>
    14.  <attribute> --> SIGNAL     |
      COMPLEX    |
      INTEGER    |
      FLOAT      |
      BLOCKFLOAT |
      EXT        |

      [<range><ranges-list>]
    15.  <ranges-list> -->  ,<range> <ranges-list> |
      <empty>
    16.  <range> --> <unsigned-integer> .. <unsigned-integer>
    17.  <math-function-declaration> --> DEFFUNC <function-list> |
      <empty>
    18.  <function-list> --> <function> <function-list> |
      <empty>
    19.  <function> --> <function-identifier> = <expression><function-characteristic> ;
    20.  <function-characteristic> --> \ <unsigned-integer> , <unsigned-integer>
    21.  <procedure-declarations> --> <procedure> <procedure-declarations> |
      <empty>
    22.  <procedure> --> PROCEDURE <procedure-identifier><parameters-list> ;
    23.  <parameters-list> --> ( <declarations-list> ) |
      <empty>
    24.  <statements-list> --> <statement> <statements-list> |
      <empty>
    25.  <statement> --> <unsigned-integer> : <statement> |
      <variable> := <expression> ;  |
      <procedure-identifier><actual-arguments> ; |
      <condition-statement> ENDIF ; |
      WHILE <conditional-expression> DO <statements-list> ENDWHILE ; |
      LOOP <statements-list> ENDLOOP ; |
      FOR <variable-identifier> := <loop-declaration> ENDFOR ; |
      CASE <expression> OF <alternatives-list> ENDCASE ; |
      GOTO <unsigned-integer> ; |
      LINK <variable-identifier> , <unsigned-integer> ; |
      IN <unsigned-integer>;  |
      OUT <unsigned-integer>; |
      RETURN ; |
      ;  |
      ($ <assembly-insert-file-identifier> $)
    26.  <condition-statement> --> <incomplete-condition-statement><alternative-part>
    27.  <incomplete-condition-statement> --> IF <conditional-expression> THEN <statements-list>
    28.  <alternative-part> --> ELSE <statements-list>  |
      <empty>
    29.  <loop-declaration> --> <expression> TO <expression> DO <statements-list>
    30.  <actual-arguments> --> ( <expression> <actual-arguments-list> )  |
      <empty>
    31.  <actual-arguments-list> --> ,<expression> <actual-arguments-list> |
      <empty>
    32.  <alternatives-list> --> <alternative> <alternatives-list> |
      <empty>
    33.  <alternative> --> <expression> : / <statements-list> \
    34.  <conditional-expression> --> <logical-summand> <logical>
    35.  <logical> --> OR <logical-summand> <logical>  |
      <empty>
    36.  <logical-summand> --> <logical-multiplier> <logical-multipliers-list>
    37.  <logical-multipliers-list> --> AND <logical-multiplier> <logical-multipliers-list> |
      <empty>
    38.  <logical-multiplier> --> <expression><comparison-operator><expression> |
      [ <conditional-expression> ]  |
      NOT <logical-multiplier>
    39.  <comparison-operator> -->  <   |
      <=  |
      =   |
      <>  |
      >=  |
      >
    40.  <expression> --> <summand> <summands-list>   |
      - <summand> <summands-list>
    41.  <summands-list> --> <add-instruction> <summand> <summands-list> |
      <empty>
    42.  <add-instruction> -->     +   |
      -   |
      !
    43.  <summand> --> <multiplier><multipliers-list>
    44.  <multipliers-list> --> <multiplication-instruction> <multiplier><multipliers-list>  |
      <empty>
    45.  <multiplication-instruction> -->     *   |
      /   |
      &   |
      MOD
    46.  <multiplier> --> <unsigned-constant>  |
      <complex-constant> |
      <constant-identifier>  |
      <variable>  |
      <function-identifier>  |
      <builtin-function-identifier><actual-arguments>  |
      ( <expression> )  |
      ^ <multiplier>
    47.  <variable> --> <variable-identifier><dimension> |
      <complex-variable>
    48.  <complex-variable> --> "<complex-number>"
    49.  <dimension> --> [ <expression> <expressions-list> ]   |
      <empty>
    50.  <expressions-list> -->  ,<expression><expressions-list>  |
      <empty>
    51.  <constant> --> <complex-constant> |
      <unsigned-constant>   |
      - <unsigned-constant>
    52.  <complex-constant> --> '<complex-number>'
    53.  <unsigned-constant> --> <unsigned-number> |
      <unsigned-integer>
    54.  <complex-number> --> <left-part> <right-part>
    55.  <left-part> --> <expression> |
      <empty>
    56.  <right-part> --> ,<expression> |
      $EXP( <expression> )   |
      <empty>
    57.  <constant-identifier> --> <identifier>
    58.  <variable-identifier> --> <identifier>
    59.  <procedure-identifier> --> <identifier>
    60.  <function-identifier>  --> <identifier>
    61.  <builtin-function-identifier> --> <identifier>
    62.  <assembly-insert-file-identifier> --> <identifier>
    63.  <identifier> --> <letter><string>
    64.  <string> --> <letter><string> |
      <digit><string> |
      <empty>
    65.  <unsigned-number> --> <integer-part><fractional-part>
    66.  <integer-part> --> <unsigned-integer> |
      <empty>
    67.  <fractional-part> --> #<sign><unsigned-integer> |
      <empty>
    68.  <unsigned-integer> --> <digit><digits-string>
    69.  <digits-string> --> <digit><digits-string> |
      <empty>
    70.  <sign> --> + |
      - |
      <empty>
    71.  <digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
    72.  <letter> --> A | B | C | D | ... | Z

Варіант 31

  1. <signal-program> --> <program>
    1.  <program> --> PROGRAM <procedure-identifier> ; <block>. |
      PROCEDURE <procedure-identifier><parameters-list> ; <block> ;
    2.  <block> --> <declarations> BEGIN <statements-list> END
    3.  <declarations> --> <label-declarations><constant-declarations><variable-declarations><math-function-declarations><procedure-declarations>
    4.  <label-declarations> --> LABEL <unsigned-integer> <labels-list>; |
      <empty>
    5.  <labels-list> -->  , <unsigned-integer> <labels-list> |
      <empty>
    6.  <constant-declarations> --> CONST <constant-declarations-list> |
      <empty>
    7.  <constant-declarations-list> --> <constant-declaration> <constant-declarations-list> |
      <empty>
    8.  <constant-declaration> --> <constant-identifier> = <constant>;
    9.  <variable-declarations> --> VAR <declarations-list>   |
      <empty>
    10.  <declarations-list> --> <declaration> <declarations-list> |
      <empty>
    11.  <declaration> --><variable-identifier><identifiers-list>:<attribute><attributes-list> ;
    12.  <identifiers-list> --> , <variable-identifier> <identifiers-list> |
      <empty>
    13.  <attributes-list> --> <attribute> <attributes-list> |
      <empty>
    14.  <attribute> --> SIGNAL     |
      COMPLEX    |
      INTEGER    |
      FLOAT      |
      BLOCKFLOAT |
      EXT        |
      [<range><ranges-list>]
    15.  <ranges-list> -->  ,<range> <ranges-list> |
      <empty>
    16.  <range> --> <unsigned-integer> .. <unsigned-integer>
    17.  <math-function-declaration> --> DEFFUNC <function-list> |
      <empty>
    18.  <function-list> --> <function> <function-list> |
      <empty>
    19.  <function> --> <function-identifier> = <expression><function-characteristic> ;
    20.  <function-characteristic> --> \ <unsigned-integer> , <unsigned-integer>
    21.  <procedure-declarations> --> <procedure> <procedure-declarations> |
      <empty>
    22.  <procedure> --> PROCEDURE <procedure-identifier><parameters-list> ;
    23.  <parameters-list> --> ( <declarations-list> ) |
      <empty>
    24.  <statements-list> --> <statement> <statements-list> |
      <empty>
    25.  <statement> --> <unsigned-integer> : <statement> |
      <variable> := <expression> ;  |
      <procedure-identifier><actual-arguments> ; |
      <condition-statement> ENDIF ; |
      WHILE <conditional-expression> DO <statements-list> ENDWHILE ; |
      LOOP <statements-list> ENDLOOP ; |
      FOR <variable-identifier> := <loop-declaration> ENDFOR ; |
      CASE <expression> OF <alternatives-list> ENDCASE ; |
      GOTO <unsigned-integer> ; |
      LINK <variable-identifier> , <unsigned-integer> ; |
      IN <unsigned-integer>;  |
      OUT <unsigned-integer>; |
      RETURN ; |
      ;  |
      ($ <assembly-insert-file-identifier> $)
    26.  <condition-statement> --> <incomplete-condition-statement><alternative-part>
    27.  <incomplete-condition-statement> --> IF <conditional-expression> THEN <statements-list>
    28.  <alternative-part> --> ELSE <statements-list>  |
      <empty>
    29.  <loop-declaration> --> <expression> TO <expression> DO <statements-list>
    30.  <actual-arguments> --> ( <expression> <actual-arguments-list> )  |
      <empty>
    31.  <actual-arguments-list> --> ,<expression> <actual-arguments-list> |
      <empty>
    32.  <alternatives-list> --> <alternative> <alternatives-list> |
      <empty>
    33.  <alternative> --> <expression> : / <statements-list> \
    34.  <conditional-expression> --> <logical-summand> <logical>
    35.  <logical> --> OR <logical-summand> <logical>  |
      <empty>
    36.  <logical-summand> --> <logical-multiplier> <logical-multipliers-list>
    37.  <logical-multipliers-list> --> AND <logical-multiplier> <logical-multipliers-list> |
      <empty>
    38.  <logical-multiplier> --> <expression><comparison-operator><expression> |
      [ <conditional-expression> ]  |
      NOT <logical-multiplier>
    39.  <comparison-operator> -->  <   |
      <=  |
      =   |
      <>  |
      >=  |
      >
    40.  <expression> --> <summand> <summands-list>   |
      - <summand> <summands-list>
    41.  <summands-list> --> <add-instruction> <summand> <summands-list> |
      <empty>
    42.  <add-instruction> -->     +   |
      -   |
      !   |
    43.  <summand> --> <multiplier><multipliers-list>
    44.  <multipliers-list> --> <multiplication-instruction> <multiplier><multipliers-list>  |
      <empty>
    45.  <multiplication-instruction> -->     *   |
      /   |
      &   |
      MOD
    46.  <multiplier> --> <unsigned-constant>  |
      <complex-constant> |
      <constant-identifier>  |
      <variable>  |
      <function-identifier>  |
      <builtin-function-identifier><actual-arguments>  |
      ( <expression> )  |
      ^ <multiplier>
    47.  <variable> --> <variable-identifier><dimension> |
      <complex-variable>
    48.  <complex-variable> --> "<complex-number>"
    49.  <dimension> --> [ <expression> <expressions-list> ]   |
      <empty>
    50.  <expressions-list> -->  ,<expression><expressions-list>  |
      <empty>
    51.  <constant> --> <complex-constant> |
      <unsigned-constant>   |
      - <unsigned-constant>
    52.  <complex-constant> --> '<complex-number>'
    53.  <unsigned-constant> --> <unsigned-number> |
      <unsigned-integer>
    54.  <complex-number> --> <left-part> <right-part>
    55.  <left-part> --> <expression> |
      <empty>
    56.  <right-part> --> ,<expression> |
      $EXP( <expression> )   |
      <empty>
    57.  <constant-identifier> --> <identifier>
    58.  <variable-identifier> --> <identifier>
    59.  <procedure-identifier> --> <identifier>
    60.  <function-identifier>  --> <identifier>
    61.  <builtin-function-identifier> --> <identifier>
    62.  <assembly-insert-file-identifier> --> <identifier>
    63.  <identifier> --> <letter><string>
    64.  <string> --> <letter><string> |
      <digit><string> |
      <empty>
    65.  <unsigned-number> --> <integer-part><fractional-part>
    66.  <integer-part> --> <unsigned-integer> |
      <empty>
    67.  <fractional-part> --> #<sign><unsigned-integer> |
      <empty>
    68.  <unsigned-integer> --> <digit><digits-string>
    69.  <digits-string> --> <digit><digits-string> |
      <empty>
    70.  <sign> --> + |
      - |
      <empty>
    71.  <digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
    72.  <letter> --> A | B | C | D | ... | Z

Варіант 32

  1. <signal-program> --> <program>
    1.  <program> --> PROGRAM <procedure-identifier> ; <block>. |
      PROCEDURE <procedure-identifier><parameters-list> ; <block> ;
    2.  <block> --> <declarations> BEGIN <statements-list> END
    3.  <declarations> --> <label-declarations><constant-declarations><variable-declarations><math-function-declarations><procedure-declarations>
    4.  <label-declarations> --> LABEL <unsigned-integer> <labels-list>; |
      <empty>
    5.  <labels-list> -->  , <unsigned-integer> <labels-list> |
      <empty>
    6.  <constant-declarations> --> CONST <constant-declarations-list> |
      <empty>
    7.  <constant-declarations-list> --> <constant-declaration> <constant-declarations-list> |
      <empty>
    8.  <constant-declaration> --> <constant-identifier> = <constant>;
    9.  <variable-declarations> --> VAR <declarations-list>   |
      <empty>
    10.  <declarations-list> --> <declaration> <declarations-list> |
      <empty>
    11.  <declaration> --><variable-identifier><identifiers-list>:<attribute><attributes-list> ;
    12.  <identifiers-list> --> , <variable-identifier> <identifiers-list> |
      <empty>
    13.  <attributes-list> --> <attribute> <attributes-list> |
      <empty>
    14.  <attribute> --> SIGNAL     |
      COMPLEX    |
      INTEGER    |
      FLOAT      |
      BLOCKFLOAT |
      EXT        |
      [<range><ranges-list>]
    15.  <ranges-list> -->  ,<range> <ranges-list> |
      <empty>
    16.  <range> --> <unsigned-integer> .. <unsigned-integer>
    17.  <math-function-declaration> --> DEFFUNC <function-list> |
      <empty>
    18.  <function-list> --> <function> <function-list> |
      <empty>
    19.  <function> --> <function-identifier> = <expression><function-characteristic> ;
    20.  <function-characteristic> --> \ <unsigned-integer> , <unsigned-integer>
    21.  <procedure-declarations> --> <procedure> <procedure-declarations> |
      <empty>
    22.  <procedure> --> PROCEDURE <procedure-identifier><parameters-list> ;
    23.  <parameters-list> --> ( <declarations-list> ) |
      <empty>
    24.  <statements-list> --> <statement> <statements-list> |
      <empty>
    25.  <statement> --> <unsigned-integer> : <statement> |
      <variable> := <expression> ;  |
      <procedure-identifier><actual-arguments> ; |
      <condition-statement> ENDIF ; |
      WHILE <conditional-expression> DO <statements-list> ENDWHILE ; |
      LOOP <statements-list> ENDLOOP ; |
      FOR <variable-identifier> := <loop-declaration> ENDFOR ; |
      CASE <expression> OF <alternatives-list> ENDCASE ; |
      GOTO <unsigned-integer> ; |
      LINK <variable-identifier> , <unsigned-integer> ; |
      IN <unsigned-integer>;  |
      OUT <unsigned-integer>; |
      RETURN ; |
      ;  |
      ($ <assembly-insert-file-identifier> $)
    26.  <condition-statement> --> <incomplete-condition-statement><alternative-part>
    27.  <incomplete-condition-statement> --> IF <conditional-expression> THEN <statements-list>
    28.  <alternative-part> --> ELSE <statements-list>  |
      <empty>
    29.  <loop-declaration> --> <expression> TO <expression> DO <statements-list>
    30.  <actual-arguments> --> ( <expression> <actual-arguments-list> )  |
      <empty>
    31.  <actual-arguments-list> --> ,<expression> <actual-arguments-list> |
      <empty>
    32.  <alternatives-list> --> <alternative> <alternatives-list> |
      <empty>
    33.  <alternative> --> <expression> : / <statements-list> \
    34.  <conditional-expression> --> <logical-summand> <logical>
    35.  <logical> --> OR <logical-summand> <logical>  |
      <empty>
    36.  <logical-summand> --> <logical-multiplier> <logical-multipliers-list>
    37.  <logical-multipliers-list> --> AND <logical-multiplier> <logical-multipliers-list> |
      <empty>
    38.  <logical-multiplier> --> <expression><comparison-operator><expression> |
      [ <conditional-expression> ]  |
      NOT <logical-multiplier>
    39.  <comparison-operator> -->  <   |
      <=  |
      =   |
      <>  |
      >=  |
      >
    40.  <expression> --> <summand> <summands-list>   |
      - <summand> <summands-list>
    41.  <summands-list> --> <add-instruction> <summand> <summands-list> |
      <empty>
    42.  <add-instruction> -->     +   |
      -   |

      !
    43.  <summand> --> <multiplier><multipliers-list>
    44.  <multipliers-list> --> <multiplication-instruction> <multiplier><multipliers-list>  |
      <empty>
    45.  <multiplication-instruction> -->     *   |
      /   |
      &   |
      MOD
    46.  <multiplier> --> <unsigned-constant>  |
      <complex-constant> |
      <constant-identifier>  |
      <variable>  |
      <function-identifier>  |
      <builtin-function-identifier><actual-arguments>  |
      ( <expression> )  |
      ^ <multiplier>
    47.  <variable> --> <variable-identifier><dimension> |
      <complex-variable>
    48.  <complex-variable> --> "<complex-number>"
    49.  <dimension> --> [ <expression> <expressions-list> ]   |
      <empty>
    50.  <expressions-list> -->  ,<expression><expressions-list>  |
      <empty>
    51.  <constant> --> <complex-constant> |
      <unsigned-constant>   |
      - <unsigned-constant>
    52.  <complex-constant> --> '<complex-number>'
    53.  <unsigned-constant> --> <unsigned-number> |
      <unsigned-integer>
    54.  <complex-number> --> <left-part> <right-part>
    55.  <left-part> --> <expression> |
      <empty>
    56.  <right-part> --> ,<expression> |
      $EXP( <expression> )   |
      <empty>
    57.  <constant-identifier> --> <identifier>
    58.  <variable-identifier> --> <identifier>
    59.  <procedure-identifier> --> <identifier>
    60.  <function-identifier>  --> <identifier>
    61.  <builtin-function-identifier> --> <identifier>
    62.  <assembly-insert-file-identifier> --> <identifier>
    63.  <identifier> --> <letter><string>
    64.  <string> --> <letter><string> |
      <digit><string> |
      <empty>
    65.  <unsigned-number> --> <integer-part><fractional-part>
    66.  <integer-part> --> <unsigned-integer> |
      <empty>
    67.  <fractional-part> --> #<sign><unsigned-integer> |
      <empty>
    68.  <unsigned-integer> --> <digit><digits-string>
    69.  <digits-string> --> <digit><digits-string> |
      <empty>
    70.  <sign> --> + |
      - |
      <empty>
    71.  <digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
    72.  <letter> --> A | B | C | D | ... | Z

Варіант 33

  1. <signal-program> --> <program>
    1.  <program> --> PROGRAM <procedure-identifier> ; <block>. |
      PROCEDURE <procedure-identifier><parameters-list> ; <block> ;
    2.  <block> --> <declarations> BEGIN <statements-list> END
    3.  <declarations> --> <label-declarations><constant-declarations><variable-declarations><math-function-declarations><procedure-declarations>
    4.  <label-declarations> --> LABEL <unsigned-integer> <labels-list>; |
      <empty>
    5.  <labels-list> -->  , <unsigned-integer> <labels-list> |
      <empty>
    6.  <constant-declarations> --> CONST <constant-declarations-list> |
      <empty>
    7.  <constant-declarations-list> --> <constant-declaration> <constant-declarations-list> |
      <empty>
    8.  <constant-declaration> --> <constant-identifier> = <constant>;
    9.  <variable-declarations> --> VAR <declarations-list>   |
      <empty>
    10.  <declarations-list> --> <declaration> <declarations-list> |
      <empty>
    11.  <declaration> --><variable-identifier><identifiers-list>:<attribute><attributes-list> ;
    12.  <identifiers-list> --> , <variable-identifier> <identifiers-list> |
      <empty>
    13.  <attributes-list> --> <attribute> <attributes-list> |
      <empty>
    14.  <attribute> --> SIGNAL     |
      COMPLEX    |
      INTEGER    |
      FLOAT      |
      BLOCKFLOAT |

      EXT        |
      [<range><ranges-list>]
    15.  <ranges-list> -->  ,<range> <ranges-list> |
      <empty>
    16.  <range> --> <unsigned-integer> .. <unsigned-integer>
    17.  <math-function-declaration> --> DEFFUNC <function-list> |
      <empty>
    18.  <function-list> --> <function> <function-list> |
      <empty>
    19.  <function> --> <function-identifier> = <expression><function-characteristic> ;
    20.  <function-characteristic> --> \ <unsigned-integer> , <unsigned-integer>
    21.  <procedure-declarations> --> <procedure> <procedure-declarations> |
      <empty>
    22.  <procedure> --> PROCEDURE <procedure-identifier><parameters-list> ;
    23.  <parameters-list> --> ( <declarations-list> ) |
      <empty>
    24.  <statements-list> --> <statement> <statements-list> |
      <empty>
    25.  <statement> --> <unsigned-integer> : <statement> |
      <variable> := <expression> ;  |
      <procedure-identifier><actual-arguments> ; |
      <condition-statement> ENDIF ; |
      WHILE <conditional-expression> DO <statements-list> ENDWHILE ; |
      LOOP <statements-list> ENDLOOP ; |
      FOR <variable-identifier> := <loop-declaration> ENDFOR ; |
      CASE <expression> OF <alternatives-list> ENDCASE ; |
      GOTO <unsigned-integer> ; |

      LINK <variable-identifier> , <unsigned-integer> ; |
      IN <unsigned-integer>;  |
      OUT <unsigned-integer>; |
      RETURN ; |
      ;  |
      ($ <assembly-insert-file-identifier> $)
    26.  <condition-statement> --> <incomplete-condition-statement><alternative-part>
    27.  <incomplete-condition-statement> --> IF <conditional-expression> THEN <statements-list>
    28.  <alternative-part> --> ELSE <statements-list>  |
      <empty>
    29.  <loop-declaration> --> <expression> TO <expression> DO <statements-list>
    30.  <actual-arguments> --> ( <expression> <actual-arguments-list> )  |
      <empty>
    31.  <actual-arguments-list> --> ,<expression> <actual-arguments-list> |
      <empty>
    32.  <alternatives-list> --> <alternative> <alternatives-list> |
      <empty>
    33.  <alternative> --> <expression> : / <statements-list> \
    34.  <conditional-expression> --> <logical-summand> <logical>
    35.  <logical> --> OR <logical-summand> <logical>  |
      <empty>
    36.  <logical-summand> --> <logical-multiplier> <logical-multipliers-list>
    37.  <logical-multipliers-list> --> AND <logical-multiplier> <logical-multipliers-list> |
      <empty>
    38.  <logical-multiplier> --> <expression><comparison-operator><expression> |
      [ <conditional-expression> ]  |
      NOT <logical-multiplier>
    39.  <comparison-operator> -->  <   |
      <=  |
      =   |
      <>  |
      >=  |
      >
    40.  <expression> --> <summand> <summands-list>   |
      - <summand> <summands-list>
    41.  <summands-list> --> <add-instruction> <summand> <summands-list> |
      <empty>
    42.  <add-instruction> -->     +   |
      -   |
      !  
    43.  <summand> --> <multiplier><multipliers-list>
    44.  <multipliers-list> --> <multiplication-instruction> <multiplier><multipliers-list>  |
      <empty>
    45.  <multiplication-instruction> -->     *   |
      /   |
      &   |
      MOD
    46.  <multiplier> --> <unsigned-constant>  |
      <complex-constant> |
      <constant-identifier>  |
      <variable>  |
      <function-identifier>  |
      <builtin-function-identifier><actual-arguments>  |
      ( <expression> )  |
      ^ <multiplier>
    47.  <variable> --> <variable-identifier><dimension> |
      <complex-variable>
    48.  <complex-variable> --> "<complex-number>"
    49.  <dimension> --> [ <expression> <expressions-list> ]   |
      <empty>
    50.  <expressions-list> -->  ,<expression><expressions-list>  |
      <empty>
    51.  <constant> --> <complex-constant> |
      <unsigned-constant>   |
      - <unsigned-constant>
    52.  <complex-constant> --> '<complex-number>'
    53.  <unsigned-constant> --> <unsigned-number> |
      <unsigned-integer>
    54.  <complex-number> --> <left-part> <right-part>
    55.  <left-part> --> <expression> |
      <empty>
    56.  <right-part> --> ,<expression> |
      $EXP( <expression> )   |
      <empty>
    57.  <constant-identifier> --> <identifier>
    58.  <variable-identifier> --> <identifier>
    59.  <procedure-identifier> --> <identifier>
    60.  <function-identifier>  --> <identifier>
    61.  <builtin-function-identifier> --> <identifier>
    62.  <assembly-insert-file-identifier> --> <identifier>
    63.  <identifier> --> <letter><string>
    64.  <string> --> <letter><string> |
      <digit><string> |
      <empty>
    65.  <unsigned-number> --> <integer-part><fractional-part>
    66.  <integer-part> --> <unsigned-integer> |
      <empty>
    67.  <fractional-part> --> #<sign><unsigned-integer> |
      <empty>
    68.  <unsigned-integer> --> <digit><digits-string>
    69.  <digits-string> --> <digit><digits-string> |
      <empty>
    70.  <sign> --> + |
      - |
      <empty>
    71.  <digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
    72.  <letter> --> A | B | C | D | ... | Z

Варіант 34

  1. <signal-program> --> <program>
    1.  <program> --> PROGRAM <procedure-identifier> ; <block>. |
      PROCEDURE <procedure-identifier><parameters-list> ; <block> ;
    2.  <block> --> <declarations> BEGIN <statements-list> END
    3.  <declarations> --> <label-declarations><constant-declarations><variable-declarations><math-function-declarations><procedure-declarations>
    4.  <label-declarations> --> LABEL <unsigned-integer> <labels-list>; |
      <empty>
    5.  <labels-list> -->  , <unsigned-integer> <labels-list> |
      <empty>
    6.  <constant-declarations> --> CONST <constant-declarations-list> |
      <empty>
    7.  <constant-declarations-list> --> <constant-declaration> <constant-declarations-list> |
      <empty>
    8.  <constant-declaration> --> <constant-identifier> = <constant>;
    9.  <variable-declarations> --> VAR <declarations-list>   |
      <empty>
    10.  <declarations-list> --> <declaration> <declarations-list> |
      <empty>
    11.  <declaration> --><variable-identifier><identifiers-list>:<attribute><attributes-list> ;
    12.  <identifiers-list> --> , <variable-identifier> <identifiers-list> |
      <empty>
    13.  <attributes-list> --> <attribute> <attributes-list> |
      <empty>
    14.  <attribute> --> SIGNAL     |
      COMPLEX    |
      INTEGER    |
      FLOAT      |
      BLOCKFLOAT |
      EXT        |
      [<range><ranges-list>]
    15.  <ranges-list> -->  ,<range> <ranges-list> |
      <empty>
    16.  <range> --> <unsigned-integer> .. <unsigned-integer>
    17.  <math-function-declaration> --> DEFFUNC <function-list> |
      <empty>
    18.  <function-list> --> <function> <function-list> |
      <empty>
    19.  <function> --> <function-identifier> = <expression><function-characteristic> ;
    20.  <function-characteristic> --> \ <unsigned-integer> , <unsigned-integer>
    21.  <procedure-declarations> --> <procedure> <procedure-declarations> |
      <empty>
    22.  <procedure> --> PROCEDURE <procedure-identifier><parameters-list> ;
    23.  <parameters-list> --> ( <declarations-list> ) |
      <empty>
    24.  <statements-list> --> <statement> <statements-list> |
      <empty>
    25.  <statement> --> <unsigned-integer> : <statement> |
      <variable> := <expression> ;  |
      <procedure-identifier><actual-arguments> ; |
      <condition-statement> ENDIF ; |
      WHILE <conditional-expression> DO <statements-list> ENDWHILE ; |
      LOOP <statements-list> ENDLOOP ; |
      FOR <variable-identifier> := <loop-declaration> ENDFOR ; |
      CASE <expression> OF <alternatives-list> ENDCASE ; |
      GOTO <unsigned-integer> ; |
      LINK <variable-identifier> , <unsigned-integer> ; |
      IN <unsigned-integer>;  |
      OUT <unsigned-integer>; |
      RETURN ; |
      ;  |
      ($ <assembly-insert-file-identifier> $)
    26.  <condition-statement> --> <incomplete-condition-statement><alternative-part>
    27.  <incomplete-condition-statement> --> IF <conditional-expression> THEN <statements-list>
    28.  <alternative-part> --> ELSE <statements-list>  |
      <empty>
    29.  <loop-declaration> --> <expression> TO <expression> DO <statements-list>
    30.  <actual-arguments> --> ( <expression> <actual-arguments-list> )  |
      <empty>
    31.  <actual-arguments-list> --> ,<expression> <actual-arguments-list> |
      <empty>
    32.  <alternatives-list> --> <alternative> <alternatives-list> |
      <empty>
    33.  <alternative> --> <expression> : / <statements-list> \
    34.  <conditional-expression> --> <logical-summand> <logical>
    35.  <logical> --> OR <logical-summand> <logical>  |
      <empty>
    36.  <logical-summand> --> <logical-multiplier> <logical-multipliers-list>
    37.  <logical-multipliers-list> --> AND <logical-multiplier> <logical-multipliers-list> |
      <empty>
    38.  <logical-multiplier> --> <expression><comparison-operator><expression> |
      [ <conditional-expression> ]  |
      NOT <logical-multiplier>
    39.  <comparison-operator> -->  <   |
      <=  |
      =   |
      <>  |
      >=  |
      >
    40.  <expression> --> <summand> <summands-list>   |
      - <summand> <summands-list>
    41.  <summands-list> --> <add-instruction> <summand> <summands-list> |
      <empty>
    42.  <add-instruction> -->     +   |
      -   |
      !
    43.  <summand> --> <multiplier><multipliers-list>
    44.  <multipliers-list> --> <multiplication-instruction> <multiplier><multipliers-list>  |
      <empty>
    45.  <multiplication-instruction> -->     *   |
      /   |
      &   |
      MOD
    46.  <multiplier> --> <unsigned-constant>  |
      <complex-constant> |
      <constant-identifier>  |
      <variable>  |
      <function-identifier>  |
      <builtin-function-identifier><actual-arguments>  |
      ( <expression> )  |
      ^ <multiplier>
    47.  <variable> --> <variable-identifier><dimension> |
      <complex-variable>
    48.  <complex-variable> --> "<complex-number>"
    49.  <dimension> --> [ <expression> <expressions-list> ]   |
      <empty>
    50.  <expressions-list> -->  ,<expression><expressions-list>  |
      <empty>
    51.  <constant> --> <complex-constant> |
      <unsigned-constant>   |
      - <unsigned-constant>
    52.  <complex-constant> --> '<complex-number>'
    53.  <unsigned-constant> --> <unsigned-number> |
      <unsigned-integer>
    54.  <complex-number> --> <left-part> <right-part>
    55.  <left-part> --> <expression> |
      <empty>
    56.  <right-part> --> ,<expression> |
      $EXP( <expression> )   |
      <empty>
    57.  <constant-identifier> --> <identifier>
    58.  <variable-identifier> --> <identifier>
    59.  <procedure-identifier> --> <identifier>
    60.  <function-identifier>  --> <identifier>
    61.  <builtin-function-identifier> --> <identifier>
    62.  <assembly-insert-file-identifier> --> <identifier>
    63.  <identifier> --> <letter><string>
    64.  <string> --> <letter><string> |
      <digit><string> |
      <empty>
    65.  <unsigned-number> --> <integer-part><fractional-part>
    66.  <integer-part> --> <unsigned-integer> |
      <empty>
    67.  <fractional-part> --> #<sign><unsigned-integer> |
      <empty>
    68.  <unsigned-integer> --> <digit><digits-string>
    69.  <digits-string> --> <digit><digits-string> |
      <empty>
    70.  <sign> --> + |
      - |
      <empty>
    71.  <digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
    72.  <letter> --> A | B | C | D | ... | Z

Варіант 35

  1. <signal-program> --> <program>
    1.  <program> --> PROGRAM <procedure-identifier> ; <block>. |
      PROCEDURE <procedure-identifier><parameters-list> ; <block> ;
    2.  <block> --> <declarations> BEGIN <statements-list> END
    3.  <declarations> --> <label-declarations><constant-declarations><variable-declarations><math-function-declarations><procedure-declarations>
    4.  <label-declarations> --> LABEL <unsigned-integer> <labels-list>; |
      <empty>
    5.  <labels-list> -->  , <unsigned-integer> <labels-list> |
      <empty>
    6.  <constant-declarations> --> CONST <constant-declarations-list> |
      <empty>
    7.  <constant-declarations-list> --> <constant-declaration> <constant-declarations-list> |
      <empty>
    8.  <constant-declaration> --> <constant-identifier> = <constant>;
    9.  <variable-declarations> --> VAR <declarations-list>   |
      <empty>
    10.  <declarations-list> --> <declaration> <declarations-list> |
      <empty>
    11.  <declaration> --><variable-identifier><identifiers-list>:<attribute><attributes-list> ;
    12.  <identifiers-list> --> , <variable-identifier> <identifiers-list> |
      <empty>
    13.  <attributes-list> --> <attribute> <attributes-list> |
      <empty>
    14.  <attribute> --> SIGNAL     |
      COMPLEX    |
      INTEGER    |
      FLOAT      |
      BLOCKFLOAT |
      EXT        |
      [<range><ranges-list>]
    15.  <ranges-list> -->  ,<range> <ranges-list> |
      <empty>
    16.  <range> --> <unsigned-integer> .. <unsigned-integer>
    17.  <math-function-declaration> --> DEFFUNC <function-list> |
      <empty>
    18.  <function-list> --> <function> <function-list> |
      <empty>
    19.  <function> --> <function-identifier> = <expression><function-characteristic> ;
    20.  <function-characteristic> --> \ <unsigned-integer> , <unsigned-integer>
    21.  <procedure-declarations> --> <procedure> <procedure-declarations> |
      <empty>
    22.  <procedure> --> PROCEDURE <procedure-identifier><parameters-list> ;
    23.  <parameters-list> --> ( <declarations-list> ) |
      <empty>
    24.  <statements-list> --> <statement> <statements-list> |
      <empty>
    25.  <statement> --> <unsigned-integer> : <statement> |
      <variable> := <expression> ;  |
      <procedure-identifier><actual-arguments> ; |
      <condition-statement> ENDIF ; |
      WHILE <conditional-expression> DO <statements-list> ENDWHILE ; |
      LOOP <statements-list> ENDLOOP ; |
      FOR <variable-identifier> := <loop-declaration> ENDFOR ; |
      CASE <expression> OF <alternatives-list> ENDCASE ; |
      GOTO <unsigned-integer> ; |
      LINK <variable-identifier> , <unsigned-integer> ; |
      IN <unsigned-integer>;  |
      OUT <unsigned-integer>; |
      RETURN ; |
      ;  |
      ($ <assembly-insert-file-identifier> $)
    26.  <condition-statement> --> <incomplete-condition-statement><alternative-part>
    27.  <incomplete-condition-statement> --> IF <conditional-expression> THEN <statements-list>
    28.  <alternative-part> --> ELSE <statements-list>  |
      <empty>
    29.  <loop-declaration> --> <expression> TO <expression> DO <statements-list>
    30.  <actual-arguments> --> ( <expression> <actual-arguments-list> )  |
      <empty>
    31.  <actual-arguments-list> --> ,<expression> <actual-arguments-list> |
      <empty>
    32.  <alternatives-list> --> <alternative> <alternatives-list> |
      <empty>
    33.  <alternative> --> <expression> : / <statements-list> \
    34.  <conditional-expression> --> <logical-summand> <logical>
    35.  <logical> --> OR <logical-summand> <logical>  |
      <empty>
    36.  <logical-summand> --> <logical-multiplier> <logical-multipliers-list>
    37.  <logical-multipliers-list> --> AND <logical-multiplier> <logical-multipliers-list> |
      <empty>
    38.  <logical-multiplier> --> <expression><comparison-operator><expression> |
      [ <conditional-expression> ]  |
      NOT <logical-multiplier>
    39.  <comparison-operator> -->  <   |
      <=  |
      =   |
      <>  |
      >=  |
      >
    40.  <expression> --> <summand> <summands-list>   |
      - <summand> <summands-list>
    41.  <summands-list> --> <add-instruction> <summand> <summands-list> |
      <empty>
    42.  <add-instruction> -->     +   |
      -   |
      !
    43.  <summand> --> <multiplier><multipliers-list>
    44.  <multipliers-list> --> <multiplication-instruction> <multiplier><multipliers-list>  |
      <empty>
    45.  <multiplication-instruction> -->     *   |
      /   |
      &   |
      MOD
    46.  <multiplier> --> <unsigned-constant>  |
      <complex-constant> |
      <constant-identifier>  |
      <variable>  |
      <function-identifier>  |
      <builtin-function-identifier><actual-arguments>  |
      ( <expression> )  |
      ^ <multiplier>
    47.  <variable> --> <variable-identifier><dimension> |
      <complex-variable>
    48.  <complex-variable> --> "<complex-number>"
    49.  <dimension> --> [ <expression> <expressions-list> ]   |
      <empty>
    50.  <expressions-list> -->  ,<expression><expressions-list>  |
      <empty>
    51.  <constant> --> <complex-constant> |
      <unsigned-constant>   |

      - <unsigned-constant>
    52.  <complex-constant> --> '<complex-number>'
    53.  <unsigned-constant> --> <unsigned-number> |
      <unsigned-integer>
    54.  <complex-number> --> <left-part> <right-part>
    55.  <left-part> --> <expression> |
      <empty>
    56.  <right-part> --> ,<expression> |
      $EXP( <expression> )   |
      <empty>
    57.  <constant-identifier> --> <identifier>
    58.  <variable-identifier> --> <identifier>
    59.  <procedure-identifier> --> <identifier>
    60.  <function-identifier>  --> <identifier>
    61.  <builtin-function-identifier> --> <identifier>
    62.  <assembly-insert-file-identifier> --> <identifier>
    63.  <identifier> --> <letter><string>
    64.  <string> --> <letter><string> |
      <digit><string> |
      <empty>
    65.  <unsigned-number> --> <integer-part><fractional-part>
    66.  <integer-part> --> <unsigned-integer> |
      <empty>
    67.  <fractional-part> --> #<sign><unsigned-integer> |
      <empty>
    68.  <unsigned-integer> --> <digit><digits-string>
    69.  <digits-string> --> <digit><digits-string> |
      <empty>
    70.  <sign> --> + |
      - |
      <empty>
    71.  <digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
    72.  <letter> --> A | B | C | D | ... | Z


S

lit

dig

(

dm

ERR

INP

EXIT

s

other

eof

identifier

number

delimiter

white-space

comment

NUM

OUT

lit

lit,dig

other

NUM

OUT

dig

dig

other

OUT

dm

INP

WS

ws

other

ws

BCOM

COM

(

other

*

ECOM

ERRL

*

eof

)

eof

other

other

INP

S

IDN

OUT

lit

lit,dig

other

NUM

OUT

dig

dig

other

EXIT

WS

ws

other

ws

OUT

INP

dm

ERR

other

INP

eof

BCOM

COM

(

other

*

ECOM

ERRL

*

eof

)

eof

other

other

INP

dm


 

А также другие работы, которые могут Вас заинтересовать

28637. Базисные конструкции языка 89.5 KB
  Структура программы. Для этого в структуре программы предусмотрен раздел описаний. Необходимо научиться читать программы понимая смысл написанного а затем и писать собственные пусть вначале и несложные программы. научиться читать программы .
28638. Простые операторы и программы с линейной структурой 61.5 KB
  Простые операторы ввода и вывода. Простые операторы ввода и вывода. Эти операторы Турбо Паскаля обеспечивают простейшие формы ввода с клавиатуры и вывода на экран дисплея в текстовом режиме. К простым операторам ввода и вывода относятся операторы read readln write writeln реализующие так называемый потоковый вводвывод при котором ввод и вывод рассматриваются как непрерывный поток символов и строк протекающий через экран дисплея.
28639. Процедуры и функции в Турбо Паскале 90 KB
  Концепция подпрограммы в Турбо Паскале. Концепция подпрограммы в Турбо Паскале. Понятие подпрограммы одно из фундаментальных понятий в программировании возникшее фактически вместе с понятием программы. Одна подпрограмма может включать в себя другие подпрограммы и т.
28640. Модули и их использование 83.5 KB
  Рассмотренный ранее механизм подпрограмм (процедур и функций) действует только внутри одной программы. Поэтому такие процедуры и функции называются внутренними подпрограммами. Ограниченность применения внутренних подпрограмм очевидна
28641. Основные задачи обработки файлов 100 KB
  К числу таких задач мы отнесли:  создание файла т. ввод данных в новый или в существующий файл;  анализ файла т. просмотр чтение всего содержимого файла и вычисление некоторых интегральных характеристик или показателей этого содержимого;  сортировка файла предполагающая упорядочение записей файла по заданному логическому критерию зависящему от содержания записей;  коррекция файла т. изменение содержимого файла либо путем обновления записей либо коррекции по некоторым глобальным критериям например удаление лишних записей;  поиск...
28642. Использование указателей для представления динамически структур данных 59 KB
  Оригинальные функции для ASCIIZ-строк включают функции сравнения строк (с учётом или без учёта регистра символа), инициализации строки, стирания строки, определения вхождения символа в строку (первого или последнего вхождения), специальные функции копирования и некоторые другие. Работа с этими функциями требует некоторых знаний механизма указателей.
28643. Развитие феодальной раздробленности и ослабление Золотой Орды 13.79 KB
  Развитие феодальных отношений в Древнерусском госве укрепление вотчинной земельной собствти сосредоточение в руках верхушки феодалов все большего объема полит. к окончательному распаду раннефеодального Древнерусского госува на отдельные земли самостоятельные княжества. Постепенно из состава госва выделилось и образовалось 12 княжеств в дальнейшем дробление продолжалось к нач.часть – ПольскоЛитовскому госву вост.
28644. Развитие права и первый общерусский сборник 1497 г 13.52 KB
  Первым кодифицированным актом является Судебник Ивана III 1497 г. Судебник составлен дьяком Владимиром Гусевым одобрен царем и Боярской думой. В отличие от РП котя содержала обычные нормы и судебные прецеденты и была своеобразным справочником для поиска правды Судебник уделяет основное внимание организации судебного процесса – суда. Судебник регулирует земельные отношения котые характся полным исчезновением самостоятой собствти общины на землю и оформлением вотчинного и поместного землевладения.
28645. Причины усиления закрепощения в 15-16 вв. Введение Юрьева дня. Заповедные и урочные лета. Полное закрепощение холопов в 15-16 вв. 12.88 KB
  Период сословнопредставительской монархии который в свою очередь является периодом развитого феодализма характеризуется одним из наиболее важных событий в этой сфере – полным закрепощением крестьян. Этому способствовало укрепление государственного аппарата создание специальных органов Разбойный приказ губные избы по борьбе с беглыми крестьянами лихими людьми. В Юрьев День крестьяне свободно могли оставить землю на которой они проживали ранее и перейти к другому землевладельцу уплатив прежнему хозяину долги и пошлину за пользование...