/* rfp_asail.rf */
÷ÓÐÏÍÏÇÁÔÅÌØÎÙÅ ÆÕÎËÃÉÉ, ÉÓÐÏÌØÚÕÅÍÙÅ ËÏÍÐÉÌÑÔÏÒÏÍ
$func Name-To-CPP t.Name = e.legal-cpp-name
æÕÎËÃÉÑ Name-To-CPP ÐÒÅÏÂÒÁÚÕÅÔ ÔÅÒÍ t.Name × ÉÍÑ ÄÌÑ ÉÓÐÏÌØÚÏ×ÁÎÉÑ × C-ÐÒÏÇÒÁÍÍÅ s.legal-cpp-name É ÐÏÌÕÞÅÎÎÙÊ ÒÅÚÕÌØÔÁÔ ÐÏÍÅÝÁÅÔ × ÔÁÂÌÉÃÕ ÉÍÅÎ &Func-ôÁble É × ÑÝÉË &Func-Names.
* Gets function name or variable and returns legal C++ name corresponding to * it. If is called with such parameter at the first time then stores C++ name * in the appropriate table for further using. Also put new name in the * appropriate box. Box and table for variables is updated for each new * function and box and table for functions is updated for each new module.
$func Build-CPP-Name e.words = e.cpp-chars
æÕÎËÃÉÑ Build-CPP-Name ÓÏÚÄÁÅÔ ÕÎÉËÁÌØÎÏÅ ÉÍÑ e.cpp-chars ÐÏ ÓÐÉÓËÕ ÓÌÏ× ÉÚ òÅÆÁÌ-ÐÒÏÇÒÁÍÍÙ e.words .
$func Find-Unused-Name (e.used-names) e.name = e.unused-name
æÕÎËÃÉÑ Find-Unused-Name Ñ×ÌÑÅÔÓÑ ×ÓÐÏÍÏÇÁÔÅÌØÎÏÊ ÄÌÑ ÆÕÎËÃÉÉ Build-CPP-Name .
$func Word-To-CPP-Chars s.word = e.cpp-chars
æÕÎËÃÉÑ Word-To-CPP-Chars ÓÏÚÄÁÅÔ ÉÚ ÉÓÈÏÄÎÏÇÏ òÅÆÁÌ-ÓÌÏ×Á s.word ÓÔÒÏËÕ e.cpp-chars ÎÁ C++.
$func Chars-To-CPP-Chars e.chars = e.cpp-chars
æÕÎËÃÉÑ Chars-To-CPP-Chars ÉÚ ÓÐÉÓËÁ ÓÉÍ×ÏÌÏ× ÎÁ òÅÆÁÌÅ+ e.chars ÓÏÚÄÁÅÔ ÓÐÉÓÏË ÓÉÍ×ÏÌÏ× ÎÁ C++ e.cpp-chars.
$func Expr-Ref-To-CPP s.inner-call? e.ASAIL-Expr-Ref = e.CPP-Expr-Ref
æÕÎËÃÉÑ Expr-Ref-To-CPP ÐÒÅÏÂÒÁÚÕÅÔ ×ÙÒÁÖÅÎÉÅ-ÓÓÙÌËÕ e.ASAIL-Expr-Ref × ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÅ ÅÍÕ ×ÙÒÁÖÅÎÉÅ ÎÁ C++ e.CPP-Expr-Ref.
$func Expr-Int-To-CPP e.ASAIL-Expr-Int = e.CPP-Expr-Int
æÕÎËÃÉÑ Expr-Int-To-CPP ÐÒÅÏÂÒÁÚÕÅÔ ×ÙÒÁÖÅÎÉÅ ÔÉÐÁ Int ÎÁ áéñ × ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÅ ÅÍÕ ×ÙÒÁÖÅÎÉÅ ÎÁ C++ .
$func Step-To-CPP e.step-operators = e.cpp-step-operators
æÕÎËÃÉÑ Step-To-CPP ÐÒÅÏÂÒÁÚÕÅÔ ËÏÎÓÔÒÕËÃÉÉ ÉÎËÒÅÍÅÎÔÁ ÐÅÒÅÍÅÎÎÏÊ ÉÚ ÉÓÈÏÄÎÏÇÏ ÓÐÉÓËÁ e.step-operators × ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÅ ËÏÎÓÔÒÕËÃÉÉ ÎÁ C++, ËÏÔÏÒÙÅ ÚÁÐÉÓÙ×ÁÀÔÓÑ × ÓÐÉÓÏË e.cpp-step-operators.
$func Infix-To-CPP s.func-for-converting-args-to-cpp s.op e.args = e.cpp-expr
æÕÎËÃÉÑ Infix-To-CPP ÐÒÏÎÏÓÉÔ ÚÎÁË ÏÐÅÒÁÃÉÉ s.op ÞÅÒÅÚ ÓÐÉÓÏË ÁÒÇÕÍÅÎÔÏ× e.args, ÜÌÅÍÅÎÔÙ ËÏÔÏÒÏÇÏ ÐÒÅÏÂÒÁÚÕÀÔÓÑ × ÁÒÇÕÍÅÎÔÙ ÎÁ C++ Ó ÐÏÍÏÝØÀ ÆÕÎËÃÉÉ s.func-for-converting-args-to-cpp.
$func Op-Arg-To-CPP s.op = s.func-for-converting-args-to-cpp
æÕÎËÃÉÑ Op-Arg-To-CPP ×ÙÚÙ×ÁÅÔ ÆÕÎËÃÉÀ ÄÌÑ ÏÂÒÁÂÏÔËÉ ÚÎÁËÁ ÏÐÅÒÁÃÉÉ - ÌÏÇÉÞÅÓËÏÊ ÉÌÉ ÁÒÉÆÍÅÔÉÞÅÓËÏÊ.
$func Expr-To-CPP e.ASAIL-expr = e.CPP-Expr
æÕÎËÃÉÑ Expr-To-CPP ÐÏ ÐÏÌÕÞÅÎÎÏÍÕ ÎÁ ×ÈÏÄÅ ×ÙÒÁÖÅÎÉÀ ÎÁ ÁÂÓÔÒÁËÔÎÏÍ ÉÍÐÅÒÁÔÉ×ÎÏÍ ÑÚÙËÅ e.ASAIL-Expr ÓÔÒÏÉÔ ×ÙÒÁÖÅÎÉÅ ÎÁ ÑÚÙËÅ C++ e.CPP-Expr.
$func Const-Expr-To-CPP e.ASAIL-const-expr = e.CPP-const-expr
æÕÎËÃÉÑ Const-Expr-To-CPP ÐÏÌÕÞÁÅÔ ÎÁ ×ÈÏÄÅ ËÏÎÓÔÁÎÔÎÏÅ ×ÙÒÁÖÅÎÉÅ ÎÁ áéñ e.ASAIL-const-expr É ÐÒÅÏÂÒÁÚÕÅÔ ÅÇÏ × ËÏÎÓÔÁÎÔÎÏÅ ×ÙÒÁÖÅÎÉÅ ÎÁ ÑÚÙËÅ C++ e.CPP-const-expr
$func Args-To-CPP e.Arg-Res-Tag e.ASAIL-Args = e.CPP-Args
æÕÎËÃÉÑ Args-To-CPP ÐÏ ÐÏÌÕÞÅÎÎÏÍÕ ÓÐÉÓËÕ ÁÒÇÕÍÅÎÔÏ× ÎÁ áéñ (e.Arg-Res-Tag) e.ASAIL-Args ÓÔÒÏÉÔ ÓÐÉÓÏË ÁÒÇÕÍÅÎÔÏ× ÎÁ ÑÚÙËÅ C++ e.CPP-Args.
$func Symbol-To-CPP s.RFP-Symbol = e.CPP-String
æÕÎËÃÉÑ Symbol-To-CPP ÐÏÌÕÞÁeÔ ÎÁ ×ÈÏÄÅ ÓÉÍ×ÏÌ-ÓÌÏ×Ï, ÉÌÉ ÓÉÍ×ÏÌ-ÌÉÔÅÒÕ, ÉÌÉ ÓÉÍ×ÏÌ-ÞÉÓÌÏ s.RFP-Symbol. óÉÍ×ÏÌÙ-ÞÉÓÌÁ ÏÎÁ ÐÅÒÅ×ÏÄÉÔ × ÉÈ ÉÚÏÂÒÁÖÅÎÉÑ, Á ÓÉÍ×ÏÌÙ-ÓÌÏ×Á É ÓÉÍ×ÏÌÙ-ÌÉÔÅÒÙ ÐÅÒÅ×ÏÄÉÔ × ÓÔÒÏËÕ ÌÉÔÅÒ ÎÁ ó++ e.CPP-String.
$func Chars-To-CPP e.expr = e.CPP-String
æÕÎËÃÉÑ Chars-To-CPP ÐÏÌÕÞÁÅÔ ÎÁ ×ÈÏÄ ÃÅÐÏÞËÕ ÓÉÍ×ÏÌÏ×-ÌÉÔÅÒ e.expr É ÐÒÅÏÂÒÁÚÕÅÔ ÅÇÏ × ÓÔÒÏËÕ ÎÁ C++ e.CPP-String.
$func Cond-To-CPP e.cond = e.CPP-Cond
æÕÎËÃÉÑ Cond-To-CPP ÎÁ ×ÈÏÄÅ ÐÏÌÕÞÁÅÔ ×ÙÒÁÖÅÎÉÅ-ÕÓÌÏ×ÉÅ ÎÁ áéñ e.cond É ÐÒÅÏÂÒÁÚÕÅÔ ÅÇÏ × ÕÓÌÏ×ÉÅ ÎÁ ÑÚÙËÅ C++ e.CPP-Cond
$func RFP-ASAIL-To-CPP e.asail = e.cpp
æÕÎËÃÉÑ RFP-ASAIL-To-CPP ÐÏÌÕÞÁÅÔ ÎÁ ×ÈÏÄÅ ×ÙÒÁÖÅÎÉÅ ÎÁ áéñ e.asail É ×ÙÚÙ×ÁÅÔ ÄÁÌÅÅ ÆÕÎËÃÉÀ ASAIL-TO-CPP, ËÏÔÏÒÁÑ ÐÒÅÏÂÒÁÚÕÅÔ ÅÇÏ × ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÅ ×ÙÒÁÖÅÎÉÅ ÎÁ C++ e.cpp.
$table Func-Table
ôÁÂÌÉÃÁ Func-Table ÉÓÐÏÌØÚÕÅÔÓÑ ÄÌÑ ÈÒÁÎÅÎÉÑ ÉÍÅÎ ÆÕÎËÃÉÊ ÎÁ òÅÆÁÌÅ+ É ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÈ ÉÍ ÉÍÅÎ ÎÁ C++.
$table Var-Table
ôÁÂÌÉÃÁ Var-Table ÐÒÅÄÎÁÚÎÁÞÅÎÁ ÄÌÑ ÈÒÁÎÅÎÉÑ ÉÍÅÎ ÐÅÒÅÍÅÎÎÙÈ ÎÁ òÅÆÁÌÅ+ É ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÈ ÉÍ ÉÍÅÎ ÎÁ ó++, ÉÓÐÏÌØÚÕÅÍÙÈ × ÆÕÎËÃÉÉ.
$box Func-Names
ñÝÉË Func-Names ÐÒÅÄÎÁÚÎÁÞÅÎ ÄÌÑ ÈÒÁÎÅÎÉÑ ÉÍÅÎ ÆÕÎËÃÉÊ, ÐÏÓÔÒÏÅÎÎÙÈ × ÐÒÏÇÒÁÍÍÅ.
$box Var-Names
ñÝÉË Var-Names ÐÒÅÄÎÁÚÎÁÞÅÎ ÄÌÑ ÈÒÁÎÅÎÉÑ ÉÍÅÎ ÐÅÒÅÍÅÎÎÙÈ, ÉÓÐÏÌØÚÕÅÍÙÈ × ÆÕÎËÃÉÉ.
ëÏÎÓÔÒÕËÃÉÉ áéñ É ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÅ ÉÍ ËÏÎÓÔÒÕËÃÉÉ ó++
(FUNC t.name (e.args) (e.ress) e.body) |
RF_FUNC (t.name', ((RF_ARG) Vars e.args'), ((RF_RES) Vars e.ress'))) e.body' RF_END, ÇÄÅ t.name' - ÐÒÅÏÂÒÁÚÏ×ÁÎÎÏÅ ÉÍÑ ÏÐÉÓÙ×ÁÅÍÏÊ ÆÕÎËÃÉÉ Ó ÐÏÍÏÝØÀ ÆÕÎËÃÉÉ Name-To-CPP, RF_ARG - ÓÐÉÓÏË ÁÒÇÕÍÅÎÔÏ× ÞÅÒÅÚ ÐÒÏÂÅÌ, a RF_RES ÓÐÉÓÏË ÉÍÅÎ ÒÅÚÕÌØÔÁÔÏ× ÞÅÒÅÚ ÐÒÏÂÅÌ. äÁÖÅ ÚÎÁÑ, ÞÔÏ ÄÏÌÖÎÏ ÂÙÔØ, Ñ ÎÅ ÍÏÇÕ ÐÏÎÑÔØ, ÞÔÏ ÚÄÅÓØ
ÎÁÐÉÓÁÎÏ. þÔÏ ÔÁËÏÅ ÔÏÇÄÁ Vars, e.args', e.ress'? é ÓËÏÂËÉ, ËÁË ×ÓÅÇÄÁ, ÎÅ
ÓÂÁÌÁÎÓÉÒÏ×ÁÎÙ.
|
(IF (e.cond) e.body) |
if (e.cond') { e.body' }, ÇÄÅ e.cond' É e.body'ÐÏÌÕÞÁÀÔÓÑ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÅÍ e.cond É e.body Ó ÐÏÍÏÝØÀ ÆÕÎËÃÉÊ Cond-To-CPP É ÒÅËÕÒÓÉ×ÎÏÇÏ ×ÙÚÏ×Á ASAIL-To-CPP |
(FOR (e.label) (e.cond) (e.step) e.body) |
for ( ; e.cond'; e.step'){ e.body' e.label' }, ÇÄÅ e.cond' - ÒÅÚÕÌØÔÁÔ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ e.cond ÆÕÎËÃÉÅÊ Cond-To-CPP , e.step' ÐÏÌÕÞÅÎÏ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÅÍ e.step Ó ÐÏÍÏÝØÀ ÆÕÎËÃÉÉ Step-To-CPP, e.label' ÐÒÅÏÂÒÁÚÏ×ÁÎÎÏÅ ÉÍÑ ÍÅÔËÉ e.label (ÏÎÏ ÍÏÖÅÔ ÂÙÔØ ÐÕÓÔÙÍ),É e.body' -ÒÅÚÕÌØÔÁÔ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ e.body ÒÅËÕÒÓÉ×ÎÙÍ ×ÙÚÏ×ÏÍ ÆÕÎËÃÉÉ ASAIL-To-CPP |
(LABEL t.label e.body)
|
{ e.body' } LABEL t.name' : { } , ÇÄÅ e.body' ÐÏÌÕÞÁÅÔÓÑ ÐÕÔÅÍ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ e.body ÒÅËÕÒÓÉ×ÎÏ ÆÕÎËÃÉÅÊ RFP-ASAIL-To-CPP, t.name' - ÒÅÚÕÌØÔÁÔ ÒÁÂÏÔÙ ÆÕÎËÃÉÉ Name-To-CPP ÎÁÄ ÁÒÇÕÍÅÎÔÏÍ (LABEL t.label) |
(TRY e.body)
|
trap { e.body' } ÚÄÅÓØ e.body' ÐÏÌÕÞÅÎÏ × ÒÅÚÕÌØÔÁÔÅ ÒÁÂÏÔÙ ÆÕÎËÃÉÉ ASAIL-To-CPP ÎÁÄ ÁÒÇÕÍÅÎÔÏÍ e.body |
(CATCH-ERROR e.body)
|
with { e.body' }, ÇÄÅ e.body' ÐÏÌÕÞÅÎÏ × ÒÅÚÕÌØÔÁÔÅ ÒÁÂÏÔÙ ÆÕÎËÃÉÉ ASAIL-To-CPP ÎÁÄ ÁÒÇÕÍÅÎÔÏÍ e.body. éÓÐÏÌØÚÕÅÔÓÑ ÄÌÑ ÏÂÒÁÂÏÔËÉ ÉÓËÌÀÞÉÔÅÌØÎÙÈ ÓÉÔÕÁÃÉÊ. |
(CONST e.expr) |
const e.expr', ÇÄÅ e.expr' ÐÏÌÕÞÁÅÔÓÑ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÅÍ e.expr Ó ÐÏÍÏÝØÀ ÆÕÎËÃÉÉ Expr-To-CPP |
RETURN
|
return true; |
RETFAIL |
retfail;
|
FATAL |
FATAL (“Unexpected fail”);
|
(LSPLIT e.expr (e.min) t.var1 t.var2) |
lsplit (e.expr', e.min', e.var1', e.var2');, ÇÄÅ e.expr' É e.min' ÒÅÚÕÌØÔÁÔ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ e.expr Ó ÐÏÍÏÝØÀ ÆÕÎËÃÉÉ Expr-Ref-To-CPP É e.min Ó ÐÏÍÏÝØÀ ÆÕÎËÃÉÉ Expr-Int-To-CPP, e.var1' É e.var2' ÐÏÌÕÞÅÎÙ × ÒÅÚÕÌØÔÁÔÅ ÒÁÂÏÔÙ ÆÕÎËÃÉÉ Name -To-CPP ÎÁÄ ÁÒÇÕÍÅÎÔÁÍÉ e.var1, e.var2 . æÕÎËÃÉÑ ÉÓÐÏÌØÚÕÅÔÓÑ ÄÌÑ ÒÁÚÂÉÅÎÉÑ ×ÙÒÁÖÅÎÉÑ e.expr' ÎÁ Ä×Á ×ÙÒÁÖÅÎÉÑ: e.var1' É e.var2', ÄÌÉÎÁ e.var1' ÒÁ×ÎÁ e.min', ÄÌÉÎÁ e.var2' ÒÁ×ÎÁ ÄÌÉÎÅ ÏÓÔÁÔËÁ ÏÔ ×ÙÒÁÖÅÎÉÑ e.expr'. äÁÌÅÅ ÜÔÉ ×ÙÒÁÖÅÎÉÑ ÍÏÇÕÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎÙ × ÃÉËÌÅ. |
(RSPLIT e.expr (e.min) t.var1 t.var2) |
rsplit (e.expr', e.min', e.var1', e.var2');, ÇÄÅ e.expr' É e.min' ÒÅÚÕÌØÔÁÔ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ e.expr Ó ÐÏÍÏÝØÀ ÆÕÎËÃÉÉ Expr-Ref-To-CPP É e.min Ó ÐÏÍÏÝØÀ ÆÕÎËÃÉÉ Expr-Int-To-CPP, e.var1' É e.var2' ÐÏÌÕÞÅÎÙ × ÒÅÚÕÌØÔÁÔÅ ÒÁÂÏÔÙ ÆÕÎËÃÉÉ Name -To-CPP ÎÁÄ ÁÒÇÕÍÅÎÔÁÍÉ e.var1, e.var2 . æÕÎËÃÉÑ ÉÓÐÏÌØÚÕÅÔÓÑ ÄÌÑ ÒÁÚÂÉÅÎÉÑ ×ÙÒÁÖÅÎÉÑ e.expr' ÎÁ Ä×Á ×ÙÒÁÖÅÎÉÑ: e.var1' É e.var2', ÄÌÉÎÁ e.var2' ÒÁ×ÎÁ e.min', ÄÌÉÎÁ e.var1' ÒÁ×ÎÁ ÄÌÉÎÅ ÏÓÔÁÔËÁ ÏÔ ×ÙÒÁÖÅÎÉÑ e.expr'. äÁÌÅÅ ÜÔÉ ×ÙÒÁÖÅÎÉÑ ÍÏÇÕÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎÙ × ÃÉËÌÅ. |
(ASSIGN t.var e.expr) |
t.var' = e.expr'; - ÏÐÅÒÁÔÏÒ ÐÒÉÓ×ÁÉ×ÁÎÉÑ, ÚÄÅÓØ t.var' - ÒÅÚÕÌØÔÁÔ ÒÁÂÏÔÙ ÆÕÎËÃÉÉ Name-To-CPP ÎÁÄ ÁÒÇÕÍÅÎÔÏÍ t.var, e.expr' - ÒÅÚÕÌØÔÁÔ ÒÁÂÏÔÙ ÆÕÎËÃÉÉ Expr-To-CPP ÎÁÄ ÁÒÇÕÍÅÎÔÏÍ e.expr |
(DECL s.type t.var) |
s.type t.var'; - ÏÂßÑ×ÌÅÎÉÅ ÐÅÒÅÍÅÎÎÏÊ, ÇÄÅ t.var' ÐÏÌÕÞÅÎÏ ÐÕÔÅÍ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ t.var Ó ÐÏÍÏÝØÀ ÆÕÎËÃÉÉ Name-To-CPP |
(EXPR e.expr) |
Expr (e.expr'); - ÓÏÚÄÁÎÉÅ ÏÂßÅËÔÁ ËÌÁÓÁ Expr, ÇÄÅ e.expr'- ÐÒÅÏÂÒÁÚÏ×ÁÎÎÏÅ ×ÙÒÁÖÅÎÉÅ e.expr Ó ÐÏÍÏÝØÀ ÆÕÎËÃÉÉ Chars-To-CPP |
(DEREF e.expr (e.pos)) |
Expr (e.expr', e.pos'); - ÓÏÚÄÁÎÉÅ ÏÂßÅËÔÁ ËÌÁÓÓÁ Expr, ÇÄÅ t.var' ÐÏÌÕÞÁÅÔÓÑ × ÒÅÚÕÌØÔÁÔÅ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ t.var Ó ÐÏÍÏÝØÀ ÆÕÎËÃÉÉ Name-To-CPP, e.expr' - ÒÅÚÕÌØÔÁÔ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ e.expr ÆÕÎËÃÉÅÊ Expr-Ref-To-CPP, e.pos' ÐÏÌÕÞÅÎo ÐÕÔÅÍ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ e.pos Ó ÐÏÍÏÝØÀ ÆÕÎËÃÉÉ Expr-Int-To-CPP á ÞÔÏ ÔÁËÏÅ t.var? äÅÌÏ × ÔÏÍ, ÞÔÏ ÅÓÔØ ÐÏ Ä×Á
×ÁÒÉÁÎÔÁ DEREF É SUBEXPR. äÌÑ ÚÁ×ÅÄÅÎÉÑ ÎÏ×ÏÊ ÐÅÒÅÍÅÎÎÏÊ, É ÄÌÑ ÉÓÐÏÌØÚÏ×ÁÎÉÑ
×ÎÕÔÒÉ ×ÙÒÁÖÅÎÉÑ, ËÏÇÄÁ ÐÅÒÅÍÅÎÎÁÑ ÎÅ ÚÁ×ÏÄÉÔÓÑ É, ÓÏÏÔ×ÅÔÓÔ×ÅÎÎÏ, t.var
ÎÅÔÕ. á Õ ÔÅÂÑ ÏÐÉÓÁÎÏ ÔÏÌØËÏ ÐÏ ÏÄÎÏÍÕ ×ÁÒÉÁÎÔÕ ËÁÖÄÏÊ ËÏÎÓÔÒÕËÃÉÉ.
|
(SUBEXPR t.var e.expr (e.pos) (e.len)) |
Expr t.var' (e.expr', e.pos', e.len'); - ÓÏÚÄÁÎÉÅ ÏÂßÅËÔÁ ËÌÁÓÓÁ Expr, ÇÄÅ t.var' - ÐÒÅÏÂÒÁÚÏ×ÁÎÎÏÅ ÉÍÑ ÐÅÒÅÍÅÎÎÏÊ t.var É e.expr' ÐÏÌÕÞÅÎÏ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÅÍ e.expr ÆÕÎËÃÉÅÊ Expr-Ref-To-CPP, e.pos',e.len' - ×ÙÒÁÖÅÎÉÑ, ÐÏÌÕÞÅÎÎÙÅ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÅÍ e.pos, e.len Ó ÐÏÍÏÝØÀ ÆÕÎËÃÉÉ Expr-Int-To-CPP |
(DROP t.var) |
t.var'.drop();, ÇÄÅ t.var' - ÐÒÅÏÂÒÁÚÏ×ÁÎÎÏÅ ÉÍÑ ÐÅÒÅÍÅÎÎÏÊ t.var Ó ÐÏÍÏÝØÀ ÆÕÎËÃÉÉ Name-To-CPP. ðÏÓÌÅ ÔÏÇÏ, ËÁË ÏÔÒÁÂÏÔÁÌÁ ÜÔÁ ÆÕÎËÃÉÑ, ÐÅÒÅÍÅÎÎÁÑ t.var' ÎÉÇÄÅ ÄÁÌÅÅ ÎÅ ÉÓÐÏÌØÚÕÅÔÓÑ. |
(CONTINUE t.label) |
goto t.label'; - ÏÐÅÒÁÔÏÒ goto, ÇÄÅ t.label' ÐÏÌÕÞÅÎÏ × ÒÅÚÕÌØÔÁÔÅ ×ÙÚÏ×Á ÆÕÎËÃÉÉ Name-To-CPP ÎÁÄ ÁÒÇÕÍÅÎÔÏÍ t.label |
(BREAK t.label) |
goto t.label'; - ÏÐÅÒÁÔÏÒ goto, ÇÄÅ t.label' ÐÏÌÕÞÅÎÏ × ÒÅÚÕÌØÔÁÔÅ ×ÙÚÏ×Á ÆÕÎËÃÉÉ Name-To-CPP ÎÁÄ ÁÒÇÕÍÅÎÔÏÍ t.label |
(ERROR e.expr) |
error (e.expr'); ÇÅÎÅÒÁÃÉÑ ÓÏÏÂÝÅÎÉÑ ÏÂ ÏÛÉÂËÅ, ÇÄÅ e.expr' ÐÏÌÕÞÁÅÔÓÑ × ÒÅÚÕÌØÔÁÔÅ ÒÁÂÏÔÙ ÆÕÎËÃÉÉ Expr-Ref-To-CPP ÎÁÄ ÁÒÇÕÍÅÎÔÏÍ e.expr |
(CONSTEXPR t.name e.expr) |
const Expr t.name' = e.expr'; ÉÎÉÃÉÁÌÉÚÁÃÉÑ ËÏÎÓÔÁÎÔÎÏÇÏ ×ÙÒÁÖÅÎÉÑ, ÇÄÅ t.name' - ÒÅÚÕÌØÔÁÔ ÒÁÂÏÔÙ ÆÕÎËÃÉÉ Name-To-CPP ÎÁÄ ÁÒÇÕÍÅÎÔÏÍ t.name, Á e.expr' - ÒÅÚÕÌØÔÁÔ ÒÁÂÏÔÙ ÆÕÎËÃÉÉ Const-Expr-To-CPP ÎÁÄ ÁÒÇÕÍÅÎÔÏÍ e.expr |
(DECL-FUNC t.name) |
(RF_DECL (t.name')) ÓÏÚÄÁÎÉÅ ÏÂßÑ×ÌÅÎÉÑ ÆÕÎËÃÉÉ, ÇÄÅ t.name' - ÅÅ ÉÍÑ, ÐÏÌÕÞÅÎÎÏÅ ÉÚ t.name Ó ÐÏÍÏÝØÀ ×ÙÚÏ×Á Name-To-CPP. |
(s.call t.name (e.exprs) (e.ress)) |
RF_CALL (t.name', (Exprs e.expr'), (Vars e.ress')); RF_TAILCALL (t.name', (Exprs e.expr'), (Vars e.ress')); ÚÄÅÓØ ÚÎÁÞÅÎÉÅÍ s.call ÍÏÖÅÔ ÂÙÔØ ËÁË RF_CALL, ÔÁË É RF_TAILCALL, e.args É e.ress' ÐÏÌÕÞÅÎÙ ÉÚ e.exprs É e.ress Ó ÐÏÍÏÝØÀ ÆÕÎËÃÉÉ Args-To-CPP, t.name' ÐÏÌÕÞÅÎÏ ÉÚ t.name Ó ÐÏÍÏÝØÀ ÆÕÎËÃÉÉ Name-To-CPP þÔÏ ÚÁ Exprs É Vars? îÉÞÅÇÏ ÔÁËÏÇÏ ÔÁÍ ÎÅ ÄÏÌÖÎÏ
ÂÙÔØ!
|
(PAREN e.expr) |
(e.expr')(), ÇÄÅ e.expr' ×ÙÒÁÖÅÎÉÅ, ÐÏÌÕÞÅÎÎÏÅ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÅÍ e.expr ÆÕÎËÃÉÅÊ Expr-Ref-To-CPP |
(LENGTH e.expr) |
(int) (e.expr').get_len();, ÇÄÅ e.expr' ÐÏÌÕÞÅÎÏ ÐÕÔÅÍ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ e.expr ÆÕÎËÃÉÅÊ Expr-Ref-To-CPP . æÕÎËÃÉÑ ×ÏÚ×ÒÁÝÁÅÔ ÄÌÉÎÕ ×ÙÒÁÖÅÎÉÑ e.expr', Á ÉÍÅÎÎÏ, ËÏÌÉÞÅÓÔ×Ï ÔÅÒÍÏ×, ÉÚ ËÏÔÏÒÙÈ ÏÎÏ ÓÏÓÔÏÉÔ. |
(SYMBOL? e.expr (e.pos)) |
(e.expr').symbol_at(e.pos'), ÇÄÅ e.expr' - ÒÅÚÕÌØÔÁÔ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ e.expr ÆÕÎËÃÉÅÊ Expr-Ref-To-CPP É e.pos' Ñ×ÌÑÅÔÓÑ ÒÅÚÕÌØÔÁÔÏÍ ÒÁÂÏÔÙ ÆÕÎËÃÉÉ Expr-Int-To-CPP . æÕÎËÃÉÑ ÐÒÏ×ÅÒÑÅÔ, ÎÁÈÏÄÉÔÓÑ ÌÉ × ÐÏÚÉÃÉÉ e.pos' ×ÙÒÁÖÅÎÉÑ e.expr' ÓÉÍ×ÏÌ. |
(FLAT-SUBEXPR? E.expr (e.pos) (e.len)) |
(e.expr').flat_at(e.pos', e.len'), ÇÄÅ e.expr' ÐÏÌÕÞÅÎo × ÒÅÚÕÌØÔÁÔÅ ÒÁÂÏÔÙ ÆÕÎËÃÉÉ Expr-Ref-To-CPP ÎÁÄ ÁÒÇÕÍÅÎÔÏÍ e.expr, e.pos', e.len' ÐÏÌÕÞÅÎÙ × ÒÅÚÕÌØÔÁÔ ÒÁÂÏÔÙ ÆÕÎËÃÉÉ Expr-Int-To-CPP æÕÎËÃÉÑ ÐÒÏ×ÅÒÑÅÔ, ÎÅ ÓÏÄÅÖÉÔ ÌÉ ÐÏÄ×ÙÒÁÖÅÎÉÅ, ÎÁÞÉÎÁÀÝÅÅÓÑ Ó ÐÏÚÉÃÉÉ e.pos' ÄÌÉÎÙ e.len' ×ÙÒÁÖÅÎÉÑ e.expr' ×ÌÏÖÅÎÎÙÈ ÔÅÒÍÏ×. |
(EQ (e.expr1) (e.pos1) (e.len1) (e.expr2) (e.pos2) (e.len2)) |
eq (e.expr1', e.pos1', e.len1', e.expr2', e.pos2', e.len2'), ÇÄÅ e.expr1', e.expr2' ÐÏÌÕÞÅÎÙ Ó ÐÏÍÏÝØÀ ÆÕÎËÃÉÉ Expr-Ref-To-CPP, ÐÒÉÍÅÎÅÎÎÏÊ Ë ÁÒÇÕÍÅÎÔÁÍ e.expr1, e.expr2, e.pos1', e.pos2', e.len1', e.len2' ÐÏÌÕÞÅÎÙ ÐÒÉÍÅÎÅÎÉÅÍ ÆÕÎËÃÉÉ Expr-Int-To-CPP Ë ÁÒÇÕÍÅÎÔÁÍ e.pos1, e.pos2, e.len1, e.len2 æÕÎËÃÉÑ ÐÒÏ×ÅÒÑÅÔ ÒÁ×ÅÎÓÔ×Ï ÐÏÄ×ÙÒÁÖÅÎÉÑ ×ÙÒÁÖÅÎÉÑ e.expr1, ÎÁÞÉÎÁÑ Ó ÐÏÚÉÃÉÉ e.pos1 ÄÌÉÎÙ e.len1 ÐÏÄ×ÙÒÁÖÅÎÉÀ ×ÙÒÁÖÅÎÉÑ e.expr2, ÎÁÞÉÎÁÑ Ó ÐÏÚÉÃÉÉ e.pos2 ÄÌÉÎÙ e.len2. |
(FLAT-EQ (e.expr1) (e.pos1) (e.expr2) (e.pos2) (e.len)) |
flat_eq (e.expr1', e.pos1', e.expr2', e.pos2', e.len'), ÇÄÅ e.expr1' , e.expr2' ÐÏÌÕÞÁÀÔÓÑ × ÒÅÚÕÌØÔÁÔÅ ÒÁÂÏÔÙ ÆÕÎËÃÉÉ Expr-Ref-To-CPP ÎÁÄ ÁÒÇÕÍÅÎÔÁÍÉ e.expr1, e.expr2,. e.pos1', e.pos2', e.len' ÐÏÌÕÞÁÀÔÓÑ × ÒÅÚÕÌØÔÁÔÅ ÒÁÂÏÔÙ ÆÕÎËÃÉÉ Expr-Int-to-CPP ÎÁÄ ÁÒÇÕÍÅÎÔÁÍÉ e.pos1, e.pos2, e.len. æÕÎËÃÉÑ ×ÙÚÙ×ÁÅÔÓÑ ÄÌÑ ÐÒÏ×ÅÒËÉ ÒÁ×ÅÎÓÔ×Á Ä×ÕÈ ×ÈÏÄÎÙÈ ×ÙÒÁÖÅÎÉÊ, Ñ×ÌÑÀÝÉÈÓÑ ÐÏÄ×ÙÒÁÖÅÎÉÑÍÉ e.expr1, e.expr2, ÎÁÞÉÎÁÑ Ó ÐÏÚÉÃÉÊ e.pos1, e.pos2 ÓÏÏÔ×ÅÔÓÔ×ÅÎÎÏ,ÅÓÌÉ ÉÚ×ÅÓÔÎÏ, ÞÔÏ ÉÈ ÄÌÉÎÙ ÒÁ×ÎÙ. |
(NOT e.cond) |
(! e.cond'), ÏÐÅÒÁÔÏÒ ÏÔÒÉÃÁÎÉÑ ÕÓÌÏ×ÉÑ e.cond', ÐÏÌÕÞÅÎÎÏÇÏ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÅÍ ÕÓÌÏ×ÉÑ e.cond Ó ÐÏÍÏÝØÀ ÆÕÎËÃÉÉ Cond-To-CPP |
(INC-ITER t.var) |
iter (t.var')++, ÏÐÅÒÁÃÉÑ ÉÎËÒÅÍÅÎÔÁ ÄÌÑ ÏÂßÅËÔÁ ËÌÁÓÓÁ iter |
(MAX e.args) |
max (Ints e.args'), ÇÄÅ e.args' - ÒÅÚÕÌØÔÁÔ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ e.args ÆÕÎËÃÉÅÊ Args-To-CPP . æÕÎËÃÉÑ ×ÏÚ×ÒÁÝÁÅÔ ÍÁËÓÉÍÁÌØÎÏÅ ÚÎÁÞÅÎÉÅ ÉÚ ÓÐÉÓËÁ ÃÅÌÏÞÉÓÌÅÎÎÙÈ ÁÒÇÕÍÅÎÔÏ× e.args'. îÅÔÕ ÔÁÍ ÎÉËÁËÉÈ Ints!
|
(MIN e.args) |
min (Ints e.args')), ÇÄÅ e.args' - ÐÏÌÕÞÅÎÙ ÉÚ e.args Ó ÐÏÍÏÝØÀ ÆÕÎËÃÉÉ Args-To-CPP. æÕÎËÃÉÑ ×ÏÚ×ÒÁÝÁÅÔ ÍÉÎÉÍÁÌØÎÏÅ ÚÎÁÞÅÎÉÅ ÉÚ ÓÐÉÓËÁ ÃÅÌÏÞÉÓÌÅÎÎÙÈ ÁÒÇÕÍÅÎÔÏ× e.args'. îÅÔÕ ÔÁÍ ÎÉËÁËÉÈ Ints!
|
(INFIX s.op e.args) |
e.arg' s.op e.arg'', ÇÄÅ e.arg', e.arg'' - ÁÒÇÕÍÅÎÔÙ ÉÚ ÓÐÉÓËÁ e.args, s.op - ÓÉÍ×ÏÌ ÏÐÅÒÁÃÉÉ. á ËÁËÉÅ ÜÔÏ ÁÒÇÕÍÅÎÔÙ ÐÅÒ×ÙÊ É ×ÔÏÒÏÊ, ÉÌÉ
ÐÏÓÌÅÄÎÉÊ É ÐÒÅÄÐÏÓÌÅÄÎÉÊ?
|
(REF e.QualifiedName) |
e.QualifiedName' ÕÎÉËÁÌØÎÙÊ ÉÄÅÎÔÉÆÉËÁÔÏÒ C++ |
(VAR (e.QualifiedName)) |
e.QualifiedName' ÕÎÉËÁÌØÎÏÅ ÉÍÑ ÐÅÒÅÍÅÎÎÏÊ |
(LABEL (e.QualifiedName)) |
e.QualifiedName' ÕÎÉËÁÌØÎÏÅ ÉÍÑ ÍÅÔËÉ |
(e.QualifiedName) |
e.QualifiedName' ÕÎÉËÁÌØÎÙÊ ÉÄÅÎÔÉÆÉËÁÔÏÒ ó++ |