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


 

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

37477. Изучить среду Microsoft Visual Studio 6.0. Изучить структуру программы на языке C++ 1.17 MB
  В язык С были добавлены новые возможности: виртуальные функции перегрузка функций и операторов ссылки константы пользовательский контроль над управлением свободной памятью улучшенная проверка типов и новый стиль комментариев . Его новые возможности включали множественное наследование абстрактные классы статические функциичлены функцииконстанты и защищённые члены. Строка под главным меню содержит панель инструментов полезным свойством которой является выпадающий список функций программы с помощью которого можно быстро...
37478. Метод мурашиних колоній 235.5 KB
  Технічне завдання Розробити програму що здійснює пошук оптимального шляху між двома клітинками ігрового поля яке являє собою двовимірну матрицю клітинок заданого розміру. Пошук шляху повинен здійснюватись за допомогою алгоритму мурашиної колонії параметри алгоритму повинні налаштовуватись користувачем вручну. Пізніше список використовується для визначення довжини шляху між вузлами. Справжня мураха під час переміщення по шляху залишає за собою деяку кількість феромону.
37479. МЕТОДОЛОГИЯ МОДЕЛИРОВАНИЯ ДАННЫХ В СРЕДЕ ERWIN 993 KB
  2] Зависимые и независимые сущности.9] Избыточные сущности [9. На стадии проектирования создаются логические модели трех уровней: Entity Reltion Digrm Диаграмма сущностьсвязь и KeyBsed model Модель данных основанная на ключах и Полная атрибутивная модель Диаграмма сущностьсвязь ERD – Entity Reltionship Digrm определяет сущности и их отношения. Модель данных основанная на ключах описывает структуру данных системы в которую включены все сущности и атрибуты в том числе ключевые.
37480. Вступ до філософії. Історико-філософський та релігієзнавчий аспекти 1008.5 KB
  Розкриває зміст світоглядної проблематики та специфіку філософського і релігійного підходів до неї становлення та основні етапи розвитку філософії у зв’язку з розвитком релігії в країнах європейської культури особливості східних і західних релігійних і філософських традицій основні позиції та філософські аргументи щодо питань про сутність релігії існування Бога відношення моральності і релігії проблеми особистого безсмертя. Християнська релігія та філософське осмислення ідеї Бога Абсолюта від Середньовіччя до початку ХІХ ст. Проблема...
37481. ФІЛОСОФІЯ, її ПОХОДЖЕННЯ, ПРОБЛЕМАТИКА ТА ФУНКЦІЇ 791.5 KB
  Перш за все філософія аналізує людське знання про реально існуючі речі та цікавиться тим ступенем достовірності який може бути тут досягнутий. Дитрих фон Гільдебранд Філософія відрізняється від науки не в тому значенні що апелює до відірваних від життя тверджень а в тому що максимально вірно виражає її зміст. Карл Ясперс Філософія як особлива сфера людського знання і пізнання виникла на основі світоглядних пошуків та орієнтацій людини що постають як необхідність з погляду людського життєвого вибору та самоствердження.
37482. Философия. Учебное пособие 3.03 MB
  Учебнике рассматриваются предмет и метод философской науки, философия как мировоззренческая система, прослеживается эволюция ее основных течений. Важное место отводится человеку в системе философского знания. Особое внимание уделяется проблемам общества и культуры как объектам философского анализа, а также основополагающим ценностям жизни людей.
37483. Философия: Энциклопедический словарь 3.92 MB
  В Словаре включающем более 1500 статей рассматриваются понятия и проблемы современной философии ее главные направления и основные разделы. Большое число статей посвящено истории философии и философам оказавшим существенное влияние на развитие философии и всей общественной мысли. Особое место занимают материалы об отечественной философии и ее наиболее видных представителях. Введены также статьи показывающие взаимосвязь философии с такими науками как социология политология история лингвистика экономическая наука.
37484. Философы XX века 1.64 MB
  В разряд таких фактов прерывающих сплошную причинноследственную зависи мость попадают прежде всего явления самопроизволь ности о которых Бергсон и говорит как о специфичес ком признаке живого в целом и человека в особеннос ти. есть изобретение или оно ничто ^ Определяя время как ткань реальности Бергсон имеет в виду прежде всего внутренний субъективный опыт человека. У Бергсо на речь идет еще о бытийной основе и мира в целом и человека. Но в отличие от научной гипотезы яв ляющейся по мысли Бергсона определенной мыслитель...