Changeset 242
- Timestamp:
- Nov 14, 2002, 10:09:06 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
to-imperative/trunk/docs/rfp-asail.html
r240 r242 45 45 Функция <b>Name-To-CPP </b>преобразует терм <b>t.Name </b>в имя для использования в C-программе <b>s.legal-cpp-name</b> и полученный результат помещает в таблицу имен <b>&Func-Таble</b> и 46 46 в ящик <b>&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> 47 56 </p></div></li> 48 57 … … 55 64 Функция <b>Build-CPP-Name </b> создает уникальное имя <b>e.cpp-chars</b> по списку слов из Рефал-программы 56 65 <b>e.words</b> . 66 <div style="color: red;">Нет, построенное имя не обязано быть уникальным. Эта 67 функция просто переводит <b>e.QualifiedName</b> в имя на С++, расставляя 68 ‘_’ между словами и убирая символы, не являющиеся легальными в 69 С++.</div> 57 70 </p></div></li> 58 71 … … 64 77 <p><div align="left"> <p> 65 78 Функция <b>Find-Unused-Name</b> является вспомогательной для функции <b>Build-CPP-Name</b> . 79 <div style="color: red;">Нет, она не является вспомогательной. Она вызывается 80 после, для того, чтобы сделать построенное имя уникальным, путём приписывания к 81 его концу некоторого кол-ва ‘_’.</div> 66 82 </p></div></li> 67 83 … … 72 88 73 89 <p><div align="left"> <p> 74 Функция <b>Word-To-CPP-Chars</b> создает из исходного Рефал-слова <b>s.word 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++. 76 92 </p></div></li> 77 93 … … 83 99 <p><div align="left"> <p> 84 100 Функция <b>Chars-To-CPP-Chars</b> из списка символов на Рефале+ <b>e.chars</b> 85 создает список символов на C++ <b>e.cpp-chars</b> 101 создает список символов на C++ <b>e.cpp-chars</b>. 86 102 </p></div></li> 87 103 … … 93 109 <p><div align="left"> <p> 94 110 Функция <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> 96 114 </p></div></li> 97 115 … … 126 144 аргументов <b>e.args</b>, элементы которого преобразуются в аргументы на C++ 127 145 с помощью функции <b>s.func-for-converting-args-to-cpp</b>. 146 <div style="color: red;">Я думаю, лучше сказать “расставляет знак операции 147 между аргументами <b>e.args</b>”.</div> 128 148 </p></div></li> 129 149 … … 135 155 <p><div align="left"> <p> 136 156 Функция <b>Op-Arg-To-CPP</b> вызывает функцию для обработки знака операции - 137 логической или арифметической</b> . 157 логической или арифметической</b>. 158 <div style="color: red;">Нет. Она возвращает функцию для обработки аргументов 159 операции, в зависимости от типа операции — логического или 160 арифметического.</div> 138 161 </p></div></li> 139 162 … … 147 170 <p><div align="left"> <p> 148 171 Функция <b>Expr-To-CPP </b>по полученному на входе выражению на абстрактном императивном языке <b>e.ASAIL-Expr</b> строит выражение на языке C++ <b>e.CPP-Expr</b>. 172 <div style="color: red;">Здесь правильно сказать, что она делает это путём 173 определения типа выражения — Expr или Int, и вызова соответствующей 174 функции (<b>Expr-Ref-To-CPP</b> или <b>Expr-Int-To-CPP</b>).</div> 149 175 </p></div></li> 150 176 … … 169 195 <p><div align="left"> <p> 170 196 Функция <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> 171 201 </p></div></li> 172 202 … … 225 255 <p><div align="left"> <p> 226 256 Функция <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> 227 258 </p></div></li> 228 259 … … 317 348 <b>RF_RES</b> 318 349 список имен результатов через пробел.</div> 319 350 <div style="color: red;">Даже зная, что должно быть, я не могу понять, что здесь 351 написано. Что такое тогда Vars, e.args', e.ress'? И скобки, как всегда, не 352 сбалансированы.</div> 320 353 </p></div></td> 321 354 … … 678 711 создание объекта класса <b>Expr</b>, 679 712 где <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> 680 717 </p></div></td> 681 718 … … 853 890 <p><div align="left"> <p> 854 891 здесь значением <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> 855 894 </p></div></td> 856 895 … … 914 953 915 954 <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> 917 956 и<b> e.pos' </b>является результатом работы функции <b>Expr-Int-To-CPP </b>. 918 957 Функция проверяет, находится ли в позиции <b>e.pos'</b> выражения <b>e.expr'</b> 919 958 символ. 920 <b>e.expr'</b>.921 959 </p></div></td> 922 960 … … 938 976 939 977 <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>, 941 979 <b>e.pos'</b>, <b>e.len'</b> получены в результат работы функции <b>Expr-Int-To-CPP</b> 942 980 Функция проверяет, не содежит ли подвыражение, начинающееся с позиции <b>e.pos'</b> … … 1061 1099 где <b>e.args' </b>- результат преобразования <b>e.args </b>функцией <b>Args-To-CPP </b>. 1062 1100 Функция возвращает максимальное значение из списка целочисленных аргументов <b>e.args'</b>. 1101 <div style="color: red;">Нету там никаких Ints!</div> 1063 1102 </p></div></td> 1064 1103 … … 1083 1122 <b>Args-To-CPP</b>. Функция возвращает минимальное значение из списка 1084 1123 целочисленных аргументов <b>e.args'</b>. 1124 <div style="color: red;">Нету там никаких Ints!</div> 1085 1125 </p></div></td> 1086 1126 … … 1104 1144 где <b>e.arg', e.arg'' </b>- аргументы из списка <b>e.args</b>, 1105 1145 <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;">А какие это аргументы — первый и второй, или 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> 1126 1168 </p></div> 1127 1169 … … 1153 1195 1154 1196 <td width="50.00%" rowspan="1" colspan="1"><p><div align="left"> <p> 1155 <b>e.QualifiedName </b>1197 <b>e.QualifiedName'</b> 1156 1198 </p></div> 1157 1199 … … 1173 1215 1174 1216 <td width="50.00%" rowspan="1" colspan="1"><p><div align="left"> <p> 1175 <b>e.QualifiedName </b>1217 <b>e.QualifiedName'</b> 1176 1218 </p></div> 1177 1219 … … 1187 1229 1188 1230 <tr><td width="50.00%" rowspan="1" colspan="1"><p><div align="left"> <p> 1189 <b>( se.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> 1196 1238 </p></div> 1197 1239
Note: See TracChangeset
for help on using the changeset viewer.