Основы трансляции. Рыбанов А.А. - 23 стр.

UptoLike

Составители: 

23
Режим
работы
Описание
2
1) Восстанавливаются таблицы лексем, идентификаторов и констант, сохра-
нённые в скрытых полях формы.
2) Производится загрузка данных, которые были считаны при предыдущих ин-
терпретациях команды «READ».
3) Выполняется стадия синтаксического анализа, совмещенная с интерпретацией.
Восстановление таблицы лексем, таблицы идентификаторов и таблицы
констант необходимо в связи с тем, что переменные, объявленные в php
скрипте на стадии лексического анализа, обнуляются при его перезагрузке. Для
решения этой проблемы используются встроенные в форму скрытые поля.
Также во всех режимах клиенту отправляется html код, содержащий скрытое
поле «source». В нём хранится исходный текст программы на языке МИЛАН,
необходимый для передачи его в окно редактирования кода.
Скрипт, обрабатывающий текущий режим работы интерпретатора,
расположен в файле milan.php.
Исходный код скрипта на языке PHP:
//Получаем переданный исходный код от пользователя
$ct_buf = $_POST["source"];
$ct_pos = 0;
$ct_readCount = 0; //Позиция текущего символа
$ct_readBUF = Array();
//определение режима работы интерпретатора
switch($_POST["mode"]):
case '1': //Режим работы 1 - синтаксический анализатор и интерпретация
$ct_milanMode = 1;
break;
case '2': //получим данные из скрытого поля с именем "readbuf"
$tmp= $_POST["readbuf"];
if($tmp!='') //если строка не пустая
{ //разбиваем строку на элементы разделённые символом '%'
//и заносим в массив
$ct_readBUF = split('%',$tmp);
}
//добавим новое прочитанное из поля "stdin" число в массив
$ct_readBUF[]=$_POST["stdin"];
//Режим работы 2 - синтаксический анализатор и
// интерпретация с восстановлением данных, введённых пользователем
$ct_milanMode = 2;
break;
default: //Режим работы 0 – только лексический анализатор
$ct_milanMode = 0;
endswitch;
Скрипт проверки корректности ввода целого числа. Данный скрипт
расположен в файле interpretator.php и добавляется в html код страницы, при
генерации запроса на ввод целого числа от пользователя.
Исходный код на языке javascript:
 Режим
                                             Описание
 работы
             1) Восстанавливаются таблицы лексем, идентификаторов и констант, сохра-
          нённые в скрытых полях формы.
    2        2) Производится загрузка данных, которые были считаны при предыдущих ин-
          терпретациях команды «READ».
             3) Выполняется стадия синтаксического анализа, совмещенная с интерпретацией.
   Восстановление таблицы лексем, таблицы идентификаторов и таблицы
констант необходимо в связи с тем, что переменные, объявленные в php
скрипте на стадии лексического анализа, обнуляются при его перезагрузке. Для
решения этой проблемы используются встроенные в форму скрытые поля.
   Также во всех режимах клиенту отправляется html код, содержащий скрытое
поле «source». В нём хранится исходный текст программы на языке МИЛАН,
необходимый для передачи его в окно редактирования кода.
   Скрипт, обрабатывающий текущий режим работы интерпретатора,
расположен в файле milan.php.
   Исходный код скрипта на языке PHP:
    //Получаем переданный исходный код от пользователя
   $ct_buf = $_POST["source"];
   $ct_pos = 0;
   $ct_readCount = 0; //Позиция текущего символа
   $ct_readBUF = Array();
   //определение режима работы интерпретатора
   switch($_POST["mode"]):
     case '1': //Режим работы 1 - синтаксический анализатор и интерпретация
               $ct_milanMode = 1;
               break;
     case '2': //получим данные из скрытого поля с именем "readbuf"
                $tmp= $_POST["readbuf"];
                if($tmp!='') //если строка не пустая
                { //разбиваем строку на элементы разделённые символом '%'
                   //и заносим в массив
                   $ct_readBUF = split('%',$tmp);
                 }
                 //добавим новое прочитанное из поля "stdin" число в массив
                 $ct_readBUF[]=$_POST["stdin"];
                //Режим работы 2 - синтаксический анализатор и
                // интерпретация с восстановлением данных, введённых пользователем
                $ct_milanMode = 2;
                break;
     default: //Режим работы 0 – только лексический анализатор
               $ct_milanMode = 0;
   endswitch;
   Скрипт проверки корректности ввода целого числа. Данный скрипт
расположен в файле interpretator.php и добавляется в html код страницы, при
генерации запроса на ввод целого числа от пользователя.
   Исходный код на языке javascript:
                                           23