lambda_any_type_node_syntax

This commit is contained in:
Mikhalkovich Stanislav 2023-05-31 10:06:04 +03:00
parent 8847baa0b1
commit 232f3a2238
7 changed files with 160 additions and 0 deletions

View file

@ -1302,6 +1302,11 @@ namespace PascalABCCompiler.SyntaxTree
{
DefaultVisit(_expression_with_let);
}
public virtual void visit(lambda_any_type_node_syntax _lambda_any_type_node_syntax)
{
DefaultVisit(_lambda_any_type_node_syntax);
}
}

View file

@ -2077,6 +2077,14 @@ namespace PascalABCCompiler.SyntaxTree
{
}
public virtual void pre_do_visit(lambda_any_type_node_syntax _lambda_any_type_node_syntax)
{
}
public virtual void post_do_visit(lambda_any_type_node_syntax _lambda_any_type_node_syntax)
{
}
public override void visit(expression _expression)
{
DefaultVisit(_expression);
@ -4293,6 +4301,13 @@ namespace PascalABCCompiler.SyntaxTree
visit(expression_with_let.expr);
post_do_visit(_expression_with_let);
}
public override void visit(lambda_any_type_node_syntax _lambda_any_type_node_syntax)
{
DefaultVisit(_lambda_any_type_node_syntax);
pre_do_visit(_lambda_any_type_node_syntax);
post_do_visit(_lambda_any_type_node_syntax);
}
}

View file

@ -538,6 +538,8 @@ namespace PascalABCCompiler.SyntaxTree
return new property_ident();
case 258:
return new expression_with_let();
case 259:
return new lambda_any_type_node_syntax();
}
return null;
}
@ -4519,6 +4521,17 @@ namespace PascalABCCompiler.SyntaxTree
_expression_with_let.expr = _read_node() as expression;
}
public void visit(lambda_any_type_node_syntax _lambda_any_type_node_syntax)
{
read_lambda_any_type_node_syntax(_lambda_any_type_node_syntax);
}
public void read_lambda_any_type_node_syntax(lambda_any_type_node_syntax _lambda_any_type_node_syntax)
{
read_expression(_lambda_any_type_node_syntax);
}
}

View file

@ -7101,6 +7101,18 @@ namespace PascalABCCompiler.SyntaxTree
}
}
public void visit(lambda_any_type_node_syntax _lambda_any_type_node_syntax)
{
bw.Write((Int16)259);
write_lambda_any_type_node_syntax(_lambda_any_type_node_syntax);
}
public void write_lambda_any_type_node_syntax(lambda_any_type_node_syntax _lambda_any_type_node_syntax)
{
write_expression(_lambda_any_type_node_syntax);
}
}

View file

@ -55417,6 +55417,106 @@ namespace PascalABCCompiler.SyntaxTree
}
///<summary>
///Marker. On semantic level becomes lambda_any_type_node in generic_conversions.SaveLambdasStates
///</summary>
[Serializable]
public partial class lambda_any_type_node_syntax : expression
{
///<summary>
///Конструктор без параметров.
///</summary>
public lambda_any_type_node_syntax()
{
}
/// <summary> Создает копию узла </summary>
public override syntax_tree_node Clone()
{
lambda_any_type_node_syntax copy = new lambda_any_type_node_syntax();
copy.Parent = this.Parent;
if (source_context != null)
copy.source_context = new SourceContext(source_context);
if (attributes != null)
{
copy.attributes = (attribute_list)attributes.Clone();
copy.attributes.Parent = copy;
}
return copy;
}
/// <summary> Получает копию данного узла корректного типа </summary>
public new lambda_any_type_node_syntax TypedClone()
{
return Clone() as lambda_any_type_node_syntax;
}
///<summary> Заполняет поля Parent в непосредственных дочерних узлах </summary>
public override void FillParentsInDirectChilds()
{
if (attributes != null)
attributes.Parent = this;
}
///<summary> Заполняет поля Parent во всем поддереве </summary>
public override void FillParentsInAllChilds()
{
FillParentsInDirectChilds();
attributes?.FillParentsInAllChilds();
}
///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List
///</summary>
public override Int32 subnodes_without_list_elements_count
{
get
{
return 0;
}
}
///<summary>
///Свойство для получения количества всех подузлов. Подузлом также считается каждый элемент поля типа List
///</summary>
public override Int32 subnodes_count
{
get
{
return 0;
}
}
///<summary>
///Индексатор для получения всех подузлов
///</summary>
public override syntax_tree_node this[Int32 ind]
{
get
{
if(subnodes_count == 0 || ind < 0 || ind > subnodes_count-1)
throw new IndexOutOfRangeException();
return null;
}
set
{
if(subnodes_count == 0 || ind < 0 || ind > subnodes_count-1)
throw new IndexOutOfRangeException();
}
}
///<summary>
///Метод для обхода дерева посетителем
///</summary>
///<param name="visitor">Объект-посетитель.</param>
///<returns>Return value is void</returns>
public override void visit(IVisitor visitor)
{
visitor.visit(this);
}
}
}

View file

@ -1558,6 +1558,12 @@ namespace PascalABCCompiler.SyntaxTree
///<param name="_expression_with_let">Node to visit</param>
///<returns> Return value is void </returns>
void visit(expression_with_let _expression_with_let);
///<summary>
///Method to visit lambda_any_type_node_syntax.
///</summary>
///<param name="_lambda_any_type_node_syntax">Node to visit</param>
///<returns> Return value is void </returns>
void visit(lambda_any_type_node_syntax _lambda_any_type_node_syntax);
}

View file

@ -3338,6 +3338,14 @@
<TagIndices />
</Tags>
</SyntaxNode>
<SyntaxNode Name="lambda_any_type_node_syntax" BaseName="expression">
<Fields />
<Methods />
<Tags>
<CategoryIndices />
<TagIndices />
</Tags>
</SyntaxNode>
</SyntaxNodes>
<Settings>
<FileName>Tree.cs</FileName>
@ -4089,6 +4097,7 @@
<HelpData Key="labeled_statement.to_statement" Value="" />
<HelpData Key="labelname_list" Value="" />
<HelpData Key="labelname_list.names" Value="" />
<HelpData Key="lambda_any_type_node_syntax" Value="Marker. On semantic level becomes lambda_any_type_node in generic_conversions.SaveLambdasStates" />
<HelpData Key="lambda_inferred_type" Value="" />
<HelpData Key="lambda_inferred_type._realType" Value="" />
<HelpData Key="lambda_inferred_type.realType" Value="" />