Перенес StandardSyntaxConverter.cs в проект SyntaxTreeConverters.csproj
This commit is contained in:
parent
a72a2c8bd3
commit
a14960b048
|
|
@ -142,10 +142,6 @@
|
||||||
<Project>{613E0DDA-AA8A-437C-AC45-507B47429FF9}</Project>
|
<Project>{613E0DDA-AA8A-437C-AC45-507B47429FF9}</Project>
|
||||||
<Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
|
<Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\StandardSyntaxTreeConverter\StandardSyntaxTreeConverter.csproj">
|
|
||||||
<Project>{4d36d4ce-56fd-4bec-b846-d54b3a39ffd5}</Project>
|
|
||||||
<Name>StandardSyntaxTreeConverter</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\SyntaxTreeConverters\SyntaxTreeConverters.csproj">
|
<ProjectReference Include="..\SyntaxTreeConverters\SyntaxTreeConverters.csproj">
|
||||||
<Project>{f10a5330-dcf4-4533-877c-7b1b1be23884}</Project>
|
<Project>{f10a5330-dcf4-4533-877c-7b1b1be23884}</Project>
|
||||||
<Name>SyntaxTreeConverters</Name>
|
<Name>SyntaxTreeConverters</Name>
|
||||||
|
|
|
||||||
|
|
@ -1274,6 +1274,29 @@
|
||||||
</i>
|
</i>
|
||||||
</OCtx>
|
</OCtx>
|
||||||
</Node>
|
</Node>
|
||||||
|
<Node ID="visit" Name="Обработка auto_type в assign_node" NL="0,8925781" NG="-1">
|
||||||
|
<FileName>\TreeConverter\TreeConversion\syntax_tree_visitor.cs</FileName>
|
||||||
|
<Note>Обработка auto_type в assign_node</Note>
|
||||||
|
<Text>if (to.type is auto_type)</Text>
|
||||||
|
<OCtx>
|
||||||
|
<i Type="Method">public override void visit ( SyntaxTree . assign _assign )</i>
|
||||||
|
<i Type="ClassOrNamespace">public partial class syntax_tree_visitor : SyntaxTree . WalkingVisitorNew</i>
|
||||||
|
<i Type="ClassOrNamespace">namespace PascalABCCompiler . TreeConverter</i>
|
||||||
|
<i Type="CS_TreeNode">
|
||||||
|
</i>
|
||||||
|
</OCtx>
|
||||||
|
</Node>
|
||||||
|
<Node ID="visit" Name="visit(SyntaxTree.yield_unknown_expression_type" NL="0,9160156" NG="-1">
|
||||||
|
<FileName>\TreeConverter\TreeConversion\syntax_tree_visitor.cs</FileName>
|
||||||
|
<Text>public override void visit(SyntaxTree.yield_unknown_expression_type _unk_expr)</Text>
|
||||||
|
<OCtx>
|
||||||
|
<i Type="Method">public override void visit ( SyntaxTree . yield_unknown_expression_type _unk_expr )</i>
|
||||||
|
<i Type="ClassOrNamespace">public partial class syntax_tree_visitor : SyntaxTree . WalkingVisitorNew</i>
|
||||||
|
<i Type="ClassOrNamespace">namespace PascalABCCompiler . TreeConverter</i>
|
||||||
|
<i Type="CS_TreeNode">
|
||||||
|
</i>
|
||||||
|
</OCtx>
|
||||||
|
</Node>
|
||||||
</Items>
|
</Items>
|
||||||
</Node>
|
</Node>
|
||||||
<Node Name="a.Sort((row1, row2) -> 1)" NL="0" NG="0">
|
<Node Name="a.Sort((row1, row2) -> 1)" NL="0" NG="0">
|
||||||
|
|
@ -1391,6 +1414,20 @@
|
||||||
</Node>
|
</Node>
|
||||||
<Node Name="Ядро преобраз-я синт. деревьев" NL="0" NG="0">
|
<Node Name="Ядро преобраз-я синт. деревьев" NL="0" NG="0">
|
||||||
<Items>
|
<Items>
|
||||||
|
<Node ID="StandardSyntaxTreeConverter" Name="StandardSyntaxTreeConverter" NL="-1" NG="0,2734375">
|
||||||
|
<FileName>\standardsyntaxtreeconverter\standardsyntaxconverter.cs</FileName>
|
||||||
|
<OCtx>
|
||||||
|
<i Type="ClassOrNamespace">public class StandardSyntaxTreeConverter : ISyntaxTreeConverter</i>
|
||||||
|
<i Type="ClassOrNamespace">namespace PascalABCCompiler . SyntaxTreeConverters</i>
|
||||||
|
<i Type="CS_TreeNode">
|
||||||
|
</i>
|
||||||
|
</OCtx>
|
||||||
|
<ICtx>
|
||||||
|
<i Type="Method">public string Name</i>
|
||||||
|
<i Type="Field">=</i>
|
||||||
|
<i Type="Method">public syntax_tree_node Convert ( syntax_tree_node root )</i>
|
||||||
|
</ICtx>
|
||||||
|
</Node>
|
||||||
<Node Name="SyntaxTree = Convert(SyntaxTree)" NL="0" NG="0">
|
<Node Name="SyntaxTree = Convert(SyntaxTree)" NL="0" NG="0">
|
||||||
<FileName>\Compiler\Compiler.cs</FileName>
|
<FileName>\Compiler\Compiler.cs</FileName>
|
||||||
<Text>CurrentUnit.SyntaxTree = syntaxTreeConvertersController.Convert(CurrentUnit.SyntaxTree) as SyntaxTree.compilation_unit;</Text>
|
<Text>CurrentUnit.SyntaxTree = syntaxTreeConvertersController.Convert(CurrentUnit.SyntaxTree) as SyntaxTree.compilation_unit;</Text>
|
||||||
|
|
@ -1449,20 +1486,6 @@
|
||||||
<i Type="Method">public syntax_tree_node Convert ( syntax_tree_node root )</i>
|
<i Type="Method">public syntax_tree_node Convert ( syntax_tree_node root )</i>
|
||||||
</ICtx>
|
</ICtx>
|
||||||
</Node>
|
</Node>
|
||||||
<Node ID="StandardSyntaxTreeConverter" Name="StandardSyntaxTreeConverter" NL="-1" NG="0,2734375">
|
|
||||||
<FileName>\standardsyntaxtreeconverter\standardsyntaxconverter.cs</FileName>
|
|
||||||
<OCtx>
|
|
||||||
<i Type="ClassOrNamespace">public class StandardSyntaxTreeConverter : ISyntaxTreeConverter</i>
|
|
||||||
<i Type="ClassOrNamespace">namespace PascalABCCompiler . SyntaxTreeConverters</i>
|
|
||||||
<i Type="CS_TreeNode">
|
|
||||||
</i>
|
|
||||||
</OCtx>
|
|
||||||
<ICtx>
|
|
||||||
<i Type="Method">public string Name</i>
|
|
||||||
<i Type="Field">=</i>
|
|
||||||
<i Type="Method">public syntax_tree_node Convert ( syntax_tree_node root )</i>
|
|
||||||
</ICtx>
|
|
||||||
</Node>
|
|
||||||
</Items>
|
</Items>
|
||||||
</Node>
|
</Node>
|
||||||
<Node Name="visit(SyntaxTree.dot_node" NL="0" NG="0">
|
<Node Name="visit(SyntaxTree.dot_node" NL="0" NG="0">
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
# Visual Studio 14
|
# Visual Studio 14
|
||||||
VisualStudioVersion = 14.0.25123.0
|
VisualStudioVersion = 14.0.25420.1
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "VisualPascalABCNET", "VisualPascalABCNET", "{26843C5D-9D7E-4C2C-AC14-2D227FA5592E}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "VisualPascalABCNET", "VisualPascalABCNET", "{26843C5D-9D7E-4C2C-AC14-2D227FA5592E}"
|
||||||
EndProject
|
EndProject
|
||||||
|
|
@ -101,8 +101,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SyntaxVisitors", "SyntaxVis
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "YieldConversionSyntax", "Yield\YieldConversionSyntax\YieldConversionSyntax.csproj", "{276EE073-60F6-46D2-8811-1B8026BCAADA}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "YieldConversionSyntax", "Yield\YieldConversionSyntax\YieldConversionSyntax.csproj", "{276EE073-60F6-46D2-8811-1B8026BCAADA}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StandardSyntaxTreeConverter", "StandardSyntaxTreeConverter\StandardSyntaxTreeConverter.csproj", "{4D36D4CE-56FD-4BEC-B846-D54B3A39FFD5}"
|
|
||||||
EndProject
|
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
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.ActiveCfg = Release|Any CPU
|
||||||
{276EE073-60F6-46D2-8811-1B8026BCAADA}.Release|Mixed Platforms.Build.0 = 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
|
{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
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
|
@ -509,6 +495,5 @@ Global
|
||||||
{CE5C55C2-A11C-4E94-A9FA-3FC6CA3E4C09} = {F8CE2712-826B-450B-A72F-D32D80C99858}
|
{CE5C55C2-A11C-4E94-A9FA-3FC6CA3E4C09} = {F8CE2712-826B-450B-A72F-D32D80C99858}
|
||||||
{A9AB4282-83B4-41A7-86C3-E5BF6A45E7E2} = {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}
|
{276EE073-60F6-46D2-8811-1B8026BCAADA} = {F8CE2712-826B-450B-A72F-D32D80C99858}
|
||||||
{4D36D4CE-56FD-4BEC-B846-D54B3A39FFD5} = {F8CE2712-826B-450B-A72F-D32D80C99858}
|
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
EndGlobal
|
EndGlobal
|
||||||
|
|
|
||||||
|
|
@ -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")]
|
|
||||||
|
|
@ -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<function_lambda_definition>().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<statement> { ass,fe };
|
|
||||||
ReplaceStatement(fe, l);
|
|
||||||
}
|
|
||||||
|
|
||||||
base.visit(fe);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,72 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
|
||||||
<PropertyGroup>
|
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
|
||||||
<ProjectGuid>{4D36D4CE-56FD-4BEC-B846-D54B3A39FFD5}</ProjectGuid>
|
|
||||||
<OutputType>Library</OutputType>
|
|
||||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
|
||||||
<RootNamespace>StandardSyntaxTreeConverter</RootNamespace>
|
|
||||||
<AssemblyName>StandardSyntaxTreeConverter</AssemblyName>
|
|
||||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
|
||||||
<FileAlignment>512</FileAlignment>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
|
||||||
<DebugSymbols>true</DebugSymbols>
|
|
||||||
<DebugType>full</DebugType>
|
|
||||||
<Optimize>false</Optimize>
|
|
||||||
<OutputPath>..\bin\</OutputPath>
|
|
||||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<WarningLevel>4</WarningLevel>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
|
||||||
<DebugType>pdbonly</DebugType>
|
|
||||||
<Optimize>true</Optimize>
|
|
||||||
<OutputPath>bin\Release\</OutputPath>
|
|
||||||
<DefineConstants>TRACE</DefineConstants>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<WarningLevel>4</WarningLevel>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Reference Include="System" />
|
|
||||||
<Reference Include="System.Core" />
|
|
||||||
<Reference Include="System.Xml.Linq" />
|
|
||||||
<Reference Include="System.Data.DataSetExtensions" />
|
|
||||||
<Reference Include="Microsoft.CSharp" />
|
|
||||||
<Reference Include="System.Data" />
|
|
||||||
<Reference Include="System.Xml" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
|
||||||
<Compile Include="StandardSyntaxConverter.cs" />
|
|
||||||
<Compile Include="StandOutExprWithLambdaInForeachSequenceVisitor.cs" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\SyntaxTreeConverters\SyntaxTreeConverters.csproj">
|
|
||||||
<Project>{f10a5330-dcf4-4533-877c-7b1b1be23884}</Project>
|
|
||||||
<Name>SyntaxTreeConverters</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\SyntaxTree\SyntaxTree.csproj">
|
|
||||||
<Project>{c2cac65a-b2ae-4ccc-b067-e6b8e75df73a}</Project>
|
|
||||||
<Name>SyntaxTree</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\SyntaxVisitors\SyntaxVisitors.csproj">
|
|
||||||
<Project>{a9ab4282-83b4-41a7-86c3-e5bf6a45e7e2}</Project>
|
|
||||||
<Name>SyntaxVisitors</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\Yield\YieldConversionSyntax\YieldConversionSyntax.csproj">
|
|
||||||
<Project>{276ee073-60f6-46d2-8811-1b8026bcaada}</Project>
|
|
||||||
<Name>YieldConversionSyntax</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
|
||||||
Other similar extension points exist, see Microsoft.Common.targets.
|
|
||||||
<Target Name="BeforeBuild">
|
|
||||||
</Target>
|
|
||||||
<Target Name="AfterBuild">
|
|
||||||
</Target>
|
|
||||||
-->
|
|
||||||
</Project>
|
|
||||||
|
|
@ -37854,7 +37854,7 @@ namespace PascalABCCompiler.SyntaxTree
|
||||||
|
|
||||||
|
|
||||||
///<summary>
|
///<summary>
|
||||||
///Узел для вычисления типа выражения используемого в теле функции-итератора (с yield)
|
///Узел для вычисления типа выражения используемого в теле функции-итератора (с yield). Используется для описаний всех переменных с автовыводом типов в теле yield: например, для var a := 1; Дело в том, что эти переменные становятся полями класса, а для описания полей класса нужен тип
|
||||||
///</summary>
|
///</summary>
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public partial class yield_unknown_expression_type : type_definition
|
public partial class yield_unknown_expression_type : type_definition
|
||||||
|
|
|
||||||
Binary file not shown.
19
SyntaxTreeConverters/AddStandardSyntaxConverters.cs
Normal file
19
SyntaxTreeConverters/AddStandardSyntaxConverters.cs
Normal file
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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<function_lambda_definition>().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<statement> { ass, fe };
|
||||||
|
ReplaceStatement(fe, l);
|
||||||
|
}
|
||||||
|
|
||||||
|
base.visit(fe);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -32,10 +32,9 @@ namespace PascalABCCompiler.SyntaxTreeConverters
|
||||||
SliceDesugarVisitor.New.ProcessNode(root);
|
SliceDesugarVisitor.New.ProcessNode(root);
|
||||||
|
|
||||||
// Всё, связанное с yield
|
// Всё, связанное с yield
|
||||||
root.visit(new MarkMethodHasYieldAndCheckSomeErrorsVisitor());
|
MarkMethodHasYieldAndCheckSomeErrorsVisitor.New.ProcessNode(root);
|
||||||
ProcessYieldCapturedVarsVisitor.New.ProcessNode(root);
|
ProcessYieldCapturedVarsVisitor.New.ProcessNode(root);
|
||||||
|
|
||||||
|
|
||||||
return root;
|
return root;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -36,6 +36,8 @@
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="ISyntaxTreeConverter.cs" />
|
<Compile Include="ISyntaxTreeConverter.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
<Compile Include="StandardSyntaxConverter.cs" />
|
||||||
|
<Compile Include="StandOutExprWithLambdaInForeachSequenceVisitor.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\Errors\Errors.csproj">
|
<ProjectReference Include="..\Errors\Errors.csproj">
|
||||||
|
|
@ -50,6 +52,10 @@
|
||||||
<Project>{c2cac65a-b2ae-4ccc-b067-e6b8e75df73a}</Project>
|
<Project>{c2cac65a-b2ae-4ccc-b067-e6b8e75df73a}</Project>
|
||||||
<Name>SyntaxTree</Name>
|
<Name>SyntaxTree</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\SyntaxVisitors\SyntaxVisitors.csproj">
|
||||||
|
<Project>{a9ab4282-83b4-41a7-86c3-e5bf6a45e7e2}</Project>
|
||||||
|
<Name>SyntaxVisitors</Name>
|
||||||
|
</ProjectReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,11 @@ namespace SyntaxVisitors
|
||||||
|
|
||||||
private Stack<procedure_definition> MethodsStack = new Stack<procedure_definition>();
|
private Stack<procedure_definition> MethodsStack = new Stack<procedure_definition>();
|
||||||
|
|
||||||
|
public static MarkMethodHasYieldAndCheckSomeErrorsVisitor New
|
||||||
|
{
|
||||||
|
get { return new MarkMethodHasYieldAndCheckSomeErrorsVisitor(); }
|
||||||
|
}
|
||||||
|
|
||||||
public override void visit(function_lambda_definition ld)
|
public override void visit(function_lambda_definition ld)
|
||||||
{
|
{
|
||||||
if (ld.DescendantNodes().OfType<yield_node>().Count() > 0)
|
if (ld.DescendantNodes().OfType<yield_node>().Count() > 0)
|
||||||
|
|
|
||||||
|
|
@ -19297,6 +19297,15 @@ namespace PascalABCCompiler.TreeConverter
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void visit(SyntaxTree.yield_node yn)
|
||||||
|
{
|
||||||
|
// надо что то сгенерировать, иначе выдается ложное предупреждение о недостижимом коде и проч.
|
||||||
|
/*var ass = new assign("Result", new nil_const());
|
||||||
|
visit(ass);
|
||||||
|
var pc = new procedure_call("exit");
|
||||||
|
visit(pc);*/
|
||||||
|
}
|
||||||
|
|
||||||
// frninja - захват полей класса для yield
|
// frninja - захват полей класса для yield
|
||||||
public override void visit(SyntaxTree.yield_unknown_ident _unk)
|
public override void visit(SyntaxTree.yield_unknown_ident _unk)
|
||||||
{
|
{
|
||||||
|
|
@ -19318,15 +19327,6 @@ namespace PascalABCCompiler.TreeConverter
|
||||||
t.visit(this);
|
t.visit(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void visit(SyntaxTree.yield_node yn)
|
|
||||||
{
|
|
||||||
// надо что то сгенерировать, иначе выдается ложное предупреждение о недостижимом коде и проч.
|
|
||||||
var ass = new assign("Result", new nil_const());
|
|
||||||
visit(ass);
|
|
||||||
var pc = new procedure_call("exit");
|
|
||||||
visit(pc);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*public SyntaxTree.question_colon_expression ConvertToQCE(dot_question_node dqn)
|
/*public SyntaxTree.question_colon_expression ConvertToQCE(dot_question_node dqn)
|
||||||
{
|
{
|
||||||
// Неверно работает. Пока не используется. Доделать
|
// Неверно работает. Пока не используется. Доделать
|
||||||
|
|
|
||||||
Binary file not shown.
Loading…
Reference in a new issue