From 9abe672601f7c7c8cd9550156ef30661679ffd2a Mon Sep 17 00:00:00 2001 From: Alexander Zakharenko Date: Mon, 10 Oct 2016 19:01:00 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D1=83=20=D0=BD=D0=B0?= =?UTF-8?q?=20null=20=D0=B2=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=D1=8B=20?= =?UTF-8?q?=D0=BA=D0=BB=D0=BE=D0=BD=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SyntaxTree/tree/NodesGenerator.exe | Bin 262144 -> 262144 bytes SyntaxTree/tree/Tree.cs | 4423 +++++++++++++++------- SyntaxTree/tree/TreeSubsidiary.cs | 9 +- SyntaxTree/tree/tree.nin | Bin 167752 -> 167752 bytes Utils/NodesGeneratorNew/NodeGenerator.cs | 55 +- 5 files changed, 3121 insertions(+), 1366 deletions(-) diff --git a/SyntaxTree/tree/NodesGenerator.exe b/SyntaxTree/tree/NodesGenerator.exe index fa72c9f0a82b3b8dbbcbc274d1b66a84ec7db340..d28a2b503dabdbb027d3a3605f689f11cfa864d3 100644 GIT binary patch delta 38259 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 I1`AL8AA+1KX8-^I delta 37730 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 diff --git a/SyntaxTree/tree/Tree.cs b/SyntaxTree/tree/Tree.cs index a83820634..db2cff8b4 100644 --- a/SyntaxTree/tree/Tree.cs +++ b/SyntaxTree/tree/Tree.cs @@ -59,7 +59,8 @@ namespace PascalABCCompiler.SyntaxTree { syntax_tree_node copy = new syntax_tree_node(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); + if (source_context != null) + copy.source_context = new SourceContext(source_context); return copy; } @@ -139,9 +140,13 @@ namespace PascalABCCompiler.SyntaxTree { expression copy = new expression(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; + 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; } @@ -221,9 +226,13 @@ namespace PascalABCCompiler.SyntaxTree { statement copy = new statement(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; + 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; } @@ -478,18 +487,30 @@ namespace PascalABCCompiler.SyntaxTree { statement_list copy = new statement_list(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - foreach (statement elem in subnodes) + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) { - copy.Add((statement)elem.Clone()); - copy.Last().Parent = copy; + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (subnodes != null) + foreach (statement elem in subnodes) + if (elem != null) + { + copy.Add((statement)elem.Clone()); + copy.Last().Parent = copy; + } + if (left_logical_bracket != null) + { + copy.left_logical_bracket = (token_info)left_logical_bracket.Clone(); + copy.left_logical_bracket.Parent = copy; + } + if (right_logical_bracket != null) + { + copy.right_logical_bracket = (token_info)right_logical_bracket.Clone(); + copy.right_logical_bracket.Parent = copy; } - copy.left_logical_bracket = (token_info)left_logical_bracket.Clone(); - copy.left_logical_bracket.Parent = copy; - copy.right_logical_bracket = (token_info)right_logical_bracket.Clone(); - copy.right_logical_bracket.Parent = copy; copy.expr_lambda_body = expr_lambda_body; return copy; } @@ -637,9 +658,13 @@ namespace PascalABCCompiler.SyntaxTree { ident copy = new ident(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } copy.name = name; return copy; } @@ -790,13 +815,23 @@ namespace PascalABCCompiler.SyntaxTree { assign copy = new assign(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.to = (addressed_value)to.Clone(); - copy.to.Parent = copy; - copy.from = (expression)from.Clone(); - copy.from.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (to != null) + { + copy.to = (addressed_value)to.Clone(); + copy.to.Parent = copy; + } + if (from != null) + { + copy.from = (expression)from.Clone(); + copy.from.Parent = copy; + } copy.operator_type = operator_type; return copy; } @@ -963,13 +998,23 @@ namespace PascalABCCompiler.SyntaxTree { bin_expr copy = new bin_expr(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.left = (expression)left.Clone(); - copy.left.Parent = copy; - copy.right = (expression)right.Clone(); - copy.right.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (left != null) + { + copy.left = (expression)left.Clone(); + copy.left.Parent = copy; + } + if (right != null) + { + copy.right = (expression)right.Clone(); + copy.right.Parent = copy; + } copy.operation_type = operation_type; return copy; } @@ -1118,11 +1163,18 @@ namespace PascalABCCompiler.SyntaxTree { un_expr copy = new un_expr(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.subnode = (expression)subnode.Clone(); - copy.subnode.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (subnode != null) + { + copy.subnode = (expression)subnode.Clone(); + copy.subnode.Parent = copy; + } copy.operation_type = operation_type; return copy; } @@ -1214,9 +1266,13 @@ namespace PascalABCCompiler.SyntaxTree { const_node copy = new const_node(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; + 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; } @@ -1330,9 +1386,13 @@ namespace PascalABCCompiler.SyntaxTree { bool_const copy = new bool_const(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } copy.val = val; return copy; } @@ -1447,9 +1507,13 @@ namespace PascalABCCompiler.SyntaxTree { int32_const copy = new int32_const(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } copy.val = val; return copy; } @@ -1564,9 +1628,13 @@ namespace PascalABCCompiler.SyntaxTree { double_const copy = new double_const(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } copy.val = val; return copy; } @@ -1699,11 +1767,18 @@ namespace PascalABCCompiler.SyntaxTree { subprogram_body copy = new subprogram_body(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.subprogram_code = (statement_list)subprogram_code.Clone(); - copy.subprogram_code.Parent = copy; - copy.subprogram_defs = (declarations)subprogram_defs.Clone(); - copy.subprogram_defs.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (subprogram_code != null) + { + copy.subprogram_code = (statement_list)subprogram_code.Clone(); + copy.subprogram_code.Parent = copy; + } + if (subprogram_defs != null) + { + copy.subprogram_defs = (declarations)subprogram_defs.Clone(); + copy.subprogram_defs.Parent = copy; + } return copy; } @@ -1799,9 +1874,13 @@ namespace PascalABCCompiler.SyntaxTree { addressed_value copy = new addressed_value(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; + 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; } @@ -1915,11 +1994,18 @@ namespace PascalABCCompiler.SyntaxTree { type_definition copy = new type_definition(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.attr_list = (type_definition_attr_list)attr_list.Clone(); - copy.attr_list.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (attr_list != null) + { + copy.attr_list = (type_definition_attr_list)attr_list.Clone(); + copy.attr_list.Parent = copy; + } return copy; } @@ -2027,11 +2113,18 @@ namespace PascalABCCompiler.SyntaxTree { roof_dereference copy = new roof_dereference(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.dereferencing_value = (addressed_value)dereferencing_value.Clone(); - copy.dereferencing_value.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (dereferencing_value != null) + { + copy.dereferencing_value = (addressed_value)dereferencing_value.Clone(); + copy.dereferencing_value.Parent = copy; + } return copy; } @@ -2262,16 +2355,25 @@ namespace PascalABCCompiler.SyntaxTree { named_type_reference copy = new named_type_reference(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.attr_list = (type_definition_attr_list)attr_list.Clone(); - copy.attr_list.Parent = copy; - foreach (ident elem in names) + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) { - copy.Add((ident)elem.Clone()); - copy.Last().Parent = copy; + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; } + if (attr_list != null) + { + copy.attr_list = (type_definition_attr_list)attr_list.Clone(); + copy.attr_list.Parent = copy; + } + if (names != null) + foreach (ident elem in names) + if (elem != null) + { + copy.Add((ident)elem.Clone()); + copy.Last().Parent = copy; + } return copy; } @@ -2500,14 +2602,20 @@ namespace PascalABCCompiler.SyntaxTree { variable_definitions copy = new variable_definitions(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - foreach (var_def_statement elem in var_definitions) + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) { - copy.Add((var_def_statement)elem.Clone()); - copy.Last().Parent = copy; + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; } + if (var_definitions != null) + foreach (var_def_statement elem in var_definitions) + if (elem != null) + { + copy.Add((var_def_statement)elem.Clone()); + copy.Last().Parent = copy; + } return copy; } @@ -2725,12 +2833,15 @@ namespace PascalABCCompiler.SyntaxTree { ident_list copy = new ident_list(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - foreach (ident elem in idents) - { - copy.Add((ident)elem.Clone()); - copy.Last().Parent = copy; - } + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (idents != null) + foreach (ident elem in idents) + if (elem != null) + { + copy.Add((ident)elem.Clone()); + copy.Last().Parent = copy; + } return copy; } @@ -2934,15 +3045,28 @@ namespace PascalABCCompiler.SyntaxTree { var_def_statement copy = new var_def_statement(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.vars = (ident_list)vars.Clone(); - copy.vars.Parent = copy; - copy.vars_type = (type_definition)vars_type.Clone(); - copy.vars_type.Parent = copy; - copy.inital_value = (expression)inital_value.Clone(); - copy.inital_value.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (vars != null) + { + copy.vars = (ident_list)vars.Clone(); + copy.vars.Parent = copy; + } + if (vars_type != null) + { + copy.vars_type = (type_definition)vars_type.Clone(); + copy.vars_type.Parent = copy; + } + if (inital_value != null) + { + copy.inital_value = (expression)inital_value.Clone(); + copy.inital_value.Parent = copy; + } copy.var_attr = var_attr; copy.is_event = is_event; return copy; @@ -3079,9 +3203,13 @@ namespace PascalABCCompiler.SyntaxTree { declaration copy = new declaration(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; + 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; } @@ -3293,12 +3421,15 @@ namespace PascalABCCompiler.SyntaxTree { declarations copy = new declarations(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - foreach (declaration elem in defs) - { - copy.Add((declaration)elem.Clone()); - copy.Last().Parent = copy; - } + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (defs != null) + foreach (declaration elem in defs) + if (elem != null) + { + copy.Add((declaration)elem.Clone()); + copy.Last().Parent = copy; + } return copy; } @@ -3516,12 +3647,15 @@ namespace PascalABCCompiler.SyntaxTree { program_tree copy = new program_tree(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - foreach (compilation_unit elem in compilation_units) - { - copy.Add((compilation_unit)elem.Clone()); - copy.Last().Parent = copy; - } + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (compilation_units != null) + foreach (compilation_unit elem in compilation_units) + if (elem != null) + { + copy.Add((compilation_unit)elem.Clone()); + copy.Last().Parent = copy; + } return copy; } @@ -3652,9 +3786,13 @@ namespace PascalABCCompiler.SyntaxTree { program_name copy = new program_name(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.prog_name = (ident)prog_name.Clone(); - copy.prog_name.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (prog_name != null) + { + copy.prog_name = (ident)prog_name.Clone(); + copy.prog_name.Parent = copy; + } return copy; } @@ -3779,9 +3917,13 @@ namespace PascalABCCompiler.SyntaxTree { string_const copy = new string_const(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } copy.Value = Value; return copy; } @@ -3983,12 +4125,15 @@ namespace PascalABCCompiler.SyntaxTree { expression_list copy = new expression_list(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - foreach (expression elem in expressions) - { - copy.Add((expression)elem.Clone()); - copy.Last().Parent = copy; - } + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (expressions != null) + foreach (expression elem in expressions) + if (elem != null) + { + copy.Add((expression)elem.Clone()); + copy.Last().Parent = copy; + } return copy; } @@ -4119,11 +4264,18 @@ namespace PascalABCCompiler.SyntaxTree { dereference copy = new dereference(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.dereferencing_value = (addressed_value)dereferencing_value.Clone(); - copy.dereferencing_value.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (dereferencing_value != null) + { + copy.dereferencing_value = (addressed_value)dereferencing_value.Clone(); + copy.dereferencing_value.Parent = copy; + } return copy; } @@ -4267,13 +4419,23 @@ namespace PascalABCCompiler.SyntaxTree { indexer copy = new indexer(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.dereferencing_value = (addressed_value)dereferencing_value.Clone(); - copy.dereferencing_value.Parent = copy; - copy.indexes = (expression_list)indexes.Clone(); - copy.indexes.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (dereferencing_value != null) + { + copy.dereferencing_value = (addressed_value)dereferencing_value.Clone(); + copy.dereferencing_value.Parent = copy; + } + if (indexes != null) + { + copy.indexes = (expression_list)indexes.Clone(); + copy.indexes.Parent = copy; + } return copy; } @@ -4529,22 +4691,44 @@ namespace PascalABCCompiler.SyntaxTree { for_node copy = new for_node(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.loop_variable = (ident)loop_variable.Clone(); - copy.loop_variable.Parent = copy; - copy.initial_value = (expression)initial_value.Clone(); - copy.initial_value.Parent = copy; - copy.finish_value = (expression)finish_value.Clone(); - copy.finish_value.Parent = copy; - copy.statements = (statement)statements.Clone(); - copy.statements.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (loop_variable != null) + { + copy.loop_variable = (ident)loop_variable.Clone(); + copy.loop_variable.Parent = copy; + } + if (initial_value != null) + { + copy.initial_value = (expression)initial_value.Clone(); + copy.initial_value.Parent = copy; + } + if (finish_value != null) + { + copy.finish_value = (expression)finish_value.Clone(); + copy.finish_value.Parent = copy; + } + if (statements != null) + { + copy.statements = (statement)statements.Clone(); + copy.statements.Parent = copy; + } copy.cycle_type = cycle_type; - copy.increment_value = (expression)increment_value.Clone(); - copy.increment_value.Parent = copy; - copy.type_name = (type_definition)type_name.Clone(); - copy.type_name.Parent = copy; + if (increment_value != null) + { + copy.increment_value = (expression)increment_value.Clone(); + copy.increment_value.Parent = copy; + } + if (type_name != null) + { + copy.type_name = (type_definition)type_name.Clone(); + copy.type_name.Parent = copy; + } copy.create_loop_variable = create_loop_variable; return copy; } @@ -4713,13 +4897,23 @@ namespace PascalABCCompiler.SyntaxTree { repeat_node copy = new repeat_node(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.statements = (statement)statements.Clone(); - copy.statements.Parent = copy; - copy.expr = (expression)expr.Clone(); - copy.expr.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (statements != null) + { + copy.statements = (statement)statements.Clone(); + copy.statements.Parent = copy; + } + if (expr != null) + { + copy.expr = (expression)expr.Clone(); + copy.expr.Parent = copy; + } return copy; } @@ -4885,13 +5079,23 @@ namespace PascalABCCompiler.SyntaxTree { while_node copy = new while_node(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.expr = (expression)expr.Clone(); - copy.expr.Parent = copy; - copy.statements = (statement)statements.Clone(); - copy.statements.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (expr != null) + { + copy.expr = (expression)expr.Clone(); + copy.expr.Parent = copy; + } + if (statements != null) + { + copy.statements = (statement)statements.Clone(); + copy.statements.Parent = copy; + } copy.CycleType = CycleType; return copy; } @@ -5058,15 +5262,28 @@ namespace PascalABCCompiler.SyntaxTree { if_node copy = new if_node(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.condition = (expression)condition.Clone(); - copy.condition.Parent = copy; - copy.then_body = (statement)then_body.Clone(); - copy.then_body.Parent = copy; - copy.else_body = (statement)else_body.Clone(); - copy.else_body.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (condition != null) + { + copy.condition = (expression)condition.Clone(); + copy.condition.Parent = copy; + } + if (then_body != null) + { + copy.then_body = (statement)then_body.Clone(); + copy.then_body.Parent = copy; + } + if (else_body != null) + { + copy.else_body = (statement)else_body.Clone(); + copy.else_body.Parent = copy; + } return copy; } @@ -5220,13 +5437,23 @@ namespace PascalABCCompiler.SyntaxTree { ref_type copy = new ref_type(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.attr_list = (type_definition_attr_list)attr_list.Clone(); - copy.attr_list.Parent = copy; - copy.pointed_to = (type_definition)pointed_to.Clone(); - copy.pointed_to.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (attr_list != null) + { + copy.attr_list = (type_definition_attr_list)attr_list.Clone(); + copy.attr_list.Parent = copy; + } + if (pointed_to != null) + { + copy.pointed_to = (type_definition)pointed_to.Clone(); + copy.pointed_to.Parent = copy; + } return copy; } @@ -5395,15 +5622,28 @@ namespace PascalABCCompiler.SyntaxTree { diapason copy = new diapason(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.attr_list = (type_definition_attr_list)attr_list.Clone(); - copy.attr_list.Parent = copy; - copy.left = (expression)left.Clone(); - copy.left.Parent = copy; - copy.right = (expression)right.Clone(); - copy.right.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (attr_list != null) + { + copy.attr_list = (type_definition_attr_list)attr_list.Clone(); + copy.attr_list.Parent = copy; + } + if (left != null) + { + copy.left = (expression)left.Clone(); + copy.left.Parent = copy; + } + if (right != null) + { + copy.right = (expression)right.Clone(); + copy.right.Parent = copy; + } return copy; } @@ -5644,16 +5884,25 @@ namespace PascalABCCompiler.SyntaxTree { indexers_types copy = new indexers_types(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.attr_list = (type_definition_attr_list)attr_list.Clone(); - copy.attr_list.Parent = copy; - foreach (type_definition elem in indexers) + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) { - copy.Add((type_definition)elem.Clone()); - copy.Last().Parent = copy; + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; } + if (attr_list != null) + { + copy.attr_list = (type_definition_attr_list)attr_list.Clone(); + copy.attr_list.Parent = copy; + } + if (indexers != null) + foreach (type_definition elem in indexers) + if (elem != null) + { + copy.Add((type_definition)elem.Clone()); + copy.Last().Parent = copy; + } return copy; } @@ -5834,15 +6083,28 @@ namespace PascalABCCompiler.SyntaxTree { array_type copy = new array_type(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.attr_list = (type_definition_attr_list)attr_list.Clone(); - copy.attr_list.Parent = copy; - copy.indexers = (indexers_types)indexers.Clone(); - copy.indexers.Parent = copy; - copy.elements_type = (type_definition)elements_type.Clone(); - copy.elements_type.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (attr_list != null) + { + copy.attr_list = (type_definition_attr_list)attr_list.Clone(); + copy.attr_list.Parent = copy; + } + if (indexers != null) + { + copy.indexers = (indexers_types)indexers.Clone(); + copy.indexers.Parent = copy; + } + if (elements_type != null) + { + copy.elements_type = (type_definition)elements_type.Clone(); + copy.elements_type.Parent = copy; + } return copy; } @@ -5977,11 +6239,18 @@ namespace PascalABCCompiler.SyntaxTree { label_definitions copy = new label_definitions(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.labels = (ident_list)labels.Clone(); - copy.labels.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (labels != null) + { + copy.labels = (ident_list)labels.Clone(); + copy.labels.Parent = copy; + } return copy; } @@ -6125,9 +6394,13 @@ namespace PascalABCCompiler.SyntaxTree { procedure_attribute copy = new procedure_attribute(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } copy.name = name; copy.attribute_type = attribute_type; return copy; @@ -6297,16 +6570,29 @@ namespace PascalABCCompiler.SyntaxTree { typed_parameters copy = new typed_parameters(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.idents = (ident_list)idents.Clone(); - copy.idents.Parent = copy; - copy.vars_type = (type_definition)vars_type.Clone(); - copy.vars_type.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (idents != null) + { + copy.idents = (ident_list)idents.Clone(); + copy.idents.Parent = copy; + } + if (vars_type != null) + { + copy.vars_type = (type_definition)vars_type.Clone(); + copy.vars_type.Parent = copy; + } copy.param_kind = param_kind; - copy.inital_value = (expression)inital_value.Clone(); - copy.inital_value.Parent = copy; + if (inital_value != null) + { + copy.inital_value = (expression)inital_value.Clone(); + copy.inital_value.Parent = copy; + } return copy; } @@ -6528,12 +6814,15 @@ namespace PascalABCCompiler.SyntaxTree { formal_parameters copy = new formal_parameters(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - foreach (typed_parameters elem in params_list) - { - copy.Add((typed_parameters)elem.Clone()); - copy.Last().Parent = copy; - } + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (params_list != null) + foreach (typed_parameters elem in params_list) + if (elem != null) + { + copy.Add((typed_parameters)elem.Clone()); + copy.Last().Parent = copy; + } return copy; } @@ -6751,12 +7040,15 @@ namespace PascalABCCompiler.SyntaxTree { procedure_attributes_list copy = new procedure_attributes_list(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - foreach (procedure_attribute elem in proc_attributes) - { - copy.Add((procedure_attribute)elem.Clone()); - copy.Last().Parent = copy; - } + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (proc_attributes != null) + foreach (procedure_attribute elem in proc_attributes) + if (elem != null) + { + copy.Add((procedure_attribute)elem.Clone()); + copy.Last().Parent = copy; + } return copy; } @@ -7026,23 +7318,45 @@ namespace PascalABCCompiler.SyntaxTree { procedure_header copy = new procedure_header(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.attr_list = (type_definition_attr_list)attr_list.Clone(); - copy.attr_list.Parent = copy; - copy.parameters = (formal_parameters)parameters.Clone(); - copy.parameters.Parent = copy; - copy.proc_attributes = (procedure_attributes_list)proc_attributes.Clone(); - copy.proc_attributes.Parent = copy; - copy.name = (method_name)name.Clone(); - copy.name.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (attr_list != null) + { + copy.attr_list = (type_definition_attr_list)attr_list.Clone(); + copy.attr_list.Parent = copy; + } + if (parameters != null) + { + copy.parameters = (formal_parameters)parameters.Clone(); + copy.parameters.Parent = copy; + } + if (proc_attributes != null) + { + copy.proc_attributes = (procedure_attributes_list)proc_attributes.Clone(); + copy.proc_attributes.Parent = copy; + } + if (name != null) + { + copy.name = (method_name)name.Clone(); + copy.name.Parent = copy; + } copy.of_object = of_object; copy.class_keyword = class_keyword; - copy.template_args = (ident_list)template_args.Clone(); - copy.template_args.Parent = copy; - copy.where_defs = (where_definition_list)where_defs.Clone(); - copy.where_defs.Parent = copy; + if (template_args != null) + { + copy.template_args = (ident_list)template_args.Clone(); + copy.template_args.Parent = copy; + } + if (where_defs != null) + { + copy.where_defs = (where_definition_list)where_defs.Clone(); + copy.where_defs.Parent = copy; + } return copy; } @@ -7225,25 +7539,50 @@ namespace PascalABCCompiler.SyntaxTree { function_header copy = new function_header(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.attr_list = (type_definition_attr_list)attr_list.Clone(); - copy.attr_list.Parent = copy; - copy.parameters = (formal_parameters)parameters.Clone(); - copy.parameters.Parent = copy; - copy.proc_attributes = (procedure_attributes_list)proc_attributes.Clone(); - copy.proc_attributes.Parent = copy; - copy.name = (method_name)name.Clone(); - copy.name.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (attr_list != null) + { + copy.attr_list = (type_definition_attr_list)attr_list.Clone(); + copy.attr_list.Parent = copy; + } + if (parameters != null) + { + copy.parameters = (formal_parameters)parameters.Clone(); + copy.parameters.Parent = copy; + } + if (proc_attributes != null) + { + copy.proc_attributes = (procedure_attributes_list)proc_attributes.Clone(); + copy.proc_attributes.Parent = copy; + } + if (name != null) + { + copy.name = (method_name)name.Clone(); + copy.name.Parent = copy; + } copy.of_object = of_object; copy.class_keyword = class_keyword; - copy.template_args = (ident_list)template_args.Clone(); - copy.template_args.Parent = copy; - copy.where_defs = (where_definition_list)where_defs.Clone(); - copy.where_defs.Parent = copy; - copy.return_type = (type_definition)return_type.Clone(); - copy.return_type.Parent = copy; + if (template_args != null) + { + copy.template_args = (ident_list)template_args.Clone(); + copy.template_args.Parent = copy; + } + if (where_defs != null) + { + copy.where_defs = (where_definition_list)where_defs.Clone(); + copy.where_defs.Parent = copy; + } + if (return_type != null) + { + copy.return_type = (type_definition)return_type.Clone(); + copy.return_type.Parent = copy; + } return copy; } @@ -7434,13 +7773,23 @@ namespace PascalABCCompiler.SyntaxTree { procedure_definition copy = new procedure_definition(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.proc_header = (procedure_header)proc_header.Clone(); - copy.proc_header.Parent = copy; - copy.proc_body = (proc_block)proc_body.Clone(); - copy.proc_body.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (proc_header != null) + { + copy.proc_header = (procedure_header)proc_header.Clone(); + copy.proc_header.Parent = copy; + } + if (proc_body != null) + { + copy.proc_body = (proc_block)proc_body.Clone(); + copy.proc_body.Parent = copy; + } copy.is_short_definition = is_short_definition; return copy; } @@ -7589,13 +7938,23 @@ namespace PascalABCCompiler.SyntaxTree { type_declaration copy = new type_declaration(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.type_name = (ident)type_name.Clone(); - copy.type_name.Parent = copy; - copy.type_def = (type_definition)type_def.Clone(); - copy.type_def.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (type_name != null) + { + copy.type_name = (ident)type_name.Clone(); + copy.type_name.Parent = copy; + } + if (type_def != null) + { + copy.type_def = (type_definition)type_def.Clone(); + copy.type_def.Parent = copy; + } return copy; } @@ -7812,14 +8171,20 @@ namespace PascalABCCompiler.SyntaxTree { type_declarations copy = new type_declarations(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - foreach (type_declaration elem in types_decl) + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) { - copy.Add((type_declaration)elem.Clone()); - copy.Last().Parent = copy; + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; } + if (types_decl != null) + foreach (type_declaration elem in types_decl) + if (elem != null) + { + copy.Add((type_declaration)elem.Clone()); + copy.Last().Parent = copy; + } return copy; } @@ -7935,13 +8300,23 @@ namespace PascalABCCompiler.SyntaxTree { simple_const_definition copy = new simple_const_definition(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.const_name = (ident)const_name.Clone(); - copy.const_name.Parent = copy; - copy.const_value = (expression)const_value.Clone(); - copy.const_value.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (const_name != null) + { + copy.const_name = (ident)const_name.Clone(); + copy.const_name.Parent = copy; + } + if (const_value != null) + { + copy.const_value = (expression)const_value.Clone(); + copy.const_value.Parent = copy; + } return copy; } @@ -8092,15 +8467,28 @@ namespace PascalABCCompiler.SyntaxTree { typed_const_definition copy = new typed_const_definition(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.const_name = (ident)const_name.Clone(); - copy.const_name.Parent = copy; - copy.const_value = (expression)const_value.Clone(); - copy.const_value.Parent = copy; - copy.const_type = (type_definition)const_type.Clone(); - copy.const_type.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (const_name != null) + { + copy.const_name = (ident)const_name.Clone(); + copy.const_name.Parent = copy; + } + if (const_value != null) + { + copy.const_value = (expression)const_value.Clone(); + copy.const_value.Parent = copy; + } + if (const_type != null) + { + copy.const_type = (type_definition)const_type.Clone(); + copy.const_type.Parent = copy; + } return copy; } @@ -8253,13 +8641,23 @@ namespace PascalABCCompiler.SyntaxTree { const_definition copy = new const_definition(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.const_name = (ident)const_name.Clone(); - copy.const_name.Parent = copy; - copy.const_value = (expression)const_value.Clone(); - copy.const_value.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (const_name != null) + { + copy.const_name = (ident)const_name.Clone(); + copy.const_name.Parent = copy; + } + if (const_value != null) + { + copy.const_value = (expression)const_value.Clone(); + copy.const_value.Parent = copy; + } return copy; } @@ -8476,14 +8874,20 @@ namespace PascalABCCompiler.SyntaxTree { consts_definitions_list copy = new consts_definitions_list(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - foreach (const_definition elem in const_defs) + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) { - copy.Add((const_definition)elem.Clone()); - copy.Last().Parent = copy; + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; } + if (const_defs != null) + foreach (const_definition elem in const_defs) + if (elem != null) + { + copy.Add((const_definition)elem.Clone()); + copy.Last().Parent = copy; + } return copy; } @@ -8632,9 +9036,13 @@ namespace PascalABCCompiler.SyntaxTree { unit_name copy = new unit_name(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.idunit_name = (ident)idunit_name.Clone(); - copy.idunit_name.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (idunit_name != null) + { + copy.idunit_name = (ident)idunit_name.Clone(); + copy.idunit_name.Parent = copy; + } copy.HeaderKeyword = HeaderKeyword; return copy; } @@ -8760,9 +9168,13 @@ namespace PascalABCCompiler.SyntaxTree { unit_or_namespace copy = new unit_or_namespace(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.name = (ident_list)name.Clone(); - copy.name.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (name != null) + { + copy.name = (ident_list)name.Clone(); + copy.name.Parent = copy; + } return copy; } @@ -8906,11 +9318,18 @@ namespace PascalABCCompiler.SyntaxTree { uses_unit_in copy = new uses_unit_in(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.name = (ident_list)name.Clone(); - copy.name.Parent = copy; - copy.in_file = (string_const)in_file.Clone(); - copy.in_file.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (name != null) + { + copy.name = (ident_list)name.Clone(); + copy.name.Parent = copy; + } + if (in_file != null) + { + copy.in_file = (string_const)in_file.Clone(); + copy.in_file.Parent = copy; + } return copy; } @@ -9127,12 +9546,15 @@ namespace PascalABCCompiler.SyntaxTree { uses_list copy = new uses_list(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - foreach (unit_or_namespace elem in units) - { - copy.Add((unit_or_namespace)elem.Clone()); - copy.Last().Parent = copy; - } + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (units != null) + foreach (unit_or_namespace elem in units) + if (elem != null) + { + copy.Add((unit_or_namespace)elem.Clone()); + copy.Last().Parent = copy; + } return copy; } @@ -9317,15 +9739,28 @@ namespace PascalABCCompiler.SyntaxTree { program_body copy = new program_body(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.used_units = (uses_list)used_units.Clone(); - copy.used_units.Parent = copy; - copy.program_definitions = (declarations)program_definitions.Clone(); - copy.program_definitions.Parent = copy; - copy.program_code = (statement_list)program_code.Clone(); - copy.program_code.Parent = copy; - copy.using_list = (using_list)using_list.Clone(); - copy.using_list.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (used_units != null) + { + copy.used_units = (uses_list)used_units.Clone(); + copy.used_units.Parent = copy; + } + if (program_definitions != null) + { + copy.program_definitions = (declarations)program_definitions.Clone(); + copy.program_definitions.Parent = copy; + } + if (program_code != null) + { + copy.program_code = (statement_list)program_code.Clone(); + copy.program_code.Parent = copy; + } + if (using_list != null) + { + copy.using_list = (using_list)using_list.Clone(); + copy.using_list.Parent = copy; + } return copy; } @@ -9588,13 +10023,16 @@ namespace PascalABCCompiler.SyntaxTree { compilation_unit copy = new compilation_unit(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); + if (source_context != null) + copy.source_context = new SourceContext(source_context); copy.file_name = file_name; - foreach (compiler_directive elem in compiler_directives) - { - copy.Add((compiler_directive)elem.Clone()); - copy.Last().Parent = copy; - } + if (compiler_directives != null) + foreach (compiler_directive elem in compiler_directives) + if (elem != null) + { + copy.Add((compiler_directive)elem.Clone()); + copy.Last().Parent = copy; + } copy.Language = Language; return copy; } @@ -9849,26 +10287,47 @@ namespace PascalABCCompiler.SyntaxTree { unit_module copy = new unit_module(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); + if (source_context != null) + copy.source_context = new SourceContext(source_context); copy.file_name = file_name; - foreach (compiler_directive elem in compiler_directives) - { - copy.Add((compiler_directive)elem.Clone()); - copy.Last().Parent = copy; - } + if (compiler_directives != null) + foreach (compiler_directive elem in compiler_directives) + if (elem != null) + { + copy.Add((compiler_directive)elem.Clone()); + copy.Last().Parent = copy; + } copy.Language = Language; - copy.unit_name = (unit_name)unit_name.Clone(); - copy.unit_name.Parent = copy; - copy.interface_part = (interface_node)interface_part.Clone(); - copy.interface_part.Parent = copy; - copy.implementation_part = (implementation_node)implementation_part.Clone(); - copy.implementation_part.Parent = copy; - copy.initialization_part = (statement_list)initialization_part.Clone(); - copy.initialization_part.Parent = copy; - copy.finalization_part = (statement_list)finalization_part.Clone(); - copy.finalization_part.Parent = copy; - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; + if (unit_name != null) + { + copy.unit_name = (unit_name)unit_name.Clone(); + copy.unit_name.Parent = copy; + } + if (interface_part != null) + { + copy.interface_part = (interface_node)interface_part.Clone(); + copy.interface_part.Parent = copy; + } + if (implementation_part != null) + { + copy.implementation_part = (implementation_node)implementation_part.Clone(); + copy.implementation_part.Parent = copy; + } + if (initialization_part != null) + { + copy.initialization_part = (statement_list)initialization_part.Clone(); + copy.initialization_part.Parent = copy; + } + if (finalization_part != null) + { + copy.finalization_part = (statement_list)finalization_part.Clone(); + copy.finalization_part.Parent = copy; + } + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } return copy; } @@ -10118,22 +10577,37 @@ namespace PascalABCCompiler.SyntaxTree { program_module copy = new program_module(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); + if (source_context != null) + copy.source_context = new SourceContext(source_context); copy.file_name = file_name; - foreach (compiler_directive elem in compiler_directives) - { - copy.Add((compiler_directive)elem.Clone()); - copy.Last().Parent = copy; - } + if (compiler_directives != null) + foreach (compiler_directive elem in compiler_directives) + if (elem != null) + { + copy.Add((compiler_directive)elem.Clone()); + copy.Last().Parent = copy; + } copy.Language = Language; - copy.program_name = (program_name)program_name.Clone(); - copy.program_name.Parent = copy; - copy.used_units = (uses_list)used_units.Clone(); - copy.used_units.Parent = copy; - copy.program_block = (block)program_block.Clone(); - copy.program_block.Parent = copy; - copy.using_namespaces = (using_list)using_namespaces.Clone(); - copy.using_namespaces.Parent = copy; + if (program_name != null) + { + copy.program_name = (program_name)program_name.Clone(); + copy.program_name.Parent = copy; + } + if (used_units != null) + { + copy.used_units = (uses_list)used_units.Clone(); + copy.used_units.Parent = copy; + } + if (program_block != null) + { + copy.program_block = (block)program_block.Clone(); + copy.program_block.Parent = copy; + } + if (using_namespaces != null) + { + copy.using_namespaces = (using_list)using_namespaces.Clone(); + copy.using_namespaces.Parent = copy; + } return copy; } @@ -10273,9 +10747,13 @@ namespace PascalABCCompiler.SyntaxTree { hex_constant copy = new hex_constant(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } copy.val = val; return copy; } @@ -10390,11 +10868,18 @@ namespace PascalABCCompiler.SyntaxTree { get_address copy = new get_address(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.address_of = (addressed_value)address_of.Clone(); - copy.address_of.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (address_of != null) + { + copy.address_of = (addressed_value)address_of.Clone(); + copy.address_of.Parent = copy; + } return copy; } @@ -10537,13 +11022,23 @@ namespace PascalABCCompiler.SyntaxTree { case_variant copy = new case_variant(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.conditions = (expression_list)conditions.Clone(); - copy.conditions.Parent = copy; - copy.exec_if_true = (statement)exec_if_true.Clone(); - copy.exec_if_true.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (conditions != null) + { + copy.conditions = (expression_list)conditions.Clone(); + copy.conditions.Parent = copy; + } + if (exec_if_true != null) + { + copy.exec_if_true = (statement)exec_if_true.Clone(); + copy.exec_if_true.Parent = copy; + } return copy; } @@ -10709,15 +11204,28 @@ namespace PascalABCCompiler.SyntaxTree { case_node copy = new case_node(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.param = (expression)param.Clone(); - copy.param.Parent = copy; - copy.conditions = (case_variants)conditions.Clone(); - copy.conditions.Parent = copy; - copy.else_statement = (statement)else_statement.Clone(); - copy.else_statement.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (param != null) + { + copy.param = (expression)param.Clone(); + copy.param.Parent = copy; + } + if (conditions != null) + { + copy.conditions = (case_variants)conditions.Clone(); + copy.conditions.Parent = copy; + } + if (else_statement != null) + { + copy.else_statement = (statement)else_statement.Clone(); + copy.else_statement.Parent = copy; + } return copy; } @@ -10993,18 +11501,30 @@ namespace PascalABCCompiler.SyntaxTree { method_name copy = new method_name(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - foreach (ident elem in ln) + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (ln != null) + foreach (ident elem in ln) + if (elem != null) + { + copy.Add((ident)elem.Clone()); + copy.Last().Parent = copy; + } + if (class_name != null) { - copy.Add((ident)elem.Clone()); - copy.Last().Parent = copy; + copy.class_name = (ident)class_name.Clone(); + copy.class_name.Parent = copy; + } + if (meth_name != null) + { + copy.meth_name = (ident)meth_name.Clone(); + copy.meth_name.Parent = copy; + } + if (explicit_interface_name != null) + { + copy.explicit_interface_name = (ident)explicit_interface_name.Clone(); + copy.explicit_interface_name.Parent = copy; } - copy.class_name = (ident)class_name.Clone(); - copy.class_name.Parent = copy; - copy.meth_name = (ident)meth_name.Clone(); - copy.meth_name.Parent = copy; - copy.explicit_interface_name = (ident)explicit_interface_name.Clone(); - copy.explicit_interface_name.Parent = copy; return copy; } @@ -11174,13 +11694,23 @@ namespace PascalABCCompiler.SyntaxTree { dot_node copy = new dot_node(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.left = (addressed_value)left.Clone(); - copy.left.Parent = copy; - copy.right = (addressed_value)right.Clone(); - copy.right.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (left != null) + { + copy.left = (addressed_value)left.Clone(); + copy.left.Parent = copy; + } + if (right != null) + { + copy.right = (addressed_value)right.Clone(); + copy.right.Parent = copy; + } return copy; } @@ -11276,9 +11806,13 @@ namespace PascalABCCompiler.SyntaxTree { empty_statement copy = new empty_statement(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; + 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; } @@ -11392,11 +11926,18 @@ namespace PascalABCCompiler.SyntaxTree { goto_statement copy = new goto_statement(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.label = (ident)label.Clone(); - copy.label.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (label != null) + { + copy.label = (ident)label.Clone(); + copy.label.Parent = copy; + } return copy; } @@ -11539,13 +12080,23 @@ namespace PascalABCCompiler.SyntaxTree { labeled_statement copy = new labeled_statement(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.label_name = (ident)label_name.Clone(); - copy.label_name.Parent = copy; - copy.to_statement = (statement)to_statement.Clone(); - copy.to_statement.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (label_name != null) + { + copy.label_name = (ident)label_name.Clone(); + copy.label_name.Parent = copy; + } + if (to_statement != null) + { + copy.to_statement = (statement)to_statement.Clone(); + copy.to_statement.Parent = copy; + } return copy; } @@ -11693,13 +12244,23 @@ namespace PascalABCCompiler.SyntaxTree { with_statement copy = new with_statement(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.what_do = (statement)what_do.Clone(); - copy.what_do.Parent = copy; - copy.do_with = (expression_list)do_with.Clone(); - copy.do_with.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (what_do != null) + { + copy.what_do = (statement)what_do.Clone(); + copy.what_do.Parent = copy; + } + if (do_with != null) + { + copy.do_with = (expression_list)do_with.Clone(); + copy.do_with.Parent = copy; + } return copy; } @@ -11848,13 +12409,23 @@ namespace PascalABCCompiler.SyntaxTree { method_call copy = new method_call(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.dereferencing_value = (addressed_value)dereferencing_value.Clone(); - copy.dereferencing_value.Parent = copy; - copy.parameters = (expression_list)parameters.Clone(); - copy.parameters.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (dereferencing_value != null) + { + copy.dereferencing_value = (addressed_value)dereferencing_value.Clone(); + copy.dereferencing_value.Parent = copy; + } + if (parameters != null) + { + copy.parameters = (expression_list)parameters.Clone(); + copy.parameters.Parent = copy; + } return copy; } @@ -11984,11 +12555,18 @@ namespace PascalABCCompiler.SyntaxTree { pascal_set_constant copy = new pascal_set_constant(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.values = (expression_list)values.Clone(); - copy.values.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (values != null) + { + copy.values = (expression_list)values.Clone(); + copy.values.Parent = copy; + } return copy; } @@ -12113,11 +12691,18 @@ namespace PascalABCCompiler.SyntaxTree { array_const copy = new array_const(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.elements = (expression_list)elements.Clone(); - copy.elements.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (elements != null) + { + copy.elements = (expression_list)elements.Clone(); + copy.elements.Parent = copy; + } return copy; } @@ -12242,9 +12827,13 @@ namespace PascalABCCompiler.SyntaxTree { write_accessor_name copy = new write_accessor_name(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.accessor_name = (ident)accessor_name.Clone(); - copy.accessor_name.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (accessor_name != null) + { + copy.accessor_name = (ident)accessor_name.Clone(); + copy.accessor_name.Parent = copy; + } return copy; } @@ -12369,9 +12958,13 @@ namespace PascalABCCompiler.SyntaxTree { read_accessor_name copy = new read_accessor_name(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.accessor_name = (ident)accessor_name.Clone(); - copy.accessor_name.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (accessor_name != null) + { + copy.accessor_name = (ident)accessor_name.Clone(); + copy.accessor_name.Parent = copy; + } return copy; } @@ -12514,11 +13107,18 @@ namespace PascalABCCompiler.SyntaxTree { property_accessors copy = new property_accessors(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.read_accessor = (read_accessor_name)read_accessor.Clone(); - copy.read_accessor.Parent = copy; - copy.write_accessor = (write_accessor_name)write_accessor.Clone(); - copy.write_accessor.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (read_accessor != null) + { + copy.read_accessor = (read_accessor_name)read_accessor.Clone(); + copy.read_accessor.Parent = copy; + } + if (write_accessor != null) + { + copy.write_accessor = (write_accessor_name)write_accessor.Clone(); + copy.write_accessor.Parent = copy; + } return copy; } @@ -12756,21 +13356,43 @@ namespace PascalABCCompiler.SyntaxTree { simple_property copy = new simple_property(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.property_name = (ident)property_name.Clone(); - copy.property_name.Parent = copy; - copy.property_type = (type_definition)property_type.Clone(); - copy.property_type.Parent = copy; - copy.index_expression = (expression)index_expression.Clone(); - copy.index_expression.Parent = copy; - copy.accessors = (property_accessors)accessors.Clone(); - copy.accessors.Parent = copy; - copy.array_default = (property_array_default)array_default.Clone(); - copy.array_default.Parent = copy; - copy.parameter_list = (property_parameter_list)parameter_list.Clone(); - copy.parameter_list.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (property_name != null) + { + copy.property_name = (ident)property_name.Clone(); + copy.property_name.Parent = copy; + } + if (property_type != null) + { + copy.property_type = (type_definition)property_type.Clone(); + copy.property_type.Parent = copy; + } + if (index_expression != null) + { + copy.index_expression = (expression)index_expression.Clone(); + copy.index_expression.Parent = copy; + } + if (accessors != null) + { + copy.accessors = (property_accessors)accessors.Clone(); + copy.accessors.Parent = copy; + } + if (array_default != null) + { + copy.array_default = (property_array_default)array_default.Clone(); + copy.array_default.Parent = copy; + } + if (parameter_list != null) + { + copy.parameter_list = (property_parameter_list)parameter_list.Clone(); + copy.parameter_list.Parent = copy; + } copy.attr = attr; return copy; } @@ -12972,26 +13594,54 @@ namespace PascalABCCompiler.SyntaxTree { index_property copy = new index_property(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.property_name = (ident)property_name.Clone(); - copy.property_name.Parent = copy; - copy.property_type = (type_definition)property_type.Clone(); - copy.property_type.Parent = copy; - copy.index_expression = (expression)index_expression.Clone(); - copy.index_expression.Parent = copy; - copy.accessors = (property_accessors)accessors.Clone(); - copy.accessors.Parent = copy; - copy.array_default = (property_array_default)array_default.Clone(); - copy.array_default.Parent = copy; - copy.parameter_list = (property_parameter_list)parameter_list.Clone(); - copy.parameter_list.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (property_name != null) + { + copy.property_name = (ident)property_name.Clone(); + copy.property_name.Parent = copy; + } + if (property_type != null) + { + copy.property_type = (type_definition)property_type.Clone(); + copy.property_type.Parent = copy; + } + if (index_expression != null) + { + copy.index_expression = (expression)index_expression.Clone(); + copy.index_expression.Parent = copy; + } + if (accessors != null) + { + copy.accessors = (property_accessors)accessors.Clone(); + copy.accessors.Parent = copy; + } + if (array_default != null) + { + copy.array_default = (property_array_default)array_default.Clone(); + copy.array_default.Parent = copy; + } + if (parameter_list != null) + { + copy.parameter_list = (property_parameter_list)parameter_list.Clone(); + copy.parameter_list.Parent = copy; + } copy.attr = attr; - copy.property_parametres = (formal_parameters)property_parametres.Clone(); - copy.property_parametres.Parent = copy; - copy.is_default = (default_indexer_property_node)is_default.Clone(); - copy.is_default.Parent = copy; + if (property_parametres != null) + { + copy.property_parametres = (formal_parameters)property_parametres.Clone(); + copy.property_parametres.Parent = copy; + } + if (is_default != null) + { + copy.is_default = (default_indexer_property_node)is_default.Clone(); + copy.is_default.Parent = copy; + } return copy; } @@ -13256,14 +13906,20 @@ namespace PascalABCCompiler.SyntaxTree { class_members copy = new class_members(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - foreach (declaration elem in members) + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (members != null) + foreach (declaration elem in members) + if (elem != null) + { + copy.Add((declaration)elem.Clone()); + copy.Last().Parent = copy; + } + if (access_mod != null) { - copy.Add((declaration)elem.Clone()); - copy.Last().Parent = copy; + copy.access_mod = (access_modifer_node)access_mod.Clone(); + copy.access_mod.Parent = copy; } - copy.access_mod = (access_modifer_node)access_mod.Clone(); - copy.access_mod.Parent = copy; return copy; } @@ -13405,7 +14061,8 @@ namespace PascalABCCompiler.SyntaxTree { access_modifer_node copy = new access_modifer_node(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); + if (source_context != null) + copy.source_context = new SourceContext(source_context); copy.access_level = access_level; return copy; } @@ -13607,12 +14264,15 @@ namespace PascalABCCompiler.SyntaxTree { class_body copy = new class_body(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - foreach (class_members elem in class_def_blocks) - { - copy.Add((class_members)elem.Clone()); - copy.Last().Parent = copy; - } + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (class_def_blocks != null) + foreach (class_members elem in class_def_blocks) + if (elem != null) + { + copy.Add((class_members)elem.Clone()); + copy.Last().Parent = copy; + } return copy; } @@ -13882,20 +14542,39 @@ namespace PascalABCCompiler.SyntaxTree { class_definition copy = new class_definition(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.attr_list = (type_definition_attr_list)attr_list.Clone(); - copy.attr_list.Parent = copy; - copy.class_parents = (named_type_reference_list)class_parents.Clone(); - copy.class_parents.Parent = copy; - copy.body = (class_body)body.Clone(); - copy.body.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (attr_list != null) + { + copy.attr_list = (type_definition_attr_list)attr_list.Clone(); + copy.attr_list.Parent = copy; + } + if (class_parents != null) + { + copy.class_parents = (named_type_reference_list)class_parents.Clone(); + copy.class_parents.Parent = copy; + } + if (body != null) + { + copy.body = (class_body)body.Clone(); + copy.body.Parent = copy; + } copy.keyword = keyword; - copy.template_args = (ident_list)template_args.Clone(); - copy.template_args.Parent = copy; - copy.where_section = (where_definition_list)where_section.Clone(); - copy.where_section.Parent = copy; + if (template_args != null) + { + copy.template_args = (ident_list)template_args.Clone(); + copy.template_args.Parent = copy; + } + if (where_section != null) + { + copy.where_section = (where_definition_list)where_section.Clone(); + copy.where_section.Parent = copy; + } copy.attribute = attribute; copy.is_auto = is_auto; return copy; @@ -14008,7 +14687,8 @@ namespace PascalABCCompiler.SyntaxTree { default_indexer_property_node copy = new default_indexer_property_node(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); + if (source_context != null) + copy.source_context = new SourceContext(source_context); return copy; } @@ -14161,14 +14841,24 @@ namespace PascalABCCompiler.SyntaxTree { known_type_definition copy = new known_type_definition(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.attr_list = (type_definition_attr_list)attr_list.Clone(); - copy.attr_list.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (attr_list != null) + { + copy.attr_list = (type_definition_attr_list)attr_list.Clone(); + copy.attr_list.Parent = copy; + } copy.tp = tp; - copy.unit_name = (ident)unit_name.Clone(); - copy.unit_name.Parent = copy; + if (unit_name != null) + { + copy.unit_name = (ident)unit_name.Clone(); + copy.unit_name.Parent = copy; + } return copy; } @@ -14317,13 +15007,23 @@ namespace PascalABCCompiler.SyntaxTree { set_type_definition copy = new set_type_definition(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.attr_list = (type_definition_attr_list)attr_list.Clone(); - copy.attr_list.Parent = copy; - copy.of_type = (type_definition)of_type.Clone(); - copy.of_type.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (attr_list != null) + { + copy.attr_list = (type_definition_attr_list)attr_list.Clone(); + copy.attr_list.Parent = copy; + } + if (of_type != null) + { + copy.of_type = (type_definition)of_type.Clone(); + copy.of_type.Parent = copy; + } return copy; } @@ -14471,13 +15171,23 @@ namespace PascalABCCompiler.SyntaxTree { record_const_definition copy = new record_const_definition(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.name = (ident)name.Clone(); - copy.name.Parent = copy; - copy.val = (expression)val.Clone(); - copy.val.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (name != null) + { + copy.name = (ident)name.Clone(); + copy.name.Parent = copy; + } + if (val != null) + { + copy.val = (expression)val.Clone(); + copy.val.Parent = copy; + } return copy; } @@ -14694,14 +15404,20 @@ namespace PascalABCCompiler.SyntaxTree { record_const copy = new record_const(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - foreach (record_const_definition elem in rec_consts) + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) { - copy.Add((record_const_definition)elem.Clone()); - copy.Last().Parent = copy; + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; } + if (rec_consts != null) + foreach (record_const_definition elem in rec_consts) + if (elem != null) + { + copy.Add((record_const_definition)elem.Clone()); + copy.Last().Parent = copy; + } return copy; } @@ -14871,15 +15587,28 @@ namespace PascalABCCompiler.SyntaxTree { record_type copy = new record_type(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.attr_list = (type_definition_attr_list)attr_list.Clone(); - copy.attr_list.Parent = copy; - copy.parts = (record_type_parts)parts.Clone(); - copy.parts.Parent = copy; - copy.base_type = (type_definition)base_type.Clone(); - copy.base_type.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (attr_list != null) + { + copy.attr_list = (type_definition_attr_list)attr_list.Clone(); + copy.attr_list.Parent = copy; + } + if (parts != null) + { + copy.parts = (record_type_parts)parts.Clone(); + copy.parts.Parent = copy; + } + if (base_type != null) + { + copy.base_type = (type_definition)base_type.Clone(); + copy.base_type.Parent = copy; + } return copy; } @@ -15033,13 +15762,23 @@ namespace PascalABCCompiler.SyntaxTree { enum_type_definition copy = new enum_type_definition(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.attr_list = (type_definition_attr_list)attr_list.Clone(); - copy.attr_list.Parent = copy; - copy.enumerators = (enumerator_list)enumerators.Clone(); - copy.enumerators.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (attr_list != null) + { + copy.attr_list = (type_definition_attr_list)attr_list.Clone(); + copy.attr_list.Parent = copy; + } + if (enumerators != null) + { + copy.enumerators = (enumerator_list)enumerators.Clone(); + copy.enumerators.Parent = copy; + } return copy; } @@ -15169,9 +15908,13 @@ namespace PascalABCCompiler.SyntaxTree { char_const copy = new char_const(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } copy.cconst = cconst; return copy; } @@ -15286,11 +16029,18 @@ namespace PascalABCCompiler.SyntaxTree { raise_statement copy = new raise_statement(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.excep = (expression)excep.Clone(); - copy.excep.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (excep != null) + { + copy.excep = (expression)excep.Clone(); + copy.excep.Parent = copy; + } return copy; } @@ -15415,9 +16165,13 @@ namespace PascalABCCompiler.SyntaxTree { sharp_char_const copy = new sharp_char_const(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } copy.char_num = char_num; return copy; } @@ -15619,14 +16373,20 @@ namespace PascalABCCompiler.SyntaxTree { literal_const_line copy = new literal_const_line(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - foreach (literal elem in literals) + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) { - copy.Add((literal)elem.Clone()); - copy.Last().Parent = copy; + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; } + if (literals != null) + foreach (literal elem in literals) + if (elem != null) + { + copy.Add((literal)elem.Clone()); + copy.Last().Parent = copy; + } return copy; } @@ -15796,15 +16556,28 @@ namespace PascalABCCompiler.SyntaxTree { string_num_definition copy = new string_num_definition(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.attr_list = (type_definition_attr_list)attr_list.Clone(); - copy.attr_list.Parent = copy; - copy.num_of_symbols = (expression)num_of_symbols.Clone(); - copy.num_of_symbols.Parent = copy; - copy.name = (ident)name.Clone(); - copy.name.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (attr_list != null) + { + copy.attr_list = (type_definition_attr_list)attr_list.Clone(); + copy.attr_list.Parent = copy; + } + if (num_of_symbols != null) + { + copy.num_of_symbols = (expression)num_of_symbols.Clone(); + copy.num_of_symbols.Parent = copy; + } + if (name != null) + { + copy.name = (ident)name.Clone(); + copy.name.Parent = copy; + } return copy; } @@ -15957,11 +16730,18 @@ namespace PascalABCCompiler.SyntaxTree { variant copy = new variant(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.vars = (ident_list)vars.Clone(); - copy.vars.Parent = copy; - copy.vars_type = (type_definition)vars_type.Clone(); - copy.vars_type.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (vars != null) + { + copy.vars = (ident_list)vars.Clone(); + copy.vars.Parent = copy; + } + if (vars_type != null) + { + copy.vars_type = (type_definition)vars_type.Clone(); + copy.vars_type.Parent = copy; + } return copy; } @@ -16178,12 +16958,15 @@ namespace PascalABCCompiler.SyntaxTree { variant_list copy = new variant_list(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - foreach (variant elem in vars) - { - copy.Add((variant)elem.Clone()); - copy.Last().Parent = copy; - } + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (vars != null) + foreach (variant elem in vars) + if (elem != null) + { + copy.Add((variant)elem.Clone()); + copy.Last().Parent = copy; + } return copy; } @@ -16332,11 +17115,18 @@ namespace PascalABCCompiler.SyntaxTree { variant_type copy = new variant_type(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.case_exprs = (expression_list)case_exprs.Clone(); - copy.case_exprs.Parent = copy; - copy.parts = (record_type_parts)parts.Clone(); - copy.parts.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (case_exprs != null) + { + copy.case_exprs = (expression_list)case_exprs.Clone(); + copy.case_exprs.Parent = copy; + } + if (parts != null) + { + copy.parts = (record_type_parts)parts.Clone(); + copy.parts.Parent = copy; + } return copy; } @@ -16553,12 +17343,15 @@ namespace PascalABCCompiler.SyntaxTree { variant_types copy = new variant_types(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - foreach (variant_type elem in vars) - { - copy.Add((variant_type)elem.Clone()); - copy.Last().Parent = copy; - } + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (vars != null) + foreach (variant_type elem in vars) + if (elem != null) + { + copy.Add((variant_type)elem.Clone()); + copy.Last().Parent = copy; + } return copy; } @@ -16725,13 +17518,23 @@ namespace PascalABCCompiler.SyntaxTree { variant_record_type copy = new variant_record_type(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.var_name = (ident)var_name.Clone(); - copy.var_name.Parent = copy; - copy.var_type = (type_definition)var_type.Clone(); - copy.var_type.Parent = copy; - copy.vars = (variant_types)vars.Clone(); - copy.vars.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (var_name != null) + { + copy.var_name = (ident)var_name.Clone(); + copy.var_name.Parent = copy; + } + if (var_type != null) + { + copy.var_type = (type_definition)var_type.Clone(); + copy.var_type.Parent = copy; + } + if (vars != null) + { + copy.vars = (variant_types)vars.Clone(); + copy.vars.Parent = copy; + } return copy; } @@ -16866,11 +17669,18 @@ namespace PascalABCCompiler.SyntaxTree { procedure_call copy = new procedure_call(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.func_name = (addressed_value)func_name.Clone(); - copy.func_name.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (func_name != null) + { + copy.func_name = (addressed_value)func_name.Clone(); + copy.func_name.Parent = copy; + } return copy; } @@ -17016,15 +17826,28 @@ namespace PascalABCCompiler.SyntaxTree { class_predefinition copy = new class_predefinition(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.type_name = (ident)type_name.Clone(); - copy.type_name.Parent = copy; - copy.type_def = (type_definition)type_def.Clone(); - copy.type_def.Parent = copy; - copy.class_name = (ident)class_name.Clone(); - copy.class_name.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (type_name != null) + { + copy.type_name = (ident)type_name.Clone(); + copy.type_name.Parent = copy; + } + if (type_def != null) + { + copy.type_def = (type_definition)type_def.Clone(); + copy.type_def.Parent = copy; + } + if (class_name != null) + { + copy.class_name = (ident)class_name.Clone(); + copy.class_name.Parent = copy; + } return copy; } @@ -17125,9 +17948,13 @@ namespace PascalABCCompiler.SyntaxTree { nil_const copy = new nil_const(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; + 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; } @@ -17260,13 +18087,23 @@ namespace PascalABCCompiler.SyntaxTree { file_type_definition copy = new file_type_definition(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.attr_list = (type_definition_attr_list)attr_list.Clone(); - copy.attr_list.Parent = copy; - copy.elem_type = (type_definition)elem_type.Clone(); - copy.elem_type.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (attr_list != null) + { + copy.attr_list = (type_definition_attr_list)attr_list.Clone(); + copy.attr_list.Parent = copy; + } + if (elem_type != null) + { + copy.elem_type = (type_definition)elem_type.Clone(); + copy.elem_type.Parent = copy; + } return copy; } @@ -17393,23 +18230,45 @@ namespace PascalABCCompiler.SyntaxTree { constructor copy = new constructor(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.attr_list = (type_definition_attr_list)attr_list.Clone(); - copy.attr_list.Parent = copy; - copy.parameters = (formal_parameters)parameters.Clone(); - copy.parameters.Parent = copy; - copy.proc_attributes = (procedure_attributes_list)proc_attributes.Clone(); - copy.proc_attributes.Parent = copy; - copy.name = (method_name)name.Clone(); - copy.name.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (attr_list != null) + { + copy.attr_list = (type_definition_attr_list)attr_list.Clone(); + copy.attr_list.Parent = copy; + } + if (parameters != null) + { + copy.parameters = (formal_parameters)parameters.Clone(); + copy.parameters.Parent = copy; + } + if (proc_attributes != null) + { + copy.proc_attributes = (procedure_attributes_list)proc_attributes.Clone(); + copy.proc_attributes.Parent = copy; + } + if (name != null) + { + copy.name = (method_name)name.Clone(); + copy.name.Parent = copy; + } copy.of_object = of_object; copy.class_keyword = class_keyword; - copy.template_args = (ident_list)template_args.Clone(); - copy.template_args.Parent = copy; - copy.where_defs = (where_definition_list)where_defs.Clone(); - copy.where_defs.Parent = copy; + if (template_args != null) + { + copy.template_args = (ident_list)template_args.Clone(); + copy.template_args.Parent = copy; + } + if (where_defs != null) + { + copy.where_defs = (where_definition_list)where_defs.Clone(); + copy.where_defs.Parent = copy; + } return copy; } @@ -17556,23 +18415,45 @@ namespace PascalABCCompiler.SyntaxTree { destructor copy = new destructor(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.attr_list = (type_definition_attr_list)attr_list.Clone(); - copy.attr_list.Parent = copy; - copy.parameters = (formal_parameters)parameters.Clone(); - copy.parameters.Parent = copy; - copy.proc_attributes = (procedure_attributes_list)proc_attributes.Clone(); - copy.proc_attributes.Parent = copy; - copy.name = (method_name)name.Clone(); - copy.name.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (attr_list != null) + { + copy.attr_list = (type_definition_attr_list)attr_list.Clone(); + copy.attr_list.Parent = copy; + } + if (parameters != null) + { + copy.parameters = (formal_parameters)parameters.Clone(); + copy.parameters.Parent = copy; + } + if (proc_attributes != null) + { + copy.proc_attributes = (procedure_attributes_list)proc_attributes.Clone(); + copy.proc_attributes.Parent = copy; + } + if (name != null) + { + copy.name = (method_name)name.Clone(); + copy.name.Parent = copy; + } copy.of_object = of_object; copy.class_keyword = class_keyword; - copy.template_args = (ident_list)template_args.Clone(); - copy.template_args.Parent = copy; - copy.where_defs = (where_definition_list)where_defs.Clone(); - copy.where_defs.Parent = copy; + if (template_args != null) + { + copy.template_args = (ident_list)template_args.Clone(); + copy.template_args.Parent = copy; + } + if (where_defs != null) + { + copy.where_defs = (where_definition_list)where_defs.Clone(); + copy.where_defs.Parent = copy; + } return copy; } @@ -17740,13 +18621,23 @@ namespace PascalABCCompiler.SyntaxTree { inherited_method_call copy = new inherited_method_call(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.method_name = (ident)method_name.Clone(); - copy.method_name.Parent = copy; - copy.exprs = (expression_list)exprs.Clone(); - copy.exprs.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (method_name != null) + { + copy.method_name = (ident)method_name.Clone(); + copy.method_name.Parent = copy; + } + if (exprs != null) + { + copy.exprs = (expression_list)exprs.Clone(); + copy.exprs.Parent = copy; + } return copy; } @@ -17912,13 +18803,23 @@ namespace PascalABCCompiler.SyntaxTree { typecast_node copy = new typecast_node(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.expr = (addressed_value)expr.Clone(); - copy.expr.Parent = copy; - copy.type_def = (type_definition)type_def.Clone(); - copy.type_def.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (expr != null) + { + copy.expr = (addressed_value)expr.Clone(); + copy.expr.Parent = copy; + } + if (type_def != null) + { + copy.type_def = (type_definition)type_def.Clone(); + copy.type_def.Parent = copy; + } copy.cast_op = cast_op; return copy; } @@ -18085,13 +18986,23 @@ namespace PascalABCCompiler.SyntaxTree { interface_node copy = new interface_node(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.interface_definitions = (declarations)interface_definitions.Clone(); - copy.interface_definitions.Parent = copy; - copy.uses_modules = (uses_list)uses_modules.Clone(); - copy.uses_modules.Parent = copy; - copy.using_namespaces = (using_list)using_namespaces.Clone(); - copy.using_namespaces.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (interface_definitions != null) + { + copy.interface_definitions = (declarations)interface_definitions.Clone(); + copy.interface_definitions.Parent = copy; + } + if (uses_modules != null) + { + copy.uses_modules = (uses_list)uses_modules.Clone(); + copy.uses_modules.Parent = copy; + } + if (using_namespaces != null) + { + copy.using_namespaces = (using_list)using_namespaces.Clone(); + copy.using_namespaces.Parent = copy; + } return copy; } @@ -18262,13 +19173,23 @@ namespace PascalABCCompiler.SyntaxTree { implementation_node copy = new implementation_node(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.uses_modules = (uses_list)uses_modules.Clone(); - copy.uses_modules.Parent = copy; - copy.implementation_definitions = (declarations)implementation_definitions.Clone(); - copy.implementation_definitions.Parent = copy; - copy.using_namespaces = (using_list)using_namespaces.Clone(); - copy.using_namespaces.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (uses_modules != null) + { + copy.uses_modules = (uses_list)uses_modules.Clone(); + copy.uses_modules.Parent = copy; + } + if (implementation_definitions != null) + { + copy.implementation_definitions = (declarations)implementation_definitions.Clone(); + copy.implementation_definitions.Parent = copy; + } + if (using_namespaces != null) + { + copy.using_namespaces = (using_list)using_namespaces.Clone(); + copy.using_namespaces.Parent = copy; + } return copy; } @@ -18421,13 +19342,23 @@ namespace PascalABCCompiler.SyntaxTree { diap_expr copy = new diap_expr(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.left = (expression)left.Clone(); - copy.left.Parent = copy; - copy.right = (expression)right.Clone(); - copy.right.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (left != null) + { + copy.left = (expression)left.Clone(); + copy.left.Parent = copy; + } + if (right != null) + { + copy.right = (expression)right.Clone(); + copy.right.Parent = copy; + } return copy; } @@ -18575,11 +19506,18 @@ namespace PascalABCCompiler.SyntaxTree { block copy = new block(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.defs = (declarations)defs.Clone(); - copy.defs.Parent = copy; - copy.program_code = (statement_list)program_code.Clone(); - copy.program_code.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (defs != null) + { + copy.defs = (declarations)defs.Clone(); + copy.defs.Parent = copy; + } + if (program_code != null) + { + copy.program_code = (statement_list)program_code.Clone(); + copy.program_code.Parent = copy; + } return copy; } @@ -18675,7 +19613,8 @@ namespace PascalABCCompiler.SyntaxTree { proc_block copy = new proc_block(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); + if (source_context != null) + copy.source_context = new SourceContext(source_context); return copy; } @@ -18808,13 +19747,23 @@ namespace PascalABCCompiler.SyntaxTree { array_of_named_type_definition copy = new array_of_named_type_definition(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.attr_list = (type_definition_attr_list)attr_list.Clone(); - copy.attr_list.Parent = copy; - copy.type_name = (named_type_reference)type_name.Clone(); - copy.type_name.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (attr_list != null) + { + copy.attr_list = (type_definition_attr_list)attr_list.Clone(); + copy.attr_list.Parent = copy; + } + if (type_name != null) + { + copy.type_name = (named_type_reference)type_name.Clone(); + copy.type_name.Parent = copy; + } return copy; } @@ -18927,11 +19876,18 @@ namespace PascalABCCompiler.SyntaxTree { array_of_const_type_definition copy = new array_of_const_type_definition(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.attr_list = (type_definition_attr_list)attr_list.Clone(); - copy.attr_list.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (attr_list != null) + { + copy.attr_list = (type_definition_attr_list)attr_list.Clone(); + copy.attr_list.Parent = copy; + } return copy; } @@ -19022,9 +19978,13 @@ namespace PascalABCCompiler.SyntaxTree { literal copy = new literal(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; + 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; } @@ -19225,12 +20185,15 @@ namespace PascalABCCompiler.SyntaxTree { case_variants copy = new case_variants(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - foreach (case_variant elem in variants) - { - copy.Add((case_variant)elem.Clone()); - copy.Last().Parent = copy; - } + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (variants != null) + foreach (case_variant elem in variants) + if (elem != null) + { + copy.Add((case_variant)elem.Clone()); + copy.Last().Parent = copy; + } return copy; } @@ -19379,13 +20342,23 @@ namespace PascalABCCompiler.SyntaxTree { diapason_expr copy = new diapason_expr(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.left = (expression)left.Clone(); - copy.left.Parent = copy; - copy.right = (expression)right.Clone(); - copy.right.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (left != null) + { + copy.left = (expression)left.Clone(); + copy.left.Parent = copy; + } + if (right != null) + { + copy.right = (expression)right.Clone(); + copy.right.Parent = copy; + } return copy; } @@ -19602,12 +20575,15 @@ namespace PascalABCCompiler.SyntaxTree { var_def_list_for_record copy = new var_def_list_for_record(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - foreach (var_def_statement elem in vars) - { - copy.Add((var_def_statement)elem.Clone()); - copy.Last().Parent = copy; - } + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (vars != null) + foreach (var_def_statement elem in vars) + if (elem != null) + { + copy.Add((var_def_statement)elem.Clone()); + copy.Last().Parent = copy; + } return copy; } @@ -19756,11 +20732,18 @@ namespace PascalABCCompiler.SyntaxTree { record_type_parts copy = new record_type_parts(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.fixed_part = (var_def_list_for_record)fixed_part.Clone(); - copy.fixed_part.Parent = copy; - copy.variant_part = (variant_record_type)variant_part.Clone(); - copy.variant_part.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (fixed_part != null) + { + copy.fixed_part = (var_def_list_for_record)fixed_part.Clone(); + copy.fixed_part.Parent = copy; + } + if (variant_part != null) + { + copy.variant_part = (variant_record_type)variant_part.Clone(); + copy.variant_part.Parent = copy; + } return copy; } @@ -19856,7 +20839,8 @@ namespace PascalABCCompiler.SyntaxTree { property_array_default copy = new property_array_default(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); + if (source_context != null) + copy.source_context = new SourceContext(source_context); return copy; } @@ -20006,13 +20990,23 @@ namespace PascalABCCompiler.SyntaxTree { property_interface copy = new property_interface(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.parameter_list = (property_parameter_list)parameter_list.Clone(); - copy.parameter_list.Parent = copy; - copy.property_type = (type_definition)property_type.Clone(); - copy.property_type.Parent = copy; - copy.index_expression = (expression)index_expression.Clone(); - copy.index_expression.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (parameter_list != null) + { + copy.parameter_list = (property_parameter_list)parameter_list.Clone(); + copy.parameter_list.Parent = copy; + } + if (property_type != null) + { + copy.property_type = (type_definition)property_type.Clone(); + copy.property_type.Parent = copy; + } + if (index_expression != null) + { + copy.index_expression = (expression)index_expression.Clone(); + copy.index_expression.Parent = copy; + } return copy; } @@ -20165,11 +21159,18 @@ namespace PascalABCCompiler.SyntaxTree { property_parameter copy = new property_parameter(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.names = (ident_list)names.Clone(); - copy.names.Parent = copy; - copy.type = (type_definition)type.Clone(); - copy.type.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (names != null) + { + copy.names = (ident_list)names.Clone(); + copy.names.Parent = copy; + } + if (type != null) + { + copy.type = (type_definition)type.Clone(); + copy.type.Parent = copy; + } return copy; } @@ -20386,12 +21387,15 @@ namespace PascalABCCompiler.SyntaxTree { property_parameter_list copy = new property_parameter_list(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - foreach (property_parameter elem in parameters) - { - copy.Add((property_parameter)elem.Clone()); - copy.Last().Parent = copy; - } + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (parameters != null) + foreach (property_parameter elem in parameters) + if (elem != null) + { + copy.Add((property_parameter)elem.Clone()); + copy.Last().Parent = copy; + } return copy; } @@ -20505,9 +21509,13 @@ namespace PascalABCCompiler.SyntaxTree { inherited_ident copy = new inherited_ident(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } copy.name = name; return copy; } @@ -20658,15 +21666,28 @@ namespace PascalABCCompiler.SyntaxTree { format_expr copy = new format_expr(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.expr = (expression)expr.Clone(); - copy.expr.Parent = copy; - copy.format1 = (expression)format1.Clone(); - copy.format1.Parent = copy; - copy.format2 = (expression)format2.Clone(); - copy.format2.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (expr != null) + { + copy.expr = (expression)expr.Clone(); + copy.expr.Parent = copy; + } + if (format1 != null) + { + copy.format1 = (expression)format1.Clone(); + copy.format1.Parent = copy; + } + if (format2 != null) + { + copy.format2 = (expression)format2.Clone(); + copy.format2.Parent = copy; + } return copy; } @@ -20819,11 +21840,18 @@ namespace PascalABCCompiler.SyntaxTree { initfinal_part copy = new initfinal_part(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.initialization_sect = (statement_list)initialization_sect.Clone(); - copy.initialization_sect.Parent = copy; - copy.finalization_sect = (statement_list)finalization_sect.Clone(); - copy.finalization_sect.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (initialization_sect != null) + { + copy.initialization_sect = (statement_list)initialization_sect.Clone(); + copy.initialization_sect.Parent = copy; + } + if (finalization_sect != null) + { + copy.finalization_sect = (statement_list)finalization_sect.Clone(); + copy.finalization_sect.Parent = copy; + } return copy; } @@ -20953,7 +21981,8 @@ namespace PascalABCCompiler.SyntaxTree { token_info copy = new token_info(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); + if (source_context != null) + copy.source_context = new SourceContext(source_context); copy.text = text; return copy; } @@ -21086,13 +22115,23 @@ namespace PascalABCCompiler.SyntaxTree { raise_stmt copy = new raise_stmt(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.expr = (expression)expr.Clone(); - copy.expr.Parent = copy; - copy.address = (expression)address.Clone(); - copy.address.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (expr != null) + { + copy.expr = (expression)expr.Clone(); + copy.expr.Parent = copy; + } + if (address != null) + { + copy.address = (expression)address.Clone(); + copy.address.Parent = copy; + } return copy; } @@ -21241,7 +22280,8 @@ namespace PascalABCCompiler.SyntaxTree { op_type_node copy = new op_type_node(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); + if (source_context != null) + copy.source_context = new SourceContext(source_context); copy.text = text; copy.type = type; return copy; @@ -21376,13 +22416,23 @@ namespace PascalABCCompiler.SyntaxTree { file_type copy = new file_type(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.attr_list = (type_definition_attr_list)attr_list.Clone(); - copy.attr_list.Parent = copy; - copy.file_of_type = (type_definition)file_of_type.Clone(); - copy.file_of_type.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (attr_list != null) + { + copy.attr_list = (type_definition_attr_list)attr_list.Clone(); + copy.attr_list.Parent = copy; + } + if (file_of_type != null) + { + copy.file_of_type = (type_definition)file_of_type.Clone(); + copy.file_of_type.Parent = copy; + } return copy; } @@ -21531,9 +22581,13 @@ namespace PascalABCCompiler.SyntaxTree { known_type_ident copy = new known_type_ident(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } copy.name = name; copy.type = type; return copy; @@ -21685,13 +22739,23 @@ namespace PascalABCCompiler.SyntaxTree { exception_handler copy = new exception_handler(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.variable = (ident)variable.Clone(); - copy.variable.Parent = copy; - copy.type_name = (named_type_reference)type_name.Clone(); - copy.type_name.Parent = copy; - copy.statements = (statement)statements.Clone(); - copy.statements.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (variable != null) + { + copy.variable = (ident)variable.Clone(); + copy.variable.Parent = copy; + } + if (type_name != null) + { + copy.type_name = (named_type_reference)type_name.Clone(); + copy.type_name.Parent = copy; + } + if (statements != null) + { + copy.statements = (statement)statements.Clone(); + copy.statements.Parent = copy; + } return copy; } @@ -21844,11 +22908,18 @@ namespace PascalABCCompiler.SyntaxTree { exception_ident copy = new exception_ident(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.variable = (ident)variable.Clone(); - copy.variable.Parent = copy; - copy.type_name = (named_type_reference)type_name.Clone(); - copy.type_name.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (variable != null) + { + copy.variable = (ident)variable.Clone(); + copy.variable.Parent = copy; + } + if (type_name != null) + { + copy.type_name = (named_type_reference)type_name.Clone(); + copy.type_name.Parent = copy; + } return copy; } @@ -22065,12 +23136,15 @@ namespace PascalABCCompiler.SyntaxTree { exception_handler_list copy = new exception_handler_list(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - foreach (exception_handler elem in handlers) - { - copy.Add((exception_handler)elem.Clone()); - copy.Last().Parent = copy; - } + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (handlers != null) + foreach (exception_handler elem in handlers) + if (elem != null) + { + copy.Add((exception_handler)elem.Clone()); + copy.Last().Parent = copy; + } return copy; } @@ -22237,13 +23311,23 @@ namespace PascalABCCompiler.SyntaxTree { exception_block copy = new exception_block(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.stmt_list = (statement_list)stmt_list.Clone(); - copy.stmt_list.Parent = copy; - copy.handlers = (exception_handler_list)handlers.Clone(); - copy.handlers.Parent = copy; - copy.else_stmt_list = (statement_list)else_stmt_list.Clone(); - copy.else_stmt_list.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (stmt_list != null) + { + copy.stmt_list = (statement_list)stmt_list.Clone(); + copy.stmt_list.Parent = copy; + } + if (handlers != null) + { + copy.handlers = (exception_handler_list)handlers.Clone(); + copy.handlers.Parent = copy; + } + if (else_stmt_list != null) + { + copy.else_stmt_list = (statement_list)else_stmt_list.Clone(); + copy.else_stmt_list.Parent = copy; + } return copy; } @@ -22344,7 +23428,8 @@ namespace PascalABCCompiler.SyntaxTree { try_handler copy = new try_handler(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); + if (source_context != null) + copy.source_context = new SourceContext(source_context); return copy; } @@ -22458,9 +23543,13 @@ namespace PascalABCCompiler.SyntaxTree { try_handler_finally copy = new try_handler_finally(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.stmt_list = (statement_list)stmt_list.Clone(); - copy.stmt_list.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (stmt_list != null) + { + copy.stmt_list = (statement_list)stmt_list.Clone(); + copy.stmt_list.Parent = copy; + } return copy; } @@ -22585,9 +23674,13 @@ namespace PascalABCCompiler.SyntaxTree { try_handler_except copy = new try_handler_except(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.except_block = (exception_block)except_block.Clone(); - copy.except_block.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (except_block != null) + { + copy.except_block = (exception_block)except_block.Clone(); + copy.except_block.Parent = copy; + } return copy; } @@ -22730,13 +23823,23 @@ namespace PascalABCCompiler.SyntaxTree { try_stmt copy = new try_stmt(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.stmt_list = (statement_list)stmt_list.Clone(); - copy.stmt_list.Parent = copy; - copy.handler = (try_handler)handler.Clone(); - copy.handler.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (stmt_list != null) + { + copy.stmt_list = (statement_list)stmt_list.Clone(); + copy.stmt_list.Parent = copy; + } + if (handler != null) + { + copy.handler = (try_handler)handler.Clone(); + copy.handler.Parent = copy; + } return copy; } @@ -22832,9 +23935,13 @@ namespace PascalABCCompiler.SyntaxTree { inherited_message copy = new inherited_message(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; + 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; } @@ -22966,11 +24073,18 @@ namespace PascalABCCompiler.SyntaxTree { external_directive copy = new external_directive(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.modulename = (expression)modulename.Clone(); - copy.modulename.Parent = copy; - copy.name = (expression)name.Clone(); - copy.name.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (modulename != null) + { + copy.modulename = (expression)modulename.Clone(); + copy.modulename.Parent = copy; + } + if (name != null) + { + copy.name = (expression)name.Clone(); + copy.name.Parent = copy; + } return copy; } @@ -23187,12 +24301,15 @@ namespace PascalABCCompiler.SyntaxTree { using_list copy = new using_list(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - foreach (unit_or_namespace elem in namespaces) - { - copy.Add((unit_or_namespace)elem.Clone()); - copy.Last().Parent = copy; - } + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (namespaces != null) + foreach (unit_or_namespace elem in namespaces) + if (elem != null) + { + copy.Add((unit_or_namespace)elem.Clone()); + copy.Last().Parent = copy; + } return copy; } @@ -23341,11 +24458,18 @@ namespace PascalABCCompiler.SyntaxTree { jump_stmt copy = new jump_stmt(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.expr = (expression)expr.Clone(); - copy.expr.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (expr != null) + { + copy.expr = (expression)expr.Clone(); + copy.expr.Parent = copy; + } copy.JumpType = JumpType; return copy; } @@ -23471,11 +24595,18 @@ namespace PascalABCCompiler.SyntaxTree { loop_stmt copy = new loop_stmt(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.stmt = (statement)stmt.Clone(); - copy.stmt.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (stmt != null) + { + copy.stmt = (statement)stmt.Clone(); + copy.stmt.Parent = copy; + } return copy; } @@ -23654,17 +24785,33 @@ namespace PascalABCCompiler.SyntaxTree { foreach_stmt copy = new foreach_stmt(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.identifier = (ident)identifier.Clone(); - copy.identifier.Parent = copy; - copy.type_name = (type_definition)type_name.Clone(); - copy.type_name.Parent = copy; - copy.in_what = (expression)in_what.Clone(); - copy.in_what.Parent = copy; - copy.stmt = (statement)stmt.Clone(); - copy.stmt.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (identifier != null) + { + copy.identifier = (ident)identifier.Clone(); + copy.identifier.Parent = copy; + } + if (type_name != null) + { + copy.type_name = (type_definition)type_name.Clone(); + copy.type_name.Parent = copy; + } + if (in_what != null) + { + copy.in_what = (expression)in_what.Clone(); + copy.in_what.Parent = copy; + } + if (stmt != null) + { + copy.stmt = (statement)stmt.Clone(); + copy.stmt.Parent = copy; + } return copy; } @@ -23770,9 +24917,13 @@ namespace PascalABCCompiler.SyntaxTree { addressed_value_funcname copy = new addressed_value_funcname(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; + 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; } @@ -23973,12 +25124,15 @@ namespace PascalABCCompiler.SyntaxTree { named_type_reference_list copy = new named_type_reference_list(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - foreach (named_type_reference elem in types) - { - copy.Add((named_type_reference)elem.Clone()); - copy.Last().Parent = copy; - } + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (types != null) + foreach (named_type_reference elem in types) + if (elem != null) + { + copy.Add((named_type_reference)elem.Clone()); + copy.Last().Parent = copy; + } return copy; } @@ -24215,16 +25369,25 @@ namespace PascalABCCompiler.SyntaxTree { template_param_list copy = new template_param_list(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.dereferencing_value = (addressed_value)dereferencing_value.Clone(); - copy.dereferencing_value.Parent = copy; - foreach (type_definition elem in params_list) + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) { - copy.Add((type_definition)elem.Clone()); - copy.Last().Parent = copy; + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; } + if (dereferencing_value != null) + { + copy.dereferencing_value = (addressed_value)dereferencing_value.Clone(); + copy.dereferencing_value.Parent = copy; + } + if (params_list != null) + foreach (type_definition elem in params_list) + if (elem != null) + { + copy.Add((type_definition)elem.Clone()); + copy.Last().Parent = copy; + } return copy; } @@ -24407,20 +25570,35 @@ namespace PascalABCCompiler.SyntaxTree { template_type_reference copy = new template_type_reference(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.attr_list = (type_definition_attr_list)attr_list.Clone(); - copy.attr_list.Parent = copy; - foreach (ident elem in names) + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) { - copy.Add((ident)elem.Clone()); - copy.Last().Parent = copy; + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (attr_list != null) + { + copy.attr_list = (type_definition_attr_list)attr_list.Clone(); + copy.attr_list.Parent = copy; + } + if (names != null) + foreach (ident elem in names) + if (elem != null) + { + copy.Add((ident)elem.Clone()); + copy.Last().Parent = copy; + } + if (name != null) + { + copy.name = (named_type_reference)name.Clone(); + copy.name.Parent = copy; + } + if (params_list != null) + { + copy.params_list = (template_param_list)params_list.Clone(); + copy.params_list.Parent = copy; } - copy.name = (named_type_reference)name.Clone(); - copy.name.Parent = copy; - copy.params_list = (template_param_list)params_list.Clone(); - copy.params_list.Parent = copy; return copy; } @@ -24572,9 +25750,13 @@ namespace PascalABCCompiler.SyntaxTree { int64_const copy = new int64_const(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } copy.val = val; return copy; } @@ -24689,9 +25871,13 @@ namespace PascalABCCompiler.SyntaxTree { uint64_const copy = new uint64_const(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } copy.val = val; return copy; } @@ -24860,16 +26046,29 @@ namespace PascalABCCompiler.SyntaxTree { new_expr copy = new new_expr(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.type = (type_definition)type.Clone(); - copy.type.Parent = copy; - copy.params_list = (expression_list)params_list.Clone(); - copy.params_list.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (type != null) + { + copy.type = (type_definition)type.Clone(); + copy.type.Parent = copy; + } + if (params_list != null) + { + copy.params_list = (expression_list)params_list.Clone(); + copy.params_list.Parent = copy; + } copy.new_array = new_array; - copy.array_init_expr = (array_const)array_init_expr.Clone(); - copy.array_init_expr.Parent = copy; + if (array_init_expr != null) + { + copy.array_init_expr = (array_const)array_init_expr.Clone(); + copy.array_init_expr.Parent = copy; + } return copy; } @@ -25091,12 +26290,15 @@ namespace PascalABCCompiler.SyntaxTree { where_type_specificator_list copy = new where_type_specificator_list(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - foreach (type_definition elem in defs) - { - copy.Add((type_definition)elem.Clone()); - copy.Last().Parent = copy; - } + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (defs != null) + foreach (type_definition elem in defs) + if (elem != null) + { + copy.Add((type_definition)elem.Clone()); + copy.Last().Parent = copy; + } return copy; } @@ -25245,11 +26447,18 @@ namespace PascalABCCompiler.SyntaxTree { where_definition copy = new where_definition(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.names = (ident_list)names.Clone(); - copy.names.Parent = copy; - copy.types = (where_type_specificator_list)types.Clone(); - copy.types.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (names != null) + { + copy.names = (ident_list)names.Clone(); + copy.names.Parent = copy; + } + if (types != null) + { + copy.types = (where_type_specificator_list)types.Clone(); + copy.types.Parent = copy; + } return copy; } @@ -25466,12 +26675,15 @@ namespace PascalABCCompiler.SyntaxTree { where_definition_list copy = new where_definition_list(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - foreach (where_definition elem in defs) - { - copy.Add((where_definition)elem.Clone()); - copy.Last().Parent = copy; - } + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (defs != null) + foreach (where_definition elem in defs) + if (elem != null) + { + copy.Add((where_definition)elem.Clone()); + copy.Last().Parent = copy; + } return copy; } @@ -25620,13 +26832,23 @@ namespace PascalABCCompiler.SyntaxTree { sizeof_operator copy = new sizeof_operator(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.type_def = (type_definition)type_def.Clone(); - copy.type_def.Parent = copy; - copy.expr = (expression)expr.Clone(); - copy.expr.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (type_def != null) + { + copy.type_def = (type_definition)type_def.Clone(); + copy.type_def.Parent = copy; + } + if (expr != null) + { + copy.expr = (expression)expr.Clone(); + copy.expr.Parent = copy; + } return copy; } @@ -25756,11 +26978,18 @@ namespace PascalABCCompiler.SyntaxTree { typeof_operator copy = new typeof_operator(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.type_name = (named_type_reference)type_name.Clone(); - copy.type_name.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (type_name != null) + { + copy.type_name = (named_type_reference)type_name.Clone(); + copy.type_name.Parent = copy; + } return copy; } @@ -25903,11 +27132,18 @@ namespace PascalABCCompiler.SyntaxTree { compiler_directive copy = new compiler_directive(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.Name = (token_info)Name.Clone(); - copy.Name.Parent = copy; - copy.Directive = (token_info)Directive.Clone(); - copy.Directive.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (Name != null) + { + copy.Name = (token_info)Name.Clone(); + copy.Name.Parent = copy; + } + if (Directive != null) + { + copy.Directive = (token_info)Directive.Clone(); + copy.Directive.Parent = copy; + } return copy; } @@ -26056,9 +27292,13 @@ namespace PascalABCCompiler.SyntaxTree { operator_name_ident copy = new operator_name_ident(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } copy.name = name; copy.operator_type = operator_type; return copy; @@ -26174,11 +27414,18 @@ namespace PascalABCCompiler.SyntaxTree { var_statement copy = new var_statement(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.var_def = (var_def_statement)var_def.Clone(); - copy.var_def.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (var_def != null) + { + copy.var_def = (var_def_statement)var_def.Clone(); + copy.var_def.Parent = copy; + } return copy; } @@ -26339,15 +27586,28 @@ namespace PascalABCCompiler.SyntaxTree { question_colon_expression copy = new question_colon_expression(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.condition = (expression)condition.Clone(); - copy.condition.Parent = copy; - copy.ret_if_true = (expression)ret_if_true.Clone(); - copy.ret_if_true.Parent = copy; - copy.ret_if_false = (expression)ret_if_false.Clone(); - copy.ret_if_false.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (condition != null) + { + copy.condition = (expression)condition.Clone(); + copy.condition.Parent = copy; + } + if (ret_if_true != null) + { + copy.ret_if_true = (expression)ret_if_true.Clone(); + copy.ret_if_true.Parent = copy; + } + if (ret_if_false != null) + { + copy.ret_if_false = (expression)ret_if_false.Clone(); + copy.ret_if_false.Parent = copy; + } return copy; } @@ -26482,11 +27742,18 @@ namespace PascalABCCompiler.SyntaxTree { expression_as_statement copy = new expression_as_statement(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.expr = (expression)expr.Clone(); - copy.expr.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (expr != null) + { + copy.expr = (expression)expr.Clone(); + copy.expr.Parent = copy; + } return copy; } @@ -26650,11 +27917,18 @@ namespace PascalABCCompiler.SyntaxTree { c_scalar_type copy = new c_scalar_type(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.attr_list = (type_definition_attr_list)attr_list.Clone(); - copy.attr_list.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (attr_list != null) + { + copy.attr_list = (type_definition_attr_list)attr_list.Clone(); + copy.attr_list.Parent = copy; + } copy.scalar_name = scalar_name; copy.sign = sign; return copy; @@ -26824,18 +28098,27 @@ namespace PascalABCCompiler.SyntaxTree { c_module copy = new c_module(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); + if (source_context != null) + copy.source_context = new SourceContext(source_context); copy.file_name = file_name; - foreach (compiler_directive elem in compiler_directives) - { - copy.Add((compiler_directive)elem.Clone()); - copy.Last().Parent = copy; - } + if (compiler_directives != null) + foreach (compiler_directive elem in compiler_directives) + if (elem != null) + { + copy.Add((compiler_directive)elem.Clone()); + copy.Last().Parent = copy; + } copy.Language = Language; - copy.defs = (declarations)defs.Clone(); - copy.defs.Parent = copy; - copy.used_units = (uses_list)used_units.Clone(); - copy.used_units.Parent = copy; + if (defs != null) + { + copy.defs = (declarations)defs.Clone(); + copy.defs.Parent = copy; + } + if (used_units != null) + { + copy.used_units = (uses_list)used_units.Clone(); + copy.used_units.Parent = copy; + } return copy; } @@ -26982,11 +28265,18 @@ namespace PascalABCCompiler.SyntaxTree { declarations_as_statement copy = new declarations_as_statement(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.defs = (declarations)defs.Clone(); - copy.defs.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (defs != null) + { + copy.defs = (declarations)defs.Clone(); + copy.defs.Parent = copy; + } return copy; } @@ -27130,13 +28420,23 @@ namespace PascalABCCompiler.SyntaxTree { array_size copy = new array_size(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.attr_list = (type_definition_attr_list)attr_list.Clone(); - copy.attr_list.Parent = copy; - copy.max_value = (expression)max_value.Clone(); - copy.max_value.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (attr_list != null) + { + copy.attr_list = (type_definition_attr_list)attr_list.Clone(); + copy.attr_list.Parent = copy; + } + if (max_value != null) + { + copy.max_value = (expression)max_value.Clone(); + copy.max_value.Parent = copy; + } return copy; } @@ -27284,11 +28584,18 @@ namespace PascalABCCompiler.SyntaxTree { enumerator copy = new enumerator(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.name = (type_definition)name.Clone(); - copy.name.Parent = copy; - copy.value = (expression)value.Clone(); - copy.value.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (name != null) + { + copy.name = (type_definition)name.Clone(); + copy.name.Parent = copy; + } + if (value != null) + { + copy.value = (expression)value.Clone(); + copy.value.Parent = copy; + } return copy; } @@ -27505,12 +28812,15 @@ namespace PascalABCCompiler.SyntaxTree { enumerator_list copy = new enumerator_list(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - foreach (enumerator elem in enumerators) - { - copy.Add((enumerator)elem.Clone()); - copy.Last().Parent = copy; - } + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (enumerators != null) + foreach (enumerator elem in enumerators) + if (elem != null) + { + copy.Add((enumerator)elem.Clone()); + copy.Last().Parent = copy; + } return copy; } @@ -27695,17 +29005,33 @@ namespace PascalABCCompiler.SyntaxTree { c_for_cycle copy = new c_for_cycle(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.expr1 = (statement)expr1.Clone(); - copy.expr1.Parent = copy; - copy.expr2 = (expression)expr2.Clone(); - copy.expr2.Parent = copy; - copy.expr3 = (expression)expr3.Clone(); - copy.expr3.Parent = copy; - copy.stmt = (statement)stmt.Clone(); - copy.stmt.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (expr1 != null) + { + copy.expr1 = (statement)expr1.Clone(); + copy.expr1.Parent = copy; + } + if (expr2 != null) + { + copy.expr2 = (expression)expr2.Clone(); + copy.expr2.Parent = copy; + } + if (expr3 != null) + { + copy.expr3 = (expression)expr3.Clone(); + copy.expr3.Parent = copy; + } + if (stmt != null) + { + copy.stmt = (statement)stmt.Clone(); + copy.stmt.Parent = copy; + } return copy; } @@ -27881,13 +29207,23 @@ namespace PascalABCCompiler.SyntaxTree { switch_stmt copy = new switch_stmt(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.condition = (expression)condition.Clone(); - copy.condition.Parent = copy; - copy.stmt = (statement)stmt.Clone(); - copy.stmt.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (condition != null) + { + copy.condition = (expression)condition.Clone(); + copy.condition.Parent = copy; + } + if (stmt != null) + { + copy.stmt = (statement)stmt.Clone(); + copy.stmt.Parent = copy; + } copy.Part = Part; return copy; } @@ -28105,12 +29441,15 @@ namespace PascalABCCompiler.SyntaxTree { type_definition_attr_list copy = new type_definition_attr_list(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - foreach (type_definition_attr elem in attributes) - { - copy.Add((type_definition_attr)elem.Clone()); - copy.Last().Parent = copy; - } + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + foreach (type_definition_attr elem in attributes) + if (elem != null) + { + copy.Add((type_definition_attr)elem.Clone()); + copy.Last().Parent = copy; + } return copy; } @@ -28260,11 +29599,18 @@ namespace PascalABCCompiler.SyntaxTree { type_definition_attr copy = new type_definition_attr(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.attr_list = (type_definition_attr_list)attr_list.Clone(); - copy.attr_list.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (attr_list != null) + { + copy.attr_list = (type_definition_attr_list)attr_list.Clone(); + copy.attr_list.Parent = copy; + } copy.attr = attr; return copy; } @@ -28408,13 +29754,23 @@ namespace PascalABCCompiler.SyntaxTree { lock_stmt copy = new lock_stmt(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.lock_object = (expression)lock_object.Clone(); - copy.lock_object.Parent = copy; - copy.stmt = (statement)stmt.Clone(); - copy.stmt.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (lock_object != null) + { + copy.lock_object = (expression)lock_object.Clone(); + copy.lock_object.Parent = copy; + } + if (stmt != null) + { + copy.stmt = (statement)stmt.Clone(); + copy.stmt.Parent = copy; + } return copy; } @@ -28652,16 +30008,25 @@ namespace PascalABCCompiler.SyntaxTree { compiler_directive_list copy = new compiler_directive_list(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.Name = (token_info)Name.Clone(); - copy.Name.Parent = copy; - copy.Directive = (token_info)Directive.Clone(); - copy.Directive.Parent = copy; - foreach (compiler_directive elem in directives) + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (Name != null) { - copy.Add((compiler_directive)elem.Clone()); - copy.Last().Parent = copy; + copy.Name = (token_info)Name.Clone(); + copy.Name.Parent = copy; } + if (Directive != null) + { + copy.Directive = (token_info)Directive.Clone(); + copy.Directive.Parent = copy; + } + if (directives != null) + foreach (compiler_directive elem in directives) + if (elem != null) + { + copy.Add((compiler_directive)elem.Clone()); + copy.Last().Parent = copy; + } return copy; } @@ -28849,15 +30214,28 @@ namespace PascalABCCompiler.SyntaxTree { compiler_directive_if copy = new compiler_directive_if(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.Name = (token_info)Name.Clone(); - copy.Name.Parent = copy; - copy.Directive = (token_info)Directive.Clone(); - copy.Directive.Parent = copy; - copy.if_part = (compiler_directive)if_part.Clone(); - copy.if_part.Parent = copy; - copy.elseif_part = (compiler_directive)elseif_part.Clone(); - copy.elseif_part.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (Name != null) + { + copy.Name = (token_info)Name.Clone(); + copy.Name.Parent = copy; + } + if (Directive != null) + { + copy.Directive = (token_info)Directive.Clone(); + copy.Directive.Parent = copy; + } + if (if_part != null) + { + copy.if_part = (compiler_directive)if_part.Clone(); + copy.if_part.Parent = copy; + } + if (elseif_part != null) + { + copy.elseif_part = (compiler_directive)elseif_part.Clone(); + copy.elseif_part.Parent = copy; + } return copy; } @@ -29084,12 +30462,15 @@ namespace PascalABCCompiler.SyntaxTree { documentation_comment_list copy = new documentation_comment_list(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - foreach (documentation_comment_section elem in sections) - { - copy.Add((documentation_comment_section)elem.Clone()); - copy.Last().Parent = copy; - } + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (sections != null) + foreach (documentation_comment_section elem in sections) + if (elem != null) + { + copy.Add((documentation_comment_section)elem.Clone()); + copy.Last().Parent = copy; + } return copy; } @@ -29343,13 +30724,16 @@ namespace PascalABCCompiler.SyntaxTree { documentation_comment_tag copy = new documentation_comment_tag(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); + if (source_context != null) + copy.source_context = new SourceContext(source_context); copy.name = name; - foreach (documentation_comment_tag_param elem in parameters) - { - copy.Add((documentation_comment_tag_param)elem.Clone()); - copy.Last().Parent = copy; - } + if (parameters != null) + foreach (documentation_comment_tag_param elem in parameters) + if (elem != null) + { + copy.Add((documentation_comment_tag_param)elem.Clone()); + copy.Last().Parent = copy; + } copy.text = text; return copy; } @@ -29499,7 +30883,8 @@ namespace PascalABCCompiler.SyntaxTree { documentation_comment_tag_param copy = new documentation_comment_tag_param(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); + if (source_context != null) + copy.source_context = new SourceContext(source_context); copy.name = name; copy.value = value; return copy; @@ -29720,12 +31105,15 @@ namespace PascalABCCompiler.SyntaxTree { documentation_comment_section copy = new documentation_comment_section(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - foreach (documentation_comment_tag elem in tags) - { - copy.Add((documentation_comment_tag)elem.Clone()); - copy.Last().Parent = copy; - } + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (tags != null) + foreach (documentation_comment_tag elem in tags) + if (elem != null) + { + copy.Add((documentation_comment_tag)elem.Clone()); + copy.Last().Parent = copy; + } copy.text = text; return copy; } @@ -29876,7 +31264,8 @@ namespace PascalABCCompiler.SyntaxTree { token_taginfo copy = new token_taginfo(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); + if (source_context != null) + copy.source_context = new SourceContext(source_context); copy.text = text; copy.tag = tag; return copy; @@ -30031,11 +31420,18 @@ namespace PascalABCCompiler.SyntaxTree { declaration_specificator copy = new declaration_specificator(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.attr_list = (type_definition_attr_list)attr_list.Clone(); - copy.attr_list.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (attr_list != null) + { + copy.attr_list = (type_definition_attr_list)attr_list.Clone(); + copy.attr_list.Parent = copy; + } copy.specificator = specificator; copy.name = name; return copy; @@ -30180,13 +31576,23 @@ namespace PascalABCCompiler.SyntaxTree { ident_with_templateparams copy = new ident_with_templateparams(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.name = (addressed_value)name.Clone(); - copy.name.Parent = copy; - copy.template_params = (template_param_list)template_params.Clone(); - copy.template_params.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (name != null) + { + copy.name = (addressed_value)name.Clone(); + copy.name.Parent = copy; + } + if (template_params != null) + { + copy.template_params = (template_param_list)template_params.Clone(); + copy.template_params.Parent = copy; + } return copy; } @@ -30335,12 +31741,19 @@ namespace PascalABCCompiler.SyntaxTree { template_type_name copy = new template_type_name(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } copy.name = name; - copy.template_args = (ident_list)template_args.Clone(); - copy.template_args.Parent = copy; + if (template_args != null) + { + copy.template_args = (ident_list)template_args.Clone(); + copy.template_args.Parent = copy; + } return copy; } @@ -30465,11 +31878,18 @@ namespace PascalABCCompiler.SyntaxTree { default_operator copy = new default_operator(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.type_name = (named_type_reference)type_name.Clone(); - copy.type_name.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (type_name != null) + { + copy.type_name = (named_type_reference)type_name.Clone(); + copy.type_name.Parent = copy; + } return copy; } @@ -30594,11 +32014,18 @@ namespace PascalABCCompiler.SyntaxTree { bracket_expr copy = new bracket_expr(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.expr = (expression)expr.Clone(); - copy.expr.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (expr != null) + { + copy.expr = (expression)expr.Clone(); + copy.expr.Parent = copy; + } return copy; } @@ -30759,13 +32186,23 @@ namespace PascalABCCompiler.SyntaxTree { attribute copy = new attribute(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.qualifier = (ident)qualifier.Clone(); - copy.qualifier.Parent = copy; - copy.type = (named_type_reference)type.Clone(); - copy.type.Parent = copy; - copy.arguments = (expression_list)arguments.Clone(); - copy.arguments.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (qualifier != null) + { + copy.qualifier = (ident)qualifier.Clone(); + copy.qualifier.Parent = copy; + } + if (type != null) + { + copy.type = (named_type_reference)type.Clone(); + copy.type.Parent = copy; + } + if (arguments != null) + { + copy.arguments = (expression_list)arguments.Clone(); + copy.arguments.Parent = copy; + } return copy; } @@ -30987,12 +32424,15 @@ namespace PascalABCCompiler.SyntaxTree { simple_attribute_list copy = new simple_attribute_list(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - foreach (attribute elem in attributes) - { - copy.Add((attribute)elem.Clone()); - copy.Last().Parent = copy; - } + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + foreach (attribute elem in attributes) + if (elem != null) + { + copy.Add((attribute)elem.Clone()); + copy.Last().Parent = copy; + } return copy; } @@ -31210,12 +32650,15 @@ namespace PascalABCCompiler.SyntaxTree { attribute_list copy = new attribute_list(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - foreach (simple_attribute_list elem in attributes) - { - copy.Add((simple_attribute_list)elem.Clone()); - copy.Last().Parent = copy; - } + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + foreach (simple_attribute_list elem in attributes) + if (elem != null) + { + copy.Add((simple_attribute_list)elem.Clone()); + copy.Last().Parent = copy; + } return copy; } @@ -31613,30 +33056,57 @@ namespace PascalABCCompiler.SyntaxTree { function_lambda_definition copy = new function_lambda_definition(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.ident_list = (ident_list)ident_list.Clone(); - copy.ident_list.Parent = copy; - copy.return_type = (type_definition)return_type.Clone(); - copy.return_type.Parent = copy; - copy.formal_parameters = (formal_parameters)formal_parameters.Clone(); - copy.formal_parameters.Parent = copy; - copy.proc_body = (statement)proc_body.Clone(); - copy.proc_body.Parent = copy; - copy.proc_definition = (procedure_definition)proc_definition.Clone(); - copy.proc_definition.Parent = copy; - copy.parameters = (expression_list)parameters.Clone(); - copy.parameters.Parent = copy; - copy.lambda_name = lambda_name; - foreach (declaration elem in defs) + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) { - copy.Add((declaration)elem.Clone()); - copy.Last().Parent = copy; + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; } + if (ident_list != null) + { + copy.ident_list = (ident_list)ident_list.Clone(); + copy.ident_list.Parent = copy; + } + if (return_type != null) + { + copy.return_type = (type_definition)return_type.Clone(); + copy.return_type.Parent = copy; + } + if (formal_parameters != null) + { + copy.formal_parameters = (formal_parameters)formal_parameters.Clone(); + copy.formal_parameters.Parent = copy; + } + if (proc_body != null) + { + copy.proc_body = (statement)proc_body.Clone(); + copy.proc_body.Parent = copy; + } + if (proc_definition != null) + { + copy.proc_definition = (procedure_definition)proc_definition.Clone(); + copy.proc_definition.Parent = copy; + } + if (parameters != null) + { + copy.parameters = (expression_list)parameters.Clone(); + copy.parameters.Parent = copy; + } + copy.lambda_name = lambda_name; + if (defs != null) + foreach (declaration elem in defs) + if (elem != null) + { + copy.Add((declaration)elem.Clone()); + copy.Last().Parent = copy; + } copy.lambda_visit_mode = lambda_visit_mode; - copy.substituting_node = substituting_node.Clone(); - copy.substituting_node.Parent = copy; + if (substituting_node != null) + { + copy.substituting_node = substituting_node.Clone(); + copy.substituting_node.Parent = copy; + } copy.usedkeyword = usedkeyword; return copy; } @@ -31827,13 +33297,23 @@ namespace PascalABCCompiler.SyntaxTree { function_lambda_call copy = new function_lambda_call(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.f_lambda_def = (function_lambda_definition)f_lambda_def.Clone(); - copy.f_lambda_def.Parent = copy; - copy.parameters = (expression_list)parameters.Clone(); - copy.parameters.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (f_lambda_def != null) + { + copy.f_lambda_def = (function_lambda_definition)f_lambda_def.Clone(); + copy.f_lambda_def.Parent = copy; + } + if (parameters != null) + { + copy.parameters = (expression_list)parameters.Clone(); + copy.parameters.Parent = copy; + } return copy; } @@ -32086,15 +33566,21 @@ namespace PascalABCCompiler.SyntaxTree { semantic_check copy = new semantic_check(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.CheckName = CheckName; - foreach (syntax_tree_node elem in param) + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) { - copy.Add(elem.Clone()); - copy.Last().Parent = copy; + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; } + copy.CheckName = CheckName; + if (param != null) + foreach (syntax_tree_node elem in param) + if (elem != null) + { + copy.Add(elem.Clone()); + copy.Last().Parent = copy; + } copy.fictive = fictive; return copy; } @@ -32245,11 +33731,18 @@ namespace PascalABCCompiler.SyntaxTree { lambda_inferred_type copy = new lambda_inferred_type(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.attr_list = (type_definition_attr_list)attr_list.Clone(); - copy.attr_list.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (attr_list != null) + { + copy.attr_list = (type_definition_attr_list)attr_list.Clone(); + copy.attr_list.Parent = copy; + } copy.real_type = real_type; return copy; } @@ -32394,13 +33887,23 @@ namespace PascalABCCompiler.SyntaxTree { same_type_node copy = new same_type_node(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.attr_list = (type_definition_attr_list)attr_list.Clone(); - copy.attr_list.Parent = copy; - copy.ex = (expression)ex.Clone(); - copy.ex.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (attr_list != null) + { + copy.attr_list = (type_definition_attr_list)attr_list.Clone(); + copy.attr_list.Parent = copy; + } + if (ex != null) + { + copy.ex = (expression)ex.Clone(); + copy.ex.Parent = copy; + } return copy; } @@ -32548,11 +34051,18 @@ namespace PascalABCCompiler.SyntaxTree { name_assign_expr copy = new name_assign_expr(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.name = (ident)name.Clone(); - copy.name.Parent = copy; - copy.expr = (expression)expr.Clone(); - copy.expr.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (name != null) + { + copy.name = (ident)name.Clone(); + copy.name.Parent = copy; + } + if (expr != null) + { + copy.expr = (expression)expr.Clone(); + copy.expr.Parent = copy; + } return copy; } @@ -32769,12 +34279,15 @@ namespace PascalABCCompiler.SyntaxTree { name_assign_expr_list copy = new name_assign_expr_list(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - foreach (name_assign_expr elem in name_expr) - { - copy.Add((name_assign_expr)elem.Clone()); - copy.Last().Parent = copy; - } + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (name_expr != null) + foreach (name_assign_expr elem in name_expr) + if (elem != null) + { + copy.Add((name_assign_expr)elem.Clone()); + copy.Last().Parent = copy; + } return copy; } @@ -32943,14 +34456,24 @@ namespace PascalABCCompiler.SyntaxTree { unnamed_type_object copy = new unnamed_type_object(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.ne_list = (name_assign_expr_list)ne_list.Clone(); - copy.ne_list.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (ne_list != null) + { + copy.ne_list = (name_assign_expr_list)ne_list.Clone(); + copy.ne_list.Parent = copy; + } copy.is_class = is_class; - copy.new_ex = (new_expr)new_ex.Clone(); - copy.new_ex.Parent = copy; + if (new_ex != null) + { + copy.new_ex = (new_expr)new_ex.Clone(); + copy.new_ex.Parent = copy; + } return copy; } @@ -33099,11 +34622,18 @@ namespace PascalABCCompiler.SyntaxTree { semantic_type_node copy = new semantic_type_node(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.attr_list = (type_definition_attr_list)attr_list.Clone(); - copy.attr_list.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (attr_list != null) + { + copy.attr_list = (type_definition_attr_list)attr_list.Clone(); + copy.attr_list.Parent = copy; + } copy.type = type; return copy; } @@ -33252,16 +34782,29 @@ namespace PascalABCCompiler.SyntaxTree { short_func_definition copy = new short_func_definition(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.proc_header = (procedure_header)proc_header.Clone(); - copy.proc_header.Parent = copy; - copy.proc_body = (proc_block)proc_body.Clone(); - copy.proc_body.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (proc_header != null) + { + copy.proc_header = (procedure_header)proc_header.Clone(); + copy.proc_header.Parent = copy; + } + if (proc_body != null) + { + copy.proc_body = (proc_block)proc_body.Clone(); + copy.proc_body.Parent = copy; + } copy.is_short_definition = is_short_definition; - copy.procdef = (procedure_definition)procdef.Clone(); - copy.procdef.Parent = copy; + if (procdef != null) + { + copy.procdef = (procedure_definition)procdef.Clone(); + copy.procdef.Parent = copy; + } return copy; } @@ -33379,11 +34922,18 @@ namespace PascalABCCompiler.SyntaxTree { no_type_foreach copy = new no_type_foreach(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.attr_list = (type_definition_attr_list)attr_list.Clone(); - copy.attr_list.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (attr_list != null) + { + copy.attr_list = (type_definition_attr_list)attr_list.Clone(); + copy.attr_list.Parent = copy; + } return copy; } @@ -33526,13 +35076,23 @@ namespace PascalABCCompiler.SyntaxTree { matching_expression copy = new matching_expression(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.left = (expression)left.Clone(); - copy.left.Parent = copy; - copy.right = (expression)right.Clone(); - copy.right.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (left != null) + { + copy.left = (expression)left.Clone(); + copy.left.Parent = copy; + } + if (right != null) + { + copy.right = (expression)right.Clone(); + copy.right.Parent = copy; + } return copy; } @@ -33681,12 +35241,19 @@ namespace PascalABCCompiler.SyntaxTree { closure_substituting_node copy = new closure_substituting_node(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } copy.name = name; - copy.substitution = (dot_node)substitution.Clone(); - copy.substitution.Parent = copy; + if (substitution != null) + { + copy.substitution = (dot_node)substitution.Clone(); + copy.substitution.Parent = copy; + } return copy; } @@ -33830,13 +35397,23 @@ namespace PascalABCCompiler.SyntaxTree { sequence_type copy = new sequence_type(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.attr_list = (type_definition_attr_list)attr_list.Clone(); - copy.attr_list.Parent = copy; - copy.elements_type = (type_definition)elements_type.Clone(); - copy.elements_type.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (attr_list != null) + { + copy.attr_list = (type_definition_attr_list)attr_list.Clone(); + copy.attr_list.Parent = copy; + } + if (elements_type != null) + { + copy.elements_type = (type_definition)elements_type.Clone(); + copy.elements_type.Parent = copy; + } return copy; } @@ -34025,17 +35602,33 @@ namespace PascalABCCompiler.SyntaxTree { modern_proc_type copy = new modern_proc_type(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.attr_list = (type_definition_attr_list)attr_list.Clone(); - copy.attr_list.Parent = copy; - copy.aloneparam = (type_definition)aloneparam.Clone(); - copy.aloneparam.Parent = copy; - copy.el = (enumerator_list)el.Clone(); - copy.el.Parent = copy; - copy.res = (type_definition)res.Clone(); - copy.res.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (attr_list != null) + { + copy.attr_list = (type_definition_attr_list)attr_list.Clone(); + copy.attr_list.Parent = copy; + } + if (aloneparam != null) + { + copy.aloneparam = (type_definition)aloneparam.Clone(); + copy.aloneparam.Parent = copy; + } + if (el != null) + { + copy.el = (enumerator_list)el.Clone(); + copy.el.Parent = copy; + } + if (res != null) + { + copy.res = (type_definition)res.Clone(); + copy.res.Parent = copy; + } return copy; } @@ -34175,11 +35768,18 @@ namespace PascalABCCompiler.SyntaxTree { yield_node copy = new yield_node(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.ex = (expression)ex.Clone(); - copy.ex.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (ex != null) + { + copy.ex = (expression)ex.Clone(); + copy.ex.Parent = copy; + } return copy; } @@ -34325,14 +35925,24 @@ namespace PascalABCCompiler.SyntaxTree { template_operator_name copy = new template_operator_name(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } copy.name = name; - copy.template_args = (ident_list)template_args.Clone(); - copy.template_args.Parent = copy; - copy.opname = (operator_name_ident)opname.Clone(); - copy.opname.Parent = copy; + if (template_args != null) + { + copy.template_args = (ident_list)template_args.Clone(); + copy.template_args.Parent = copy; + } + if (opname != null) + { + copy.opname = (operator_name_ident)opname.Clone(); + copy.opname.Parent = copy; + } return copy; } @@ -34462,9 +36072,13 @@ namespace PascalABCCompiler.SyntaxTree { semantic_addr_value copy = new semantic_addr_value(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } copy.expr = expr; return copy; } @@ -34597,11 +36211,18 @@ namespace PascalABCCompiler.SyntaxTree { pair_type_stlist copy = new pair_type_stlist(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.tn = (type_definition)tn.Clone(); - copy.tn.Parent = copy; - copy.exprs = (statement_list)exprs.Clone(); - copy.exprs.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (tn != null) + { + copy.tn = (type_definition)tn.Clone(); + copy.tn.Parent = copy; + } + if (exprs != null) + { + copy.exprs = (statement_list)exprs.Clone(); + copy.exprs.Parent = copy; + } return copy; } @@ -34749,13 +36370,23 @@ namespace PascalABCCompiler.SyntaxTree { assign_tuple copy = new assign_tuple(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.vars = (addressed_value_list)vars.Clone(); - copy.vars.Parent = copy; - copy.expr = (expression)expr.Clone(); - copy.expr.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (vars != null) + { + copy.vars = (addressed_value_list)vars.Clone(); + copy.vars.Parent = copy; + } + if (expr != null) + { + copy.expr = (expression)expr.Clone(); + copy.expr.Parent = copy; + } return copy; } @@ -34972,12 +36603,15 @@ namespace PascalABCCompiler.SyntaxTree { addressed_value_list copy = new addressed_value_list(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - foreach (addressed_value elem in variables) - { - copy.Add((addressed_value)elem.Clone()); - copy.Last().Parent = copy; - } + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (variables != null) + foreach (addressed_value elem in variables) + if (elem != null) + { + copy.Add((addressed_value)elem.Clone()); + copy.Last().Parent = copy; + } return copy; } @@ -35108,11 +36742,18 @@ namespace PascalABCCompiler.SyntaxTree { tuple_node_for_formatter copy = new tuple_node_for_formatter(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.el = (expression_list)el.Clone(); - copy.el.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (el != null) + { + copy.el = (expression_list)el.Clone(); + copy.el.Parent = copy; + } return copy; } @@ -35343,17 +36984,22 @@ namespace PascalABCCompiler.SyntaxTree { uses_closure copy = new uses_closure(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - foreach (unit_or_namespace elem in units) - { - copy.Add((unit_or_namespace)elem.Clone()); - copy.Last().Parent = copy; - } - foreach (uses_list elem in listunitsections) - { - copy.Add((uses_list)elem.Clone()); - copy.Last().Parent = copy; - } + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (units != null) + foreach (unit_or_namespace elem in units) + if (elem != null) + { + copy.Add((unit_or_namespace)elem.Clone()); + copy.Last().Parent = copy; + } + if (listunitsections != null) + foreach (uses_list elem in listunitsections) + if (elem != null) + { + copy.Add((uses_list)elem.Clone()); + copy.Last().Parent = copy; + } return copy; } @@ -35521,13 +37167,23 @@ namespace PascalABCCompiler.SyntaxTree { dot_question_node copy = new dot_question_node(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.left = (addressed_value)left.Clone(); - copy.left.Parent = copy; - copy.right = (addressed_value)right.Clone(); - copy.right.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (left != null) + { + copy.left = (addressed_value)left.Clone(); + copy.left.Parent = copy; + } + if (right != null) + { + copy.right = (addressed_value)right.Clone(); + copy.right.Parent = copy; + } return copy; } @@ -35736,19 +37392,38 @@ namespace PascalABCCompiler.SyntaxTree { slice_expr copy = new slice_expr(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.dereferencing_value = (addressed_value)dereferencing_value.Clone(); - copy.dereferencing_value.Parent = copy; - copy.v = (addressed_value)v.Clone(); - copy.v.Parent = copy; - copy.from = (expression)from.Clone(); - copy.from.Parent = copy; - copy.to = (expression)to.Clone(); - copy.to.Parent = copy; - copy.step = (expression)step.Clone(); - copy.step.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (dereferencing_value != null) + { + copy.dereferencing_value = (addressed_value)dereferencing_value.Clone(); + copy.dereferencing_value.Parent = copy; + } + if (v != null) + { + copy.v = (addressed_value)v.Clone(); + copy.v.Parent = copy; + } + if (from != null) + { + copy.from = (expression)from.Clone(); + copy.from.Parent = copy; + } + if (to != null) + { + copy.to = (expression)to.Clone(); + copy.to.Parent = copy; + } + if (step != null) + { + copy.step = (expression)step.Clone(); + copy.step.Parent = copy; + } return copy; } @@ -35876,11 +37551,18 @@ namespace PascalABCCompiler.SyntaxTree { no_type copy = new no_type(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.attr_list = (type_definition_attr_list)attr_list.Clone(); - copy.attr_list.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (attr_list != null) + { + copy.attr_list = (type_definition_attr_list)attr_list.Clone(); + copy.attr_list.Parent = copy; + } return copy; } @@ -35988,9 +37670,13 @@ namespace PascalABCCompiler.SyntaxTree { yield_unknown_ident copy = new yield_unknown_ident(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } copy.name = name; return copy; } @@ -36088,11 +37774,18 @@ namespace PascalABCCompiler.SyntaxTree { yield_unknown_expression_type copy = new yield_unknown_expression_type(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.attr_list = (type_definition_attr_list)attr_list.Clone(); - copy.attr_list.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (attr_list != null) + { + copy.attr_list = (type_definition_attr_list)attr_list.Clone(); + copy.attr_list.Parent = copy; + } return copy; } @@ -36200,11 +37893,18 @@ namespace PascalABCCompiler.SyntaxTree { yield_unknown_foreach_type copy = new yield_unknown_foreach_type(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.attr_list = (type_definition_attr_list)attr_list.Clone(); - copy.attr_list.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (attr_list != null) + { + copy.attr_list = (type_definition_attr_list)attr_list.Clone(); + copy.attr_list.Parent = copy; + } return copy; } @@ -36329,11 +38029,18 @@ namespace PascalABCCompiler.SyntaxTree { yield_sequence_node copy = new yield_sequence_node(); copy.Parent = this.Parent; - copy.source_context = new SourceContext(source_context); - copy.attributes = (attribute_list)attributes.Clone(); - copy.attributes.Parent = copy; - copy.ex = (expression)ex.Clone(); - copy.ex.Parent = copy; + if (source_context != null) + copy.source_context = new SourceContext(source_context); + if (attributes != null) + { + copy.attributes = (attribute_list)attributes.Clone(); + copy.attributes.Parent = copy; + } + if (ex != null) + { + copy.ex = (expression)ex.Clone(); + copy.ex.Parent = copy; + } return copy; } diff --git a/SyntaxTree/tree/TreeSubsidiary.cs b/SyntaxTree/tree/TreeSubsidiary.cs index 881569ede..a514db2be 100644 --- a/SyntaxTree/tree/TreeSubsidiary.cs +++ b/SyntaxTree/tree/TreeSubsidiary.cs @@ -277,8 +277,13 @@ namespace PascalABCCompiler.SyntaxTree public SourceContext(SourceContext sc) { - _begin_position = new file_position(sc._begin_position.line_num, sc._begin_position.column_num); - _end_position = new file_position(sc._end_position.line_num, sc.end_position.column_num); + if (sc == null) + throw new ArgumentNullException(nameof(sc)); + + if (sc._begin_position != null) + _begin_position = new file_position(sc._begin_position.line_num, sc._begin_position.column_num); + if (sc._end_position != null) + _end_position = new file_position(sc._end_position.line_num, sc.end_position.column_num); _begin_symbol_position = sc._begin_symbol_position; _end_symbol_position = sc._end_symbol_position; _file_name = sc._file_name; diff --git a/SyntaxTree/tree/tree.nin b/SyntaxTree/tree/tree.nin index 50e38812dd0a9d17dc5cde749a9cd3620a0bc9cd..57ef673fb132aceb6405ed3b707f5e5b46aee2bd 100644 GIT binary patch delta 32793 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%0DS`b6!aPBb3<|<*RN*E?1iF{ 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 diff --git a/Utils/NodesGeneratorNew/NodeGenerator.cs b/Utils/NodesGeneratorNew/NodeGenerator.cs index 984b0efd9..85a5fe302 100644 --- a/Utils/NodesGeneratorNew/NodeGenerator.cs +++ b/Utils/NodesGeneratorNew/NodeGenerator.cs @@ -523,6 +523,18 @@ namespace NodeGenerator _streamWriter = writer; } + public void OpenBlock() + { + WriteLine('{'); + Indent++; + } + + public void CloseBlock() + { + Indent--; + WriteLine('}'); + } + public void Write(string text) { _streamWriter.Write(IndentString); @@ -830,8 +842,11 @@ namespace NodeGenerator { var destination = variableName + "." + field_name; string cast = field_type_name == text_consts.base_tree_node_name ? "" : "(" + field_type_name + ")"; + writer.WriteLine($"if ({field_name} != null)"); + writer.OpenBlock(); writer.WriteLine($"{destination} = {cast}{field_name}.Clone();"); writer.WriteLine($"{destination}.Parent = {variableName};"); + writer.CloseBlock(); } } @@ -969,18 +984,27 @@ namespace NodeGenerator { var destination = variableName + "." + field_name; if (field_type_name == "SourceContext") + { + writer.WriteLine($"if ({field_name} != null)"); + writer.Indent++; writer.WriteLine($"{destination} = new SourceContext(source_context);"); + writer.Indent--; + } else if (list_type != "") { string cast = list_type == text_consts.base_tree_node_name ? "" : "(" + list_type + ")"; - writer.WriteLine($"foreach ({list_type} elem in {field_name})"); - writer.WriteLine('{'); + + writer.WriteLine($"if ({field_name} != null)"); writer.Indent++; + writer.WriteLine($"foreach ({list_type} elem in {field_name})"); + writer.Indent++; + writer.WriteLine($"if (elem != null)"); + writer.OpenBlock(); writer.WriteLine($"{variableName}.Add({cast}elem.Clone());"); writer.WriteLine($"{variableName}.Last().Parent = {variableName};"); - writer.Indent--; - writer.WriteLine('}'); + writer.CloseBlock(); + writer.Indent -= 2; } else writer.WriteLine($"{destination} = {field_name};"); @@ -1103,6 +1127,13 @@ namespace NodeGenerator return subnode.field_type_name + text_consts.space + subnode.field_code_name; } + /// + /// Получает список подузлов. Всегда включает в список собственные поля. + /// + /// Включить в список поля базовых классов + /// Игнорировать поля базового класса синтаксических узлов + /// Игнорировать поля класса declatation + /// public List collect_subnodes(bool WithBaseClasses = false, bool ignoreSyntaxTreeNode = true, bool ignoreDeclaration = true) { var ni = this; @@ -3288,8 +3319,7 @@ namespace NodeGenerator WithBaseClasses: true, ignoreSyntaxTreeNode: false, ignoreDeclaration: false); - NodeWriter nodeWriter = new NodeWriter(sw); - nodeWriter.Indent = 2; + NodeWriter nodeWriter = new NodeWriter(sw, 2); string inheritModifier = node_name == "syntax_tree_node" ? "virtual" : "override"; nodeWriter.WriteLine($"public {inheritModifier} syntax_tree_node Clone()"); @@ -3318,6 +3348,19 @@ namespace NodeGenerator nodeWriter.WriteLine('}'); } + /// + /// Генерирует методы with замены отдельных дочерних элементов узла + /// + /// + private void generate_with_methods(StreamWriter sw) + { + List selfFields = collect_subnodes(); + var writer = new NodeWriter(sw); + + foreach (node_field_info field in selfFields) + + } + public void generate_code(StreamWriter sw,HelpStorage hst) { //sw.WriteLine();