Changeset 242


Ignore:
Timestamp:
Nov 14, 2002, 10:09:06 PM (18 years ago)
Author:
orlov
Message:

* empty log message *

File:
1 edited

Legend:

Unmodified
Added
Removed
  • to-imperative/trunk/docs/rfp-asail.html

    r240 r242  
    4545Функция <b>Name-To-CPP </b>преобразует терм <b>t.Name </b>в имя для использования в C-программе <b>s.legal-cpp-name</b> и полученный результат помещает в таблицу имен <b>&amp;Func-Таble</b> и
    4646в ящик <b>&amp;Func-Names</b>.
     47<div style="color: red;">Это не совсем верно. Как должно быть написано в
     48комментарии:
     49<pre>
     50 * Gets function name or variable and returns legal C++ name corresponding to
     51 * it. If is called with such parameter at the first time then stores C++ name
     52 * in the appropriate table for further using. Also put new name in the
     53 * appropriate box. Box and table for variables is updated for each new
     54 * function and box and table for functions is updated for each new module.
     55</pre></div>
    4756</p></div></li>
    4857
     
    5564Функция <b>Build-CPP-Name </b> создает уникальное имя <b>e.cpp-chars</b> по списку слов из Рефал-программы
    5665<b>e.words</b> .
     66<div style="color: red;">Нет, построенное имя не обязано быть уникальным. Эта
     67функция просто переводит <b>e.QualifiedName</b> в имя на С++, расставляя
     68&lsquo;_&rsquo; между словами и убирая символы, не являющиеся легальными в
     69С++.</div>
    5770</p></div></li>
    5871
     
    6477<p><div align="left"> <p>
    6578Функция <b>Find-Unused-Name</b> является вспомогательной для функции <b>Build-CPP-Name</b> .
     79<div style="color: red;">Нет, она не является вспомогательной. Она вызывается
     80после, для того, чтобы сделать построенное имя уникальным, путём приписывания к
     81его концу некоторого кол-ва &lsquo;_&rsquo;.</div>
    6682</p></div></li>
    6783
     
    7288
    7389<p><div align="left"> <p>
    74 Функция <b>Word-To-CPP-Chars</b> создает из исходного Рефал-слова <b>s.word </b>
    75 строку <b>e.cpp-chars</b> на C++ .
     90Функция <b>Word-To-CPP-Chars</b> создает из исходного Рефал-слова <b>s.word</b>
     91строку <b>e.cpp-chars</b> на C++.
    7692</p></div></li>
    7793
     
    8399<p><div align="left"> <p>
    84100Функция <b>Chars-To-CPP-Chars</b> из списка символов на Рефале+ <b>e.chars</b>
    85 создает список символов на C++ <b>e.cpp-chars</b> .
     101создает список символов на C++ <b>e.cpp-chars</b>.
    86102</p></div></li>
    87103
     
    93109<p><div align="left"> <p>
    94110Функция <b>Expr-Ref-To-CPP</b> преобразует выражение-ссылку <b>e.ASAIL-Expr-Ref</b>
    95 в соответствующее ему выражение на C++ <b>e.CPP-Expr-Ref</b> .
     111в соответствующее ему выражение на C++ <b>e.CPP-Expr-Ref</b>.
     112<div style="color: red;">??? Вовсе нет! Ты смотрела Светино описание синтаксиса?
     113Не выражение-ссылку, а обыкновенное Рефал-выражение.</div>
    96114</p></div></li>
    97115
     
    126144аргументов <b>e.args</b>, элементы которого преобразуются в аргументы на C++
    127145с помощью функции <b>s.func-for-converting-args-to-cpp</b>.
     146<div style="color: red;">Я думаю, лучше сказать &ldquo;расставляет знак операции
     147между аргументами <b>e.args</b>&rdquo;.</div>
    128148</p></div></li>
    129149
     
    135155<p><div align="left"> <p>
    136156Функция <b>Op-Arg-To-CPP</b> вызывает функцию для обработки знака операции -
    137 логической или арифметической</b> .
     157логической или арифметической</b>.
     158<div style="color: red;">Нет. Она возвращает функцию для обработки аргументов
     159операции, в зависимости от типа операции&nbsp;&#151; логического или
     160арифметического.</div>
    138161</p></div></li>
    139162
     
    147170<p><div align="left"> <p>
    148171Функция <b>Expr-To-CPP </b>по полученному на входе выражению на абстрактном императивном языке  <b>e.ASAIL-Expr</b> строит выражение на языке C++ <b>e.CPP-Expr</b>.
     172<div style="color: red;">Здесь правильно сказать, что она делает это путём
     173определения типа выражения&nbsp;&#151; Expr или Int, и вызова соответствующей
     174функции (<b>Expr-Ref-To-CPP</b> или <b>Expr-Int-To-CPP</b>).</div>
    149175</p></div></li>
    150176
     
    169195<p><div align="left"> <p>
    170196Функция <b>Args-To-CPP </b>по полученному списку аргументов на АИЯ <b>(e.Arg-Res-Tag)</b> <b>e.ASAIL-Args</b> строит список аргументов на языке C++ <b>e.CPP-Args</b>.
     197<div style="color: red;">У тебя 2 e-выражения на одном уровне в формате функции.
     198Такого не может быть. Но у неё и в rfp_asail.rf формат был указан неправильно. Я
     199исправил. Надо написать, что функция ведёт себя по-разному (и как) в зависимости
     200от значения Tag'а.</div>
    171201</p></div></li>
    172202
     
    225255<p><div align="left"> <p>
    226256Функция <b>RFP-ASAIL-To-CPP </b>получает на входе выражение на АИЯ <b>e.asail</b> и вызывает далее функцию <b>ASAIL-TO-CPP</b>, которая преобразует его в соответствующее выражение на C++ <b>e.cpp</b>.
     257<div style="color: red;">И зачем же тогда нужна эта функция?</div>
    227258</p></div></li>
    228259
     
    317348<b>RF_RES</b>
    318349список имен результатов через пробел.</div>
    319 
     350<div style="color: red;">Даже зная, что должно быть, я не могу понять, что здесь
     351написано. Что такое тогда Vars, e.args', e.ress'? И скобки, как всегда, не
     352сбалансированы.</div>
    320353</p></div></td>
    321354
     
    678711создание объекта класса <b>Expr</b>,
    679712где <b>t.var' </b>получается в результате преобразования <b>t.var </b>с помощью функции <b>Name-To-CPP</b>, <b>e.expr'</b> - результат преобразования <b>e.expr</b> функцией <b>Expr-Ref-To-CPP</b>, <b>e.pos' </b>полученo путем преобразования  <b>e.pos </b>с помощью функции <b>Expr-Int-To-CPP</b>
     713<div style="color: red;">А что такое <b>t.var</b>? Дело в том, что есть по два
     714варианта DEREF и SUBEXPR. Для заведения новой переменной, и для использования
     715внутри выражения, когда переменная не заводится и, соответственно, <b>t.var</b>
     716нету. А у тебя описано только по одному варианту каждой конструкции.</div>
    680717</p></div></td>
    681718
     
    853890<p><div align="left"> <p>
    854891здесь значением <b>s.call </b>может быть как <b>RF_CALL</b>, так и <b>RF_TAILCALL</b>, <b>e.args </b>и <b>e.ress' </b>получены из <b>e.exprs </b>и <b>e.ress </b>с помощью функции <b>Args-To-CPP</b>, <b>t.name' </b>получено из <b>t.name </b>с помощью функции <b>Name-To-CPP</b>
     892<div style="color: red;">Что за Exprs и Vars? Ничего такого там не должно
     893быть!</div>
    855894</p></div></td>
    856895
     
    914953
    915954<p><div align="left"> <p>
    916 где <b>e.expr' </b> - результат преобразования <b>e.expr<b> функцией <b>Expr-Ref-To-CPP</b>
     955где <b>e.expr' </b> - результат преобразования <b>e.expr</b> функцией <b>Expr-Ref-To-CPP</b>
    917956и<b> e.pos' </b>является результатом работы функции <b>Expr-Int-To-CPP </b>.
    918957Функция проверяет, находится ли в позиции <b>e.pos'</b> выражения <b>e.expr'</b>
    919958символ.
    920 <b>e.expr'</b>.
    921959</p></div></td>
    922960
     
    938976
    939977<p><div align="left"> <p>
    940 где <b>e.expr'<b> полученo в результате работы функции <b>Expr-Ref-To-CPP </b>над аргументом <b>e.expr</b>,
     978где <b>e.expr'</b> полученo в результате работы функции <b>Expr-Ref-To-CPP</b> над аргументом <b>e.expr</b>,
    941979<b>e.pos'</b>, <b>e.len'</b> получены в результат работы функции <b>Expr-Int-To-CPP</b>
    942980Функция проверяет, не содежит ли подвыражение, начинающееся с позиции <b>e.pos'</b>
     
    10611099где <b>e.args' </b>- результат преобразования <b>e.args </b>функцией <b>Args-To-CPP </b>.
    10621100Функция возвращает максимальное значение из списка целочисленных аргументов <b>e.args'</b>.
     1101<div style="color: red;">Нету там никаких Ints!</div>
    10631102</p></div></td>
    10641103
     
    10831122<b>Args-To-CPP</b>. Функция возвращает минимальное значение из списка
    10841123целочисленных аргументов <b>e.args'</b>.
     1124<div style="color: red;">Нету там никаких Ints!</div>
    10851125</p></div></td>
    10861126
     
    11041144где <b>e.arg', e.arg'' </b>- аргументы из списка <b>e.args</b>,
    11051145<b>s.op</b> - символ операции.
    1106 </p></div></td>
    1107 
    1108 </tr>
    1109 
    1110 
    1111 
    1112 
    1113 
    1114 
    1115 
    1116 
    1117 
    1118 <tr><td width="50.00%" rowspan="1" colspan="1"><p><div align="left"> <p>
    1119 <b>(REF e.QualifiedName s.name)</b>
    1120 </p></div></td>
    1121 
    1122 
    1123 
    1124 <td width="50.00%" rowspan="1" colspan="1"><p><div align="left"> <p>
    1125 <b>s.name'</b>
     1146<div style="color: red;">А какие это аргументы&nbsp;&#151; первый и второй, или
     1147последний и предпоследний?</div>
     1148</p></div></td>
     1149
     1150</tr>
     1151
     1152
     1153
     1154
     1155
     1156
     1157
     1158
     1159
     1160<tr><td width="50.00%" rowspan="1" colspan="1"><p><div align="left"> <p>
     1161<b>(REF e.QualifiedName)</b>
     1162</p></div></td>
     1163
     1164
     1165
     1166<td width="50.00%" rowspan="1" colspan="1"><p><div align="left"> <p>
     1167<b>e.QualifiedName'</b>
    11261168</p></div>
    11271169
     
    11531195
    11541196<td width="50.00%" rowspan="1" colspan="1"><p><div align="left"> <p>
    1155 <b>e.QualifiedName</b>
     1197<b>e.QualifiedName'</b>
    11561198</p></div>
    11571199
     
    11731215
    11741216<td width="50.00%" rowspan="1" colspan="1"><p><div align="left"> <p>
    1175 <b>e.QualifiedName</b>
     1217<b>e.QualifiedName'</b>
    11761218</p></div>
    11771219
     
    11871229
    11881230<tr><td width="50.00%" rowspan="1" colspan="1"><p><div align="left"> <p>
    1189 <b>(s e.QualifiedName)</b>
    1190 </p></div></td>
    1191 
    1192 
    1193 
    1194 <td width="50.00%" rowspan="1" colspan="1"><p><div align="left"> <p>
    1195 <b>e.QualifiedName</b>
     1231<b>(e.QualifiedName)</b>
     1232</p></div></td>
     1233
     1234
     1235
     1236<td width="50.00%" rowspan="1" colspan="1"><p><div align="left"> <p>
     1237<b>e.QualifiedName'</b>
    11961238</p></div>
    11971239
Note: See TracChangeset for help on using the changeset viewer.