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


 

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

43878. Разработка программы обучения персонала продажам банковских услуг ООО «Хоум Кредит энд Финанс Банк» 984.5 KB
  Подходы к созданию программ обучения персонала Корпоративные стандарты Кейс Организация обучения персонала в ООО Хоум Кредит энд Финанс...
43879. Процесс влияния состояния основных средств на деятельность таможенных органов 547 KB
  Еще одно принципиальное нововведение - глубокий аналитический учет, обязательный и единообразный для всех субъектов бюджетного учета. Это достигается путем интеграции кодов бюджетной классификации в номер бухгалтерского счета. Кроме того, вводится еще один вид бюджетной классификации - классификация операций сектора государственного управления.
43880. Программный комплекс расчета комплексной нетранзитивности отношения превосходства на группе объектов 7.88 MB
  Требования к помещениям для работы с ПЭВМ Требования к уровням электромагнитного и электростатического полей в помещениях с ВДТ и ПЭВМ Требования к режиму работы пользователя ПЭВМ Вредные факторы возникающие при работе на ПЭВМ Вид работы Вредные факторы Действие на организм Средства Защиты Пользователь ПЭВМ Отклонение параметров микроклимата от нормы Охлаждение или перегрев Системы отопления или кондиционирования Неправильное освещение
43881. Организация управленческого учета на примере ООО «Фабрика мебели «Роникон» 840 KB
  Теоретические основы управленческого учета Сущность субъект и объект цели и задачи методы и принципы управленческого учета Пути совершенствования системы управленческого учета на ООО Фабрика мебели Роникон
43882. Визначення та наукове обгрунтування психолого-педагогічних умов подолання особистісної тривожності у дітей молодшого шкільного віку та пятикласників 959.5 KB
  Підходи науковців до реалізації наступності зорієнтовані передусім на інтеграцію двох ланок освіти, усунення суперечок між запитами школи і амбіційним завищеними вимогами окремих батьків щодо підготовки їхніх дітей; між непідготовленістю окремих учнів, які не відвідували дошкільних установ, і необхідністю враховувати специфіку дошкільної освіти.
43883. Экономика и управление на предприятии АПК». Методические указания 605 KB
  В методических указаниях рассматриваются вопросы подготовки написания процедуры защиты дипломных работ раскрыты требования по оформлению работы. ПОДГОТОВКА КВАЛИФИКАЦИОННОЙ РАБОТЫ Выбор темы дипломной работы Назначение руководителя дипломной работы и выдача дипломного задания.
43884. Створення когнітивно-семантичного підґрунтя вибору варіантів перекладу одиниць на позначення концепту “Кількість” 249 KB
  Кількість як узагальнений когнітивний зміст – великий фрагмент кодованої засобами мови картини світу того чи іншого етносу. На першому етапі необхідно чітко визначити поняття “картина світу†“мовна картина світу†“концепт†для чого слід виконати критичний аналіз наукової літератури. Новизна одержаних результатів визначається тим що в ньому виявлено спільні і відмінні ознаки репрезентації концепту â€œКількість†в англійській та українській мовних картинах світу встановлені абсолютні і варіантні еквіваленти перекладу в...
43885. Проектування поліграфічного підприємства 3.18 MB
  Вибір напруги живлячої мережі. Вибір напруги розподільчої мережі. Характеристика джерела живлення Підприємство можна заживити від районних підстанцій що мають три рівні напруги.
43886. Изучение и систематизация теоретических аспектов организации финансов на ООО "Компания ОГАТ" 599 KB
  Финансы предприятий будучи частью общей системы финансовых отношений отражают процесс образования распределения и использования доходов на предприятиях различных отраслей народного хозяйства и тесно связаны с предпринимательством поскольку предприятие является формой предпринимательской деятельности. Целью данной дипломной работы является систематизация теоретических аспектов организации финансов на предприятиях различных форм собственности изучение аналитических сведений практической деятельности финансового состояния конкретного...