diff --git a/Compiler/Compiler.csproj b/Compiler/Compiler.csproj
index a4f355944..3796bd0e0 100644
--- a/Compiler/Compiler.csproj
+++ b/Compiler/Compiler.csproj
@@ -142,10 +142,6 @@
{613E0DDA-AA8A-437C-AC45-507B47429FF9}
{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
-
- {4d36d4ce-56fd-4bec-b846-d54b3a39ffd5}
- StandardSyntaxTreeConverter
-
{f10a5330-dcf4-4533-877c-7b1b1be23884}
SyntaxTreeConverters
diff --git a/PascalABCNET.axml b/PascalABCNET.axml
index cf3345811..0fb00bb55 100644
--- a/PascalABCNET.axml
+++ b/PascalABCNET.axml
@@ -1274,6 +1274,29 @@
+
+ \TreeConverter\TreeConversion\syntax_tree_visitor.cs
+ Обработка auto_type в assign_node
+ if (to.type is auto_type)
+
+ public override void visit ( SyntaxTree . assign _assign )
+ public partial class syntax_tree_visitor : SyntaxTree . WalkingVisitorNew
+ namespace PascalABCCompiler . TreeConverter
+
+
+
+
+
+ \TreeConverter\TreeConversion\syntax_tree_visitor.cs
+ public override void visit(SyntaxTree.yield_unknown_expression_type _unk_expr)
+
+ public override void visit ( SyntaxTree . yield_unknown_expression_type _unk_expr )
+ public partial class syntax_tree_visitor : SyntaxTree . WalkingVisitorNew
+ namespace PascalABCCompiler . TreeConverter
+
+
+
+
@@ -1391,6 +1414,20 @@
+
+ \standardsyntaxtreeconverter\standardsyntaxconverter.cs
+
+ public class StandardSyntaxTreeConverter : ISyntaxTreeConverter
+ namespace PascalABCCompiler . SyntaxTreeConverters
+
+
+
+
+ public string Name
+ =
+ public syntax_tree_node Convert ( syntax_tree_node root )
+
+
\Compiler\Compiler.cs
CurrentUnit.SyntaxTree = syntaxTreeConvertersController.Convert(CurrentUnit.SyntaxTree) as SyntaxTree.compilation_unit;
@@ -1449,20 +1486,6 @@
public syntax_tree_node Convert ( syntax_tree_node root )
-
- \standardsyntaxtreeconverter\standardsyntaxconverter.cs
-
- public class StandardSyntaxTreeConverter : ISyntaxTreeConverter
- namespace PascalABCCompiler . SyntaxTreeConverters
-
-
-
-
- public string Name
- =
- public syntax_tree_node Convert ( syntax_tree_node root )
-
-
diff --git a/PascalABCNET.sln b/PascalABCNET.sln
index 1d477cfa9..90b9fb39f 100644
--- a/PascalABCNET.sln
+++ b/PascalABCNET.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
-VisualStudioVersion = 14.0.25123.0
+VisualStudioVersion = 14.0.25420.1
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "VisualPascalABCNET", "VisualPascalABCNET", "{26843C5D-9D7E-4C2C-AC14-2D227FA5592E}"
EndProject
@@ -101,8 +101,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SyntaxVisitors", "SyntaxVis
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "YieldConversionSyntax", "Yield\YieldConversionSyntax\YieldConversionSyntax.csproj", "{276EE073-60F6-46D2-8811-1B8026BCAADA}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StandardSyntaxTreeConverter", "StandardSyntaxTreeConverter\StandardSyntaxTreeConverter.csproj", "{4D36D4CE-56FD-4BEC-B846-D54B3A39FFD5}"
-EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -455,18 +453,6 @@ Global
{276EE073-60F6-46D2-8811-1B8026BCAADA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{276EE073-60F6-46D2-8811-1B8026BCAADA}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{276EE073-60F6-46D2-8811-1B8026BCAADA}.Release|x86.ActiveCfg = Release|Any CPU
- {4D36D4CE-56FD-4BEC-B846-D54B3A39FFD5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {4D36D4CE-56FD-4BEC-B846-D54B3A39FFD5}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {4D36D4CE-56FD-4BEC-B846-D54B3A39FFD5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
- {4D36D4CE-56FD-4BEC-B846-D54B3A39FFD5}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
- {4D36D4CE-56FD-4BEC-B846-D54B3A39FFD5}.Debug|x86.ActiveCfg = Debug|Any CPU
- {4D36D4CE-56FD-4BEC-B846-D54B3A39FFD5}.Debug|x86.Build.0 = Debug|Any CPU
- {4D36D4CE-56FD-4BEC-B846-D54B3A39FFD5}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {4D36D4CE-56FD-4BEC-B846-D54B3A39FFD5}.Release|Any CPU.Build.0 = Release|Any CPU
- {4D36D4CE-56FD-4BEC-B846-D54B3A39FFD5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
- {4D36D4CE-56FD-4BEC-B846-D54B3A39FFD5}.Release|Mixed Platforms.Build.0 = Release|Any CPU
- {4D36D4CE-56FD-4BEC-B846-D54B3A39FFD5}.Release|x86.ActiveCfg = Release|Any CPU
- {4D36D4CE-56FD-4BEC-B846-D54B3A39FFD5}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -509,6 +495,5 @@ Global
{CE5C55C2-A11C-4E94-A9FA-3FC6CA3E4C09} = {F8CE2712-826B-450B-A72F-D32D80C99858}
{A9AB4282-83B4-41A7-86C3-E5BF6A45E7E2} = {F8CE2712-826B-450B-A72F-D32D80C99858}
{276EE073-60F6-46D2-8811-1B8026BCAADA} = {F8CE2712-826B-450B-A72F-D32D80C99858}
- {4D36D4CE-56FD-4BEC-B846-D54B3A39FFD5} = {F8CE2712-826B-450B-A72F-D32D80C99858}
EndGlobalSection
EndGlobal
diff --git a/StandardSyntaxTreeConverter/Properties/AssemblyInfo.cs b/StandardSyntaxTreeConverter/Properties/AssemblyInfo.cs
deleted file mode 100644
index 777a02981..000000000
--- a/StandardSyntaxTreeConverter/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// Управление общими сведениями о сборке осуществляется с помощью
-// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения,
-// связанные со сборкой.
-[assembly: AssemblyTitle("StandardSyntaxTreeConverter")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("StandardSyntaxTreeConverter")]
-[assembly: AssemblyCopyright("Copyright © 2016")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Параметр ComVisible со значением FALSE делает типы в сборке невидимыми
-// для COM-компонентов. Если требуется обратиться к типу в этой сборке через
-// COM, задайте атрибуту ComVisible значение TRUE для этого типа.
-[assembly: ComVisible(false)]
-
-// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM
-[assembly: Guid("4d36d4ce-56fd-4bec-b846-d54b3a39ffd5")]
-
-// Сведения о версии сборки состоят из следующих четырех значений:
-//
-// Основной номер версии
-// Дополнительный номер версии
-// Номер сборки
-// Редакция
-//
-// Можно задать все значения или принять номера сборки и редакции по умолчанию
-// используя "*", как показано ниже:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/StandardSyntaxTreeConverter/StandOutExprWithLambdaInForeachSequenceVisitor.cs b/StandardSyntaxTreeConverter/StandOutExprWithLambdaInForeachSequenceVisitor.cs
deleted file mode 100644
index b8acd68fc..000000000
--- a/StandardSyntaxTreeConverter/StandOutExprWithLambdaInForeachSequenceVisitor.cs
+++ /dev/null
@@ -1,38 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using PascalABCCompiler.SyntaxTree;
-
-public class StandOutExprWithLambdaInForeachSequenceVisitor : BaseChangeVisitor
-{
- public static StandOutExprWithLambdaInForeachSequenceVisitor New
- {
- get
- {
- return new StandOutExprWithLambdaInForeachSequenceVisitor();
- }
- }
-
- private int GenIdNum = 0;
- public ident GenIdentName()
- {
- GenIdNum++;
- return new ident("$GenContFE" + GenIdNum.ToString());
- }
-
- public override void visit(foreach_stmt fe)
- {
- if (fe.in_what.DescendantNodes().OfType().Count()>0)
- {
- var id = GenIdentName();
- id.Parent = fe;
- var ass = new var_statement(id, fe.in_what, fe.in_what.source_context);
- fe.in_what = id;
- var l = new List { ass,fe };
- ReplaceStatement(fe, l);
- }
-
- base.visit(fe);
- }
-
-}
diff --git a/StandardSyntaxTreeConverter/StandardSyntaxTreeConverter.csproj b/StandardSyntaxTreeConverter/StandardSyntaxTreeConverter.csproj
deleted file mode 100644
index ab4904d53..000000000
--- a/StandardSyntaxTreeConverter/StandardSyntaxTreeConverter.csproj
+++ /dev/null
@@ -1,72 +0,0 @@
-
-
-
-
- Debug
- AnyCPU
- {4D36D4CE-56FD-4BEC-B846-D54B3A39FFD5}
- Library
- Properties
- StandardSyntaxTreeConverter
- StandardSyntaxTreeConverter
- v4.0
- 512
-
-
- true
- full
- false
- ..\bin\
- DEBUG;TRACE
- prompt
- 4
-
-
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {f10a5330-dcf4-4533-877c-7b1b1be23884}
- SyntaxTreeConverters
-
-
- {c2cac65a-b2ae-4ccc-b067-e6b8e75df73a}
- SyntaxTree
-
-
- {a9ab4282-83b4-41a7-86c3-e5bf6a45e7e2}
- SyntaxVisitors
-
-
- {276ee073-60f6-46d2-8811-1b8026bcaada}
- YieldConversionSyntax
-
-
-
-
-
\ No newline at end of file
diff --git a/SyntaxTree/tree/Tree.cs b/SyntaxTree/tree/Tree.cs
index 817c918a5..4c4b8a588 100644
--- a/SyntaxTree/tree/Tree.cs
+++ b/SyntaxTree/tree/Tree.cs
@@ -37854,7 +37854,7 @@ namespace PascalABCCompiler.SyntaxTree
///
- ///Узел для вычисления типа выражения используемого в теле функции-итератора (с yield)
+ ///Узел для вычисления типа выражения используемого в теле функции-итератора (с yield). Используется для описаний всех переменных с автовыводом типов в теле yield: например, для var a := 1; Дело в том, что эти переменные становятся полями класса, а для описания полей класса нужен тип
///
[Serializable]
public partial class yield_unknown_expression_type : type_definition
diff --git a/SyntaxTree/tree/tree.nin b/SyntaxTree/tree/tree.nin
index facd12418..895c737c9 100644
Binary files a/SyntaxTree/tree/tree.nin and b/SyntaxTree/tree/tree.nin differ
diff --git a/SyntaxTreeConverters/AddStandardSyntaxConverters.cs b/SyntaxTreeConverters/AddStandardSyntaxConverters.cs
new file mode 100644
index 000000000..cbe5ecb55
--- /dev/null
+++ b/SyntaxTreeConverters/AddStandardSyntaxConverters.cs
@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace PascalABCCompiler.SyntaxTreeConverters
+{
+
+ class StandardSyntaxConverters: ISyntaxTreeConverter
+ {
+ public string Name { get; } = "Standard";
+ public syntax_tree_node Convert(syntax_tree_node root)
+ {
+ //var v = new SampleVisitor();
+ //v.ProcessNode(root);
+ return root;
+ }
+ }
+}
diff --git a/SyntaxTreeConverters/StandOutExprWithLambdaInForeachSequenceVisitor.cs b/SyntaxTreeConverters/StandOutExprWithLambdaInForeachSequenceVisitor.cs
new file mode 100644
index 000000000..31e46b73b
--- /dev/null
+++ b/SyntaxTreeConverters/StandOutExprWithLambdaInForeachSequenceVisitor.cs
@@ -0,0 +1,40 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using PascalABCCompiler.SyntaxTree;
+
+namespace PascalABCCompiler.SyntaxTreeConverters
+{
+ public class StandOutExprWithLambdaInForeachSequenceVisitor : BaseChangeVisitor
+ {
+ public static StandOutExprWithLambdaInForeachSequenceVisitor New
+ {
+ get
+ {
+ return new StandOutExprWithLambdaInForeachSequenceVisitor();
+ }
+ }
+
+ private int GenIdNum = 0;
+ public ident GenIdentName()
+ {
+ GenIdNum++;
+ return new ident("$GenContFE" + GenIdNum.ToString());
+ }
+
+ public override void visit(foreach_stmt fe)
+ {
+ if (fe.in_what.DescendantNodes().OfType().Count() > 0)
+ {
+ var id = GenIdentName();
+ id.Parent = fe;
+ var ass = new var_statement(id, fe.in_what, fe.in_what.source_context);
+ fe.in_what = id;
+ var l = new List { ass, fe };
+ ReplaceStatement(fe, l);
+ }
+
+ base.visit(fe);
+ }
+ }
+}
diff --git a/StandardSyntaxTreeConverter/StandardSyntaxConverter.cs b/SyntaxTreeConverters/StandardSyntaxConverter.cs
similarity index 95%
rename from StandardSyntaxTreeConverter/StandardSyntaxConverter.cs
rename to SyntaxTreeConverters/StandardSyntaxConverter.cs
index 667ae6e87..750dd5735 100644
--- a/StandardSyntaxTreeConverter/StandardSyntaxConverter.cs
+++ b/SyntaxTreeConverters/StandardSyntaxConverter.cs
@@ -32,10 +32,9 @@ namespace PascalABCCompiler.SyntaxTreeConverters
SliceDesugarVisitor.New.ProcessNode(root);
// Всё, связанное с yield
- root.visit(new MarkMethodHasYieldAndCheckSomeErrorsVisitor());
+ MarkMethodHasYieldAndCheckSomeErrorsVisitor.New.ProcessNode(root);
ProcessYieldCapturedVarsVisitor.New.ProcessNode(root);
-
return root;
}
}
diff --git a/SyntaxTreeConverters/SyntaxTreeConverters.csproj b/SyntaxTreeConverters/SyntaxTreeConverters.csproj
index d4200606f..ee4cd8d6f 100644
--- a/SyntaxTreeConverters/SyntaxTreeConverters.csproj
+++ b/SyntaxTreeConverters/SyntaxTreeConverters.csproj
@@ -36,6 +36,8 @@
+
+
@@ -50,6 +52,10 @@
{c2cac65a-b2ae-4ccc-b067-e6b8e75df73a}
SyntaxTree
+
+ {a9ab4282-83b4-41a7-86c3-e5bf6a45e7e2}
+ SyntaxVisitors
+