Методические указания к лабораторным работам по курсу "Теория вычислительных процессов и структур". Домашова Д.В - 24 стр.

UptoLike

форму списка; при отсутствии необязательных элементов - метки и
перехода - в соответствующих позициях помещается символ *;
списком (операторов) является и программа, причем ограничители
";" удаляется:
<программа>::=(<оператор>…)
<оператор>::=({<метка>| *}<правило>{<переход>|
<переход>::=(S<метка>)| (F<метка>)|(<метка>)*})
Таким же образом преобразуются в списки и другие
конструкции языка:
<левая часть>::=<<имя>[<образец>])
<правая часть>::=({<строки>|<имя>}…)
<переменная с длиной>::=(*<имя><число>)
<произвольная переменная>::=(*<имя>)
Строки с помощью подходящих функций переводятся в
списки однолитерных атомов; при этом кавычки (первые и
последние элементы полученных списков) удаляются.
После указанных преобразований левая и правая части
оператора приобретают вид списков, состоящих на первом уровне
из атомов ("имен"строк) и списков ("строк" и "переменных").
На втором этапе работы интерпретатора связь строки
именем осуществляется с помощью ассоциативного списка,
элементами которого являются пары (<имя>.<строка>) и
полученного с помощью функции CONS. (Имена пустых строк
заносить в ассоциативный список не следует, так что строки с
именем Х считается пустой, если в ассоциативном списке нет пары
(Х,<строка>).
6.2 Структура интерпретатора
Основная программа выполняет действия: вводит программу
на SOL; обращается к блоку анализа и печатает сообщение о
результатах его работы при (отладке интерпретатора должна также
распечатать внутреннее представления исходной SOL-
программы) ;.при отсутствии ошибок в программе обращается к
блоку интерпретации; отпечатывает сообщение об окончании
интерпретации программы.
В блоке анализа (осуществляющем анализ исходной
программы и ее трансляцию во внутреннее представление) должны
выявляться все имеющиеся в исходной программе ошибки.
Пример
Во внутреннем представлении программа, рассмотренная
ранее, имеет вид:
27
форму списка; при отсутствии необязательных элементов - метки и
перехода - в соответствующих позициях помещается символ *;
списком (операторов) является и программа, причем ограничители
";" удаляется:
       <программа>::=(<оператор>…)
       <оператор>::=({<метка>| *}<правило>{<переход>|
       <переход>::=(S<метка>)| (F<метка>)|(<метка>)*})
       Таким же образом преобразуются в списки и другие
конструкции языка:
       <левая часть>::=<<имя>[<образец>])
       <правая часть>::=({<строки>|<имя>}…)
       <переменная с длиной>::=(*<имя><число>)
       <произвольная переменная>::=(*<имя>)
       Строки с помощью подходящих функций переводятся в
списки однолитерных атомов;        при этом кавычки (первые и
последние элементы полученных списков) удаляются.
       После указанных преобразований левая и правая части
оператора приобретают вид списков, состоящих на первом уровне
из атомов ("имен"строк) и списков ("строк" и "переменных").
      На втором этапе работы интерпретатора связь строки
именем осуществляется с помощью ассоциативного списка,
элементами которого являются пары (<имя>.<строка>) и
полученного с помощью функции CONS. (Имена пустых строк
заносить в ассоциативный список не следует, так что строки с
именем Х считается пустой, если в ассоциативном списке нет пары
(Х,<строка>).

6.2 Структура интерпретатора

      Основная программа выполняет действия: вводит программу
на SOL; обращается к блоку анализа и печатает сообщение о
результатах его работы при (отладке интерпретатора должна также
распечатать внутреннее       представления   исходной      SOL-
программы) ;.при отсутствии ошибок в программе обращается к
блоку интерпретации; отпечатывает сообщение об окончании
интерпретации программы.
      В блоке анализа (осуществляющем анализ исходной
программы и ее трансляцию во внутреннее представление) должны
выявляться все имеющиеся в исходной программе ошибки.
      Пример
      Во внутреннем представлении программа, рассмотренная
ранее, имеет вид:


                                                             27