From 6d6e86d6b159281026cfca89bb119f5f3e2b5cab Mon Sep 17 00:00:00 2001 From: Oleg Batashov Date: Tue, 14 Jun 2016 04:09:58 +0300 Subject: [PATCH] Yield: some foreach helper nodes changed --- SyntaxTree/tree/HierarchyVisitor.cs | 2 - SyntaxTree/tree/SyntaxTreeStreamReader.cs | 2 - SyntaxTree/tree/SyntaxTreeStreamWriter.cs | 18 ---- SyntaxTree/tree/Tree.cs | 104 ++-------------------- SyntaxTree/tree/TreeHelper.cs | 57 ++++++++++++ SyntaxTree/tree/tree.nin | Bin 167703 -> 167623 bytes 6 files changed, 65 insertions(+), 118 deletions(-) diff --git a/SyntaxTree/tree/HierarchyVisitor.cs b/SyntaxTree/tree/HierarchyVisitor.cs index e36aa21c4..114c95f19 100644 --- a/SyntaxTree/tree/HierarchyVisitor.cs +++ b/SyntaxTree/tree/HierarchyVisitor.cs @@ -3606,7 +3606,6 @@ namespace PascalABCCompiler.SyntaxTree { DefaultVisit(_yield_unknown_foreach_type); pre_do_visit(_yield_unknown_foreach_type); - visit(yield_unknown_foreach_type.unknown_foreach); post_do_visit(_yield_unknown_foreach_type); } @@ -3614,7 +3613,6 @@ namespace PascalABCCompiler.SyntaxTree { DefaultVisit(_yield_unknown_foreach_type_ident); pre_do_visit(_yield_unknown_foreach_type_ident); - visit(yield_unknown_foreach_type_ident.unknown_foreach); post_do_visit(_yield_unknown_foreach_type_ident); } } diff --git a/SyntaxTree/tree/SyntaxTreeStreamReader.cs b/SyntaxTree/tree/SyntaxTreeStreamReader.cs index efc0d0a52..b6aab7323 100644 --- a/SyntaxTree/tree/SyntaxTreeStreamReader.cs +++ b/SyntaxTree/tree/SyntaxTreeStreamReader.cs @@ -3832,7 +3832,6 @@ namespace PascalABCCompiler.SyntaxTree public void read_yield_unknown_foreach_type(yield_unknown_foreach_type _yield_unknown_foreach_type) { read_type_definition(_yield_unknown_foreach_type); - _yield_unknown_foreach_type.unknown_foreach = _read_node() as foreach_stmt; } @@ -3844,7 +3843,6 @@ namespace PascalABCCompiler.SyntaxTree public void read_yield_unknown_foreach_type_ident(yield_unknown_foreach_type_ident _yield_unknown_foreach_type_ident) { read_ident(_yield_unknown_foreach_type_ident); - _yield_unknown_foreach_type_ident.unknown_foreach = _read_node() as foreach_stmt; } } diff --git a/SyntaxTree/tree/SyntaxTreeStreamWriter.cs b/SyntaxTree/tree/SyntaxTreeStreamWriter.cs index 4097e091a..6da79e841 100644 --- a/SyntaxTree/tree/SyntaxTreeStreamWriter.cs +++ b/SyntaxTree/tree/SyntaxTreeStreamWriter.cs @@ -5998,15 +5998,6 @@ namespace PascalABCCompiler.SyntaxTree public void write_yield_unknown_foreach_type(yield_unknown_foreach_type _yield_unknown_foreach_type) { write_type_definition(_yield_unknown_foreach_type); - if (_yield_unknown_foreach_type.unknown_foreach == null) - { - bw.Write((byte)0); - } - else - { - bw.Write((byte)1); - _yield_unknown_foreach_type.unknown_foreach.visit(this); - } } @@ -6019,15 +6010,6 @@ namespace PascalABCCompiler.SyntaxTree public void write_yield_unknown_foreach_type_ident(yield_unknown_foreach_type_ident _yield_unknown_foreach_type_ident) { write_ident(_yield_unknown_foreach_type_ident); - if (_yield_unknown_foreach_type_ident.unknown_foreach == null) - { - bw.Write((byte)0); - } - else - { - bw.Write((byte)1); - _yield_unknown_foreach_type_ident.unknown_foreach.visit(this); - } } } diff --git a/SyntaxTree/tree/Tree.cs b/SyntaxTree/tree/Tree.cs index 722fc06bf..ec283d662 100644 --- a/SyntaxTree/tree/Tree.cs +++ b/SyntaxTree/tree/Tree.cs @@ -31941,60 +31941,24 @@ namespace PascalABCCompiler.SyntaxTree } - /// - ///Конструктор с параметрами. - /// - public yield_unknown_foreach_type(foreach_stmt _unknown_foreach) - { - this._unknown_foreach=_unknown_foreach; - } /// ///Конструктор с параметрами. /// - public yield_unknown_foreach_type(foreach_stmt _unknown_foreach,SourceContext sc) - { - this._unknown_foreach=_unknown_foreach; - source_context = sc; - } - - /// - ///Конструктор с параметрами. - /// - public yield_unknown_foreach_type(type_definition_attr_list _attr_list,foreach_stmt _unknown_foreach) + public yield_unknown_foreach_type(type_definition_attr_list _attr_list) { this._attr_list=_attr_list; - this._unknown_foreach=_unknown_foreach; } /// ///Конструктор с параметрами. /// - public yield_unknown_foreach_type(type_definition_attr_list _attr_list,foreach_stmt _unknown_foreach,SourceContext sc) + public yield_unknown_foreach_type(type_definition_attr_list _attr_list,SourceContext sc) { this._attr_list=_attr_list; - this._unknown_foreach=_unknown_foreach; source_context = sc; } - protected foreach_stmt _unknown_foreach; - - /// - /// - /// - public foreach_stmt unknown_foreach - { - get - { - return _unknown_foreach; - } - set - { - _unknown_foreach=value; - } - } - - /// ///Свойство для получения количества всех подузлов без элементов поля типа List /// @@ -32002,7 +31966,7 @@ namespace PascalABCCompiler.SyntaxTree { get { - return 2; + return 1; } } /// @@ -32012,7 +31976,7 @@ namespace PascalABCCompiler.SyntaxTree { get { - return 2; + return 1; } } /// @@ -32028,8 +31992,6 @@ namespace PascalABCCompiler.SyntaxTree { case 0: return attr_list; - case 1: - return unknown_foreach; } return null; } @@ -32042,9 +32004,6 @@ namespace PascalABCCompiler.SyntaxTree case 0: attr_list = (type_definition_attr_list)value; break; - case 1: - unknown_foreach = (foreach_stmt)value; - break; } } } @@ -32076,60 +32035,24 @@ namespace PascalABCCompiler.SyntaxTree } - /// - ///Конструктор с параметрами. - /// - public yield_unknown_foreach_type_ident(foreach_stmt _unknown_foreach) - { - this._unknown_foreach=_unknown_foreach; - } /// ///Конструктор с параметрами. /// - public yield_unknown_foreach_type_ident(foreach_stmt _unknown_foreach,SourceContext sc) - { - this._unknown_foreach=_unknown_foreach; - source_context = sc; - } - - /// - ///Конструктор с параметрами. - /// - public yield_unknown_foreach_type_ident(string _name,foreach_stmt _unknown_foreach) + public yield_unknown_foreach_type_ident(string _name) { this._name=_name; - this._unknown_foreach=_unknown_foreach; } /// ///Конструктор с параметрами. /// - public yield_unknown_foreach_type_ident(string _name,foreach_stmt _unknown_foreach,SourceContext sc) + public yield_unknown_foreach_type_ident(string _name,SourceContext sc) { this._name=_name; - this._unknown_foreach=_unknown_foreach; source_context = sc; } - protected foreach_stmt _unknown_foreach; - - /// - /// - /// - public foreach_stmt unknown_foreach - { - get - { - return _unknown_foreach; - } - set - { - _unknown_foreach=value; - } - } - - /// ///Свойство для получения количества всех подузлов без элементов поля типа List /// @@ -32137,7 +32060,7 @@ namespace PascalABCCompiler.SyntaxTree { get { - return 1; + return 0; } } /// @@ -32147,7 +32070,7 @@ namespace PascalABCCompiler.SyntaxTree { get { - return 1; + return 0; } } /// @@ -32159,23 +32082,12 @@ namespace PascalABCCompiler.SyntaxTree { if(subnodes_count == 0 || ind < 0 || ind > subnodes_count-1) throw new IndexOutOfRangeException(); - switch(ind) - { - case 0: - return unknown_foreach; - } return null; } set { if(subnodes_count == 0 || ind < 0 || ind > subnodes_count-1) throw new IndexOutOfRangeException(); - switch(ind) - { - case 0: - unknown_foreach = (foreach_stmt)value; - break; - } } } /// diff --git a/SyntaxTree/tree/TreeHelper.cs b/SyntaxTree/tree/TreeHelper.cs index b1ef5d83e..38d5d804f 100644 --- a/SyntaxTree/tree/TreeHelper.cs +++ b/SyntaxTree/tree/TreeHelper.cs @@ -1494,6 +1494,63 @@ namespace PascalABCCompiler.SyntaxTree } } + public partial class yield_unknown_foreach_type : type_definition + { + protected foreach_stmt _unknown_foreach; + + public foreach_stmt unknown_foreach + { + get { return _unknown_foreach; } + set { _unknown_foreach = value; } + } + + /// + ///Конструктор с параметрами. + /// + public yield_unknown_foreach_type(foreach_stmt _unknown_foreach) + { + this._unknown_foreach = _unknown_foreach; + } + + /// + ///Конструктор с параметрами. + /// + public yield_unknown_foreach_type(foreach_stmt _unknown_foreach, SourceContext sc) + { + this._unknown_foreach = _unknown_foreach; + source_context = sc; + } + + } + + public partial class yield_unknown_foreach_type_ident : ident + { + protected foreach_stmt _unknown_foreach; + + public foreach_stmt unknown_foreach + { + get { return _unknown_foreach; } + set { _unknown_foreach = value; } + } + + /// + ///Конструктор с параметрами. + /// + public yield_unknown_foreach_type_ident(foreach_stmt _unknown_foreach) + { + this._unknown_foreach = _unknown_foreach; + } + + /// + ///Конструктор с параметрами. + /// + public yield_unknown_foreach_type_ident(foreach_stmt _unknown_foreach, SourceContext sc) + { + this._unknown_foreach = _unknown_foreach; + source_context = sc; + } + } + // end frninja diff --git a/SyntaxTree/tree/tree.nin b/SyntaxTree/tree/tree.nin index 67b886db7ec40944f6a661840338fff138bcbd4c..9215d8ecd9e3961de704ba2fb8696fb93c02ecc7 100644 GIT binary patch delta 6369 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 delta 6491 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