From df3274d578969e9dbd2472b4700de9a25d76c91c Mon Sep 17 00:00:00 2001 From: miks1965 Date: Thu, 12 Jan 2017 15:42:16 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=B2=20=D1=80=D0=B0=D1=81=D0=BF=D0=BE=D0=BB?= =?UTF-8?q?=D0=BE=D0=B6=D0=B5=D0=BD=D0=B8=D0=B8=20=D1=84=D0=B0=D0=B9=D0=BB?= =?UTF-8?q?=D0=BE=D0=B2=20=D0=B2=D0=B8=D0=B7=D0=B8=D1=82=D0=BE=D1=80=D0=BE?= =?UTF-8?q?=D0=B2,=20=D1=87=D0=B8=D1=81=D1=82=D0=BA=D0=B0=20=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D0=B5=D0=BA=D1=82=D0=B0=20=D0=BE=D1=82=20=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D1=83=D0=B6=D0=BD=D1=8B=D1=85=20references,=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D0=B5=D0=BA=D1=82=20YieldConversionSyntax=20=D1=83?= =?UTF-8?q?=D0=B6=D0=B5=20=D0=BD=D0=B5=20=D0=BD=D1=83=D0=B6=D0=B5=D0=BD=20?= =?UTF-8?q?-=20=D0=B2=D1=81=D0=B5=20=D0=B5=D0=B3=D0=BE=20=D0=B2=D0=B8?= =?UTF-8?q?=D0=B7=D0=B8=D1=82=D0=BE=D1=80=D1=8B=20=D0=BF=D0=BE=D0=B4=D0=BA?= =?UTF-8?q?=D0=BB=D1=8E=D1=87=D0=B0=D1=8E=D1=82=D1=81=D1=8F=20=D1=8F=D0=B2?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=B2=20StandardSyntaxConverter.cs,=20ObjectCop?= =?UTF-8?q?ier=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BD=D0=B5=D1=81=D0=B5=D0=BD=20?= =?UTF-8?q?=D0=B2=20=D0=BF=D0=BE=D0=B4=D0=BF=D0=B0=D0=BF=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SyntaxTreeConvertersController.cs | 2 +- ...ExprWithLambdaInForeachSequenceVisitor.cs} | 0 .../StandardSyntaxConverter.cs | 9 ++++++++- .../StandardSyntaxTreeConverter.csproj | 10 +++++++++- SyntaxVisitors/SyntaxVisitors.csproj | 11 +---------- .../SimplePrettyPrinterVisitor.cs | 5 ----- .../ObjectCopier}/ObjectCopier.cs | 0 .../YieldConversionSyntax.csproj | 4 ---- .../YieldDesugarSyntaxTreeConverter.cs | 4 ++-- bin/Lib/PABCRtl.dll | Bin 545280 -> 545280 bytes 10 files changed, 21 insertions(+), 24 deletions(-) rename StandardSyntaxTreeConverter/{StandOutExprWithLambdaInForeachSequenceConverter.cs => StandOutExprWithLambdaInForeachSequenceVisitor.cs} (100%) rename SyntaxVisitors/{ => YieldVisitors/ObjectCopier}/ObjectCopier.cs (100%) diff --git a/Compiler/SyntaxTreeConvertersController/SyntaxTreeConvertersController.cs b/Compiler/SyntaxTreeConvertersController/SyntaxTreeConvertersController.cs index 03513c023..df2aa2fa9 100644 --- a/Compiler/SyntaxTreeConvertersController/SyntaxTreeConvertersController.cs +++ b/Compiler/SyntaxTreeConvertersController/SyntaxTreeConvertersController.cs @@ -50,7 +50,7 @@ namespace PascalABCCompiler.SyntaxTreeConverters private void AddExternalConvertersAsPlugins(string DirectoryName) { DirectoryInfo di = new DirectoryInfo(DirectoryName); - List dllfiles = di.GetFiles("*ConversionSyntax.dll").ToList(); // Это только YieldConversionSyntax.dll + List dllfiles = di.GetFiles("*ConversionSyntaxExternal.dll").ToList(); // Это только YieldConversionSyntax.dll //List standartdllfile = di.GetFiles("StandardSyntaxTreeConverter.dll").ToList(); //if (standartdllfile.Count>0) // dllfiles.Insert(0, standartdllfile[0]); diff --git a/StandardSyntaxTreeConverter/StandOutExprWithLambdaInForeachSequenceConverter.cs b/StandardSyntaxTreeConverter/StandOutExprWithLambdaInForeachSequenceVisitor.cs similarity index 100% rename from StandardSyntaxTreeConverter/StandOutExprWithLambdaInForeachSequenceConverter.cs rename to StandardSyntaxTreeConverter/StandOutExprWithLambdaInForeachSequenceVisitor.cs diff --git a/StandardSyntaxTreeConverter/StandardSyntaxConverter.cs b/StandardSyntaxTreeConverter/StandardSyntaxConverter.cs index 3aaa415d3..f33eee345 100644 --- a/StandardSyntaxTreeConverter/StandardSyntaxConverter.cs +++ b/StandardSyntaxTreeConverter/StandardSyntaxConverter.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using PascalABCCompiler.SyntaxTree; +using SyntaxVisitors; namespace PascalABCCompiler.SyntaxTreeConverters { @@ -12,10 +13,16 @@ namespace PascalABCCompiler.SyntaxTreeConverters public syntax_tree_node Convert(syntax_tree_node root) { // Прошивание ссылками на Parent nodes. Должно идти первым + // FillParentNodeVisitor расположен в SyntaxTree/tree как базовый визитор, отвечающий за построение дерева FillParentNodeVisitor.New.ProcessNode(root); // Выносим выражения с лямбдами из заголовка foreach - StandOutExprWithLambdaInForeachSequenceVisitor.New.ProcessNode(root); + StandOutExprWithLambdaInForeachSequenceVisitor.New.ProcessNode(root); + + // Всё, связанное с yield + root.visit(new MarkMethodHasYieldAndCheckSomeErrorsVisitor()); + ProcessYieldCapturedVarsVisitor.New.ProcessNode(root); + return root; } diff --git a/StandardSyntaxTreeConverter/StandardSyntaxTreeConverter.csproj b/StandardSyntaxTreeConverter/StandardSyntaxTreeConverter.csproj index 81604fcc7..ab4904d53 100644 --- a/StandardSyntaxTreeConverter/StandardSyntaxTreeConverter.csproj +++ b/StandardSyntaxTreeConverter/StandardSyntaxTreeConverter.csproj @@ -41,7 +41,7 @@ - + @@ -52,6 +52,14 @@ {c2cac65a-b2ae-4ccc-b067-e6b8e75df73a} SyntaxTree + + {a9ab4282-83b4-41a7-86c3-e5bf6a45e7e2} + SyntaxVisitors + + + {276ee073-60f6-46d2-8811-1b8026bcaada} + YieldConversionSyntax +