Skip to content

Commit

Permalink
Рефакторинг функции IsLexpr (#229, #239)
Browse files Browse the repository at this point in the history
  • Loading branch information
Mazdaywik committed Aug 1, 2019
1 parent 6b73d07 commit e2b50a9
Showing 1 changed file with 22 additions and 27 deletions.
49 changes: 22 additions & 27 deletions src/compiler/OptTree-Drive.ref
Original file line number Diff line number Diff line change
Expand Up @@ -169,43 +169,38 @@ IsPassiveCall-Aux {

IsLexpr {
e.Expr
= <IsLexpr-Aux e.Expr ()> : ((e.Vars) t.Res)
= t.Res
, <IsLexpr-Aux e.Expr>
: {
e.Res-B OpenE e.Res-E = False;
e.Res-B (s.Mode e.Index) e.Res-M (s.Mode e.Index) e.Res-E = False;
e.Other = True;
}
}

/*
<IsLexpr-Aux e.Expr> == t.IsLexpr-Aux-Item*

t.IsLexpr-Aux-Item ::= OpenE | ('e' e.Index) | ('t' e.Index)
*/
IsLexpr-Aux {
e.B (TkVariable 'e' e.Index1)
e.M (TkVariable 'e' e.Index2)
e.E (e.ETVars)
= (() False);
e.Expr-B (TkVariable 'e' e.Index1) e.Expr-M (TkVariable 'e' e.Index2) e.Expr-E
= OpenE;

e.Expr (e.ETVars)
= <Reduce
e.Expr
= <Map
{
((e.Vars) True) t.Term = <IsLexpr-Term t.Term (e.Vars)>;
((e.Vars) False) t.Term = (() False);
(TkVariable 'e' e.Index) = ('e' e.Index);
(TkVariable 't' e.Index) = ('t' e.Index);

(Brackets e.InBrackets) = <IsLexpr-Aux e.InBrackets>;
(ADT-Brackets (e.Name) e.InBrackets) = <IsLexpr-Aux e.InBrackets>;

t.Other = /* пропускаем */;
}
((e.ETVars) True)
e.Expr
>;
}

IsLexpr-Term {
t.Term (e.B t.Term e.E)
, t.Term : (TkVariable 't' e.Index)
= (() False);

t.Term (e.B t.Term e.E)
, t.Term : (TkVariable 'e' e.Index)
= (() False);

(Brackets e.Expr) (e.ETVars) = <IsLexpr-Aux e.Expr (e.ETVars)>;

(ADT-Brackets e.Expr) (e.ETVars) = <IsLexpr-Aux e.Expr (e.ETVars)>;

t.Term (e.ETVars) = ((e.ETVars t.Term) True);
}

/*
Осуществляет попытку прогонки или встраивания в функции
<OptimizeF t.Function (t.DriveInfo) s.OptSentence> == t.Function*
Expand Down

0 comments on commit e2b50a9

Please sign in to comment.