Skip to content

Commit

Permalink
Уточнение логики препроцессирования (#107)
Browse files Browse the repository at this point in the history
Теперь генерация Mu вызывается перед преобразованием в Базисный Рефал.
Во-первых, повышается корректность работы программы (ранее можно было
ошибочно вызвать функции типа F_check, которые генерируются трансформером
через функцию Mu, теперь нельзя). Во-вторых, незначительно повышается
производительность. На моей машине самоприменение ранее занимало 25,7 с,
после этой крошечной правки — 24,7 с. Причиной ускорения может быть
генерация более короткой функции Mu. Точных замеров и системные
характеристики тестовой среды не даю, поскольку цель не в оптимизации,
а уточнении логики.
  • Loading branch information
Mazdaywik committed Aug 9, 2017
1 parent 8e7c44f commit 6b4a0cc
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions src/compiler/Driver.sref
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@ $EXTERN R5-Scan;
//FROM R5-Parser
$EXTERN R5-Parse;

//FROM R5-Transformer
$EXTERN R5-Transform;

//FROM R5-MuGen
$EXTERN R5-AddMu;

//FROM R5-Transformer
$EXTERN R5-Transform;

//FROM R5-Plainer
$EXTERN R5-Plain;

Expand Down Expand Up @@ -117,14 +117,14 @@ R5-Parse-Wrapped {
#Fails e.Errors
= <MapReduce
{
t.ErrorList ((s.Line s.Col e.FileName) e.Message)
t.ErrorList^ ((s.Line s.Col e.FileName) e.Message)
= <EL-AddErrorAt
t.ErrorList
(#FileRowCol (s.Line s.Col) e.FileName)
e.Message
>;
}
<EL-Create e.SrcName>
t.ErrorList
e.Errors
>
/* пусто дерево */;
Expand All @@ -147,8 +147,8 @@ LoadAST {
t.Config #R5 e.SrcName
= <R5-Scan e.SrcName> : e.Tokens
= <R5-Parse-Wrapped (e.SrcName) e.Tokens> : t.ErrorList e.AST
= <R5-Transform e.AST> : e.AST^
= <R5-AddMu e.AST> : e.AST^
= <R5-Transform e.AST> : e.AST^
= <R5-Plain e.AST> : e.Lines
= <Map { (e.Line) = e.Line '\n'; } e.Lines> : e.SrcText
= <SR-LexFolding e.SrcText> : e.Tokens^
Expand Down

0 comments on commit 6b4a0cc

Please sign in to comment.