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


 

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

27809. Усыновление 44.08 KB
  Рассмотрение дел об установления усыновления ребенка производится судом в порядке особого производства по правилам предусмотренным гражданским процессуальным законодательством. Права и обязанности усыновители и усыновленного ребенка статья 137 настоящего Кодекса возникают со дня вступления в законную силу решения суда об установлении усыновления ребенка. Суд обязан в течение трех дней со дня вступления в законную силу решения суда об установлении усыновления ребенка направить выписку из этого решения суда в орган записи актов...
27810. СОЦИАЛЬНЫЙ ПЕДАГОГ СЕМЕЙНОГО ТИПА 22.49 KB
  В задачи семейного социального педагога входит постановка диагноза: каковы условия жизни семьи возможности для воспитания какую помощь необходимо оказать. В работе с детьми внимание педагога направлено на повышение уровня их развития с тем чтобы выровнять возможности для социального старта восполнить ущерб нанесенный формированию личности семейными обстоятельствами. Формы работы семейного социального педагога разнообразны: непосредственное участие в воспитании детей уходе за ними больными членами семьи. Разнообразно...
27811. Основными направлениями деятельности социального педагога 19.57 KB
  Основными направлениями деятельности социального педагога работающего в школеинтернате являются: определение правового статуса ребенка поступившего в учреждение получение сведений о ребенке дата рождения место нахождение родителей и родственников состояния жилищнобытовых условиях проживания ребенка состояние здоровья оформление детей в школуинтернат обеспечение конституционных прав и законных интересов.В государственные детские учреждения образования детские дома дома ребенка школыинтернаты всех типов могут...
27812. ПРОГРАММА РАБОТЫ С ДЕТЬМИ « ГРУППЫ РИСКА» 26.41 KB
  Известно что каждый человек стремиться реализовать свой потенциал постоянно совершенствоваться найти свое место в жизни. В настоящее время наблюдаются положительные тенденции в экономической жизни региона в оздоровлении общества. Еще недавняя нестабильность экономики бытовые неурядицы недостаточный уровень семейного воспитания а порой и полное его отсутствие нездоровый образ жизни в социуме привели к таким явлениям как обнищание отдельных семей асоциальное поведение детей и взрослых безработица низкий уровень этического...
27813. Особенности оказания помощи с помощью телефона доверия 23.5 KB
  К заочным формам помощи относится общение с ребенком и окружающими его людьми посредством переписки или телефонного разговора. К учреждениям использующим заочные формы оказания помощи относятся информационные службы и телефоны доверия в том числе специализированные информационноконсультативные службы для детейинвалидов наркоманов алкоголиков и др. Деятельность телефона доверия заключается в оказании детям и их родителям лицам их заменяющим экстренной консультативнопсихологической помощи по телефону в том числе в случаях жестокого...
27814. Процессы дифференциации и интеграции в географии 44 KB
  и интеграции объединения отдельных разделов отраслей подотраслей учений и теорий науки в одно целое образование их единства. Науковеды выделяют в числе внутренних законов развития науки закон дифференциации каждая новая ступень развития наук зависит от более совершенных методов исследования и ведет к расщеплению фундаментальных наук на разделы изучающие свой круг объектов и закон интеграции каждое новое открытие сопровождается новыми знаниями и требует широкого аспекта смежных исследований. Процесс дифференциации науки...
27815. Телекоммуникации и ГИС 55 KB
  Образ всемирной паутины оказался довольно удачным карты словно вплетены в сеть линий связи опутывающих земной шар. Более сложные тематические карты требуют обращения в Веб для целенаправленного поиска источников подбора слоев их последующего совмещения и комбинирования управления разными базами данных выполнения процедур генерализации и классификации выбора способов изображения и т. Карты и атласы в компьютерных сетях Все карты атласы аэро и космические снимки обращающиеся в Интернете подразделяются на четыре большие группы: ...
27816. Картографическая семиотика. Условные знаки, их виды и функции 46.5 KB
  На стыке картографии и семиотики лингвистической науки исследующей свойства знаков и знаковых систем сформировался особый раздел картографическая семиотика картосемиотика в рамках которой разрабатывается общая теория систем картографических знаков как языка карты. Семиотика включает три основных раздела: синтактику семантику и прагматику соответственно эти разделы существуют и в картографической семиотике: картографическая синтактика изучает правила построения и употребления знаковых систем их структурные свойства грамматику...
27817. Научно-технические приемы анализа картографического изображения 48 KB
  Широкое использование картографического метода исследования в разных отраслях знания привело к возникновению множества приемов анализа карт в разработке которых активное участие принимали картографы географы геологи геофизики математики экономисты. Издавна широко использовались картометрия и морфометрия позднее активное развитие получили приемы математического анализа и математической статистики теории вероятности. В наши дни все методы математики так или иначе испытываются для анализа картографического изображения.