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


 

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

72535. ВОЗМОЖНОСТИ ПОВЫШЕНИЯ ЭФФЕКТИВНОСТИ ЛОГИСТИЧЕСКИХ СИСТЕМ 1.52 MB
  Но замедление скорости движения материальных товарных и финансовых потоков в логистической системе предприятия неминуемо приводит к уменьшению объема выпуска и реализации продукции снижению ее рентабельности при наличии авансированных ресурсов в неизменных размерах.
72536. Ценообразование в условиях монополии и олигополии 154.5 KB
  Поэтому кривая спроса на его продукцию относительно стабильна а цены на товары ограничены лишь покупательской оценкой их полезности относительно дохода и общим состоянием рыночной конъюнктуры. Например если фирма монополизирующая рынок упаковочных материалов установит на них неприемлемо...
72537. ФИНАНСОВЫЕ РИСКИ В ЛОГИСТИЧЕСКИХ СИСТЕМАХ И СПОСОБЫ ИХ СНИЖЕНИЯ 363 KB
  На риски продавца связанные с оплатой по контракту и на риски покупателя связанные с доставкой товара существенно влияют установленные в контракте условия платежа. При этом регламентируются расходы по кредиту и платежам а также устанавливаются форма и путь оплаты.
72540. ИСТОРИЯ РАЗВИТИЯ, ПОНЯТИЕ И СОДЕРЖАНИЕ ПРЕСТУПНОГО ФЕНОМЕНА «ВОРЫ» В МЕСТАХ ЛИШЕНИЯ СВОБОДЫ РОССИИ 250.5 KB
  Потребность в изучении истории возникновения и развития преступного феномена «воры» обусловлена необходимостью познания сущностных корней этого социального явления, определения первопричин его бытия. Установление факторов, лежащих в основе этого явления, дает нам возможность его объективной оценки...
72541. КОНСТИТУЦИОННО-ПРАВОВОЙ СТАТУС МЕЖГОСУДАРСТВЕННОГО СОЮЗА РОССИИ И БЕЛОРУССИИ 295.5 KB
  Отражением высокой степени российско-белорусской интеграции является Договор между Российской Федерацией и Республикой Беларусь от 8 декабря 1999 года О создании союзного государства согласно которому государства-участники создают Союзное государство знаменующее собой новый этап в процессе...
72542. СССР КАК ФОРМА МЕЖГОСУДАРСТВЕННОГО ОБЪЕДИНЕНИЯ СУВЕРЕННЫХ ГОСУДАРСТВ 237.5 KB
  Союз ССР был образован четырьмя советскими республиками РСФСР УССР БССР ЗСФСР возникшими в разное время и поразному и ставшими первыми его членами. Якубовская поддерживает идею существования договорной федерации до образования СССР которая в дальнейшем была преобразована в юридически...
72543. МОРАЛЬНЫЙ ВРЕД В РОССИЙСКОМ ЗАКОНОДАТЕЛЬСТВЕ И ЕГО РЕГУЛИРОВАНИЕ КОНСТИТУЦИЕЙ РОССИИ 143.5 KB
  Институт компенсации морального вреда один из основных способов защиты неимущественных прав человека. Сама идея возмещения морального вреда прослеживается уже в римском праве. Категория морального вреда в российском законодательстве появилась сравнительно недавно.