Обновлен генератор, добавлен метод RemoveAll для списков

This commit is contained in:
Alexander Zakharenko 2016-05-22 19:22:58 +03:00
parent cdf84ad46e
commit 74b2827e4c
3 changed files with 224 additions and 1 deletions

Binary file not shown.

View file

@ -417,6 +417,11 @@ namespace PascalABCCompiler.SyntaxTree
subnodes.InsertRange(ind, newels); subnodes.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<statement> match)
{
return subnodes.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -1950,6 +1955,11 @@ namespace PascalABCCompiler.SyntaxTree
names.InsertRange(ind, newels); names.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<ident> match)
{
return names.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -2155,6 +2165,11 @@ namespace PascalABCCompiler.SyntaxTree
var_definitions.InsertRange(ind, newels); var_definitions.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<var_def_statement> match)
{
return var_definitions.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -2349,6 +2364,11 @@ namespace PascalABCCompiler.SyntaxTree
idents.InsertRange(ind, newels); idents.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<ident> match)
{
return idents.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -2847,6 +2867,11 @@ namespace PascalABCCompiler.SyntaxTree
defs.InsertRange(ind, newels); defs.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<declaration> match)
{
return defs.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -3041,6 +3066,11 @@ namespace PascalABCCompiler.SyntaxTree
compilation_units.InsertRange(ind, newels); compilation_units.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<compilation_unit> match)
{
return compilation_units.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -3446,6 +3476,11 @@ namespace PascalABCCompiler.SyntaxTree
expressions.InsertRange(ind, newels); expressions.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<expression> match)
{
return expressions.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -4905,6 +4940,11 @@ namespace PascalABCCompiler.SyntaxTree
indexers.InsertRange(ind, newels); indexers.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<type_definition> match)
{
return indexers.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -5675,6 +5715,11 @@ namespace PascalABCCompiler.SyntaxTree
params_list.InsertRange(ind, newels); params_list.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<typed_parameters> match)
{
return params_list.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -5869,6 +5914,11 @@ namespace PascalABCCompiler.SyntaxTree
proc_attributes.InsertRange(ind, newels); proc_attributes.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<procedure_attribute> match)
{
return proc_attributes.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -6798,6 +6848,11 @@ namespace PascalABCCompiler.SyntaxTree
types_decl.InsertRange(ind, newels); types_decl.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<type_declaration> match)
{
return types_decl.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -7369,6 +7424,11 @@ namespace PascalABCCompiler.SyntaxTree
const_defs.InsertRange(ind, newels); const_defs.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<const_definition> match)
{
return const_defs.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -7938,6 +7998,11 @@ namespace PascalABCCompiler.SyntaxTree
units.InsertRange(ind, newels); units.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<unit_or_namespace> match)
{
return units.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -8348,6 +8413,11 @@ namespace PascalABCCompiler.SyntaxTree
compiler_directives.InsertRange(ind, newels); compiler_directives.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<compiler_directive> match)
{
return compiler_directives.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -9583,6 +9653,11 @@ namespace PascalABCCompiler.SyntaxTree
ln.InsertRange(ind, newels); ln.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<ident> match)
{
return ln.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -11549,6 +11624,11 @@ namespace PascalABCCompiler.SyntaxTree
members.InsertRange(ind, newels); members.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<declaration> match)
{
return members.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -11854,6 +11934,11 @@ namespace PascalABCCompiler.SyntaxTree
class_def_blocks.InsertRange(ind, newels); class_def_blocks.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<class_members> match)
{
return class_def_blocks.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -12808,6 +12893,11 @@ namespace PascalABCCompiler.SyntaxTree
rec_consts.InsertRange(ind, newels); rec_consts.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<record_const_definition> match)
{
return rec_consts.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -13608,6 +13698,11 @@ namespace PascalABCCompiler.SyntaxTree
literals.InsertRange(ind, newels); literals.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<literal> match)
{
return literals.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -14096,6 +14191,11 @@ namespace PascalABCCompiler.SyntaxTree
vars.InsertRange(ind, newels); vars.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<variant> match)
{
return vars.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -14424,6 +14524,11 @@ namespace PascalABCCompiler.SyntaxTree
vars.InsertRange(ind, newels); vars.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<variant_type> match)
{
return vars.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -16724,6 +16829,11 @@ namespace PascalABCCompiler.SyntaxTree
variants.InsertRange(ind, newels); variants.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<case_variant> match)
{
return variants.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -17052,6 +17162,11 @@ namespace PascalABCCompiler.SyntaxTree
vars.InsertRange(ind, newels); vars.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<var_def_statement> match)
{
return vars.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -17737,6 +17852,11 @@ namespace PascalABCCompiler.SyntaxTree
parameters.InsertRange(ind, newels); parameters.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<property_parameter> match)
{
return parameters.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -19203,6 +19323,11 @@ namespace PascalABCCompiler.SyntaxTree
handlers.InsertRange(ind, newels); handlers.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<exception_handler> match)
{
return handlers.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -20176,6 +20301,11 @@ namespace PascalABCCompiler.SyntaxTree
namespaces.InsertRange(ind, newels); namespaces.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<unit_or_namespace> match)
{
return namespaces.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -20856,6 +20986,11 @@ namespace PascalABCCompiler.SyntaxTree
types.InsertRange(ind, newels); types.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<named_type_reference> match)
{
return types.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -21069,6 +21204,11 @@ namespace PascalABCCompiler.SyntaxTree
params_list.InsertRange(ind, newels); params_list.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<type_definition> match)
{
return params_list.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -21828,6 +21968,11 @@ namespace PascalABCCompiler.SyntaxTree
defs.InsertRange(ind, newels); defs.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<type_definition> match)
{
return defs.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -22156,6 +22301,11 @@ namespace PascalABCCompiler.SyntaxTree
defs.InsertRange(ind, newels); defs.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<where_definition> match)
{
return defs.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -23933,6 +24083,11 @@ namespace PascalABCCompiler.SyntaxTree
enumerators.InsertRange(ind, newels); enumerators.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<enumerator> match)
{
return enumerators.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -24459,6 +24614,11 @@ namespace PascalABCCompiler.SyntaxTree
attributes.InsertRange(ind, newels); attributes.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<type_definition_attr> match)
{
return attributes.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -24938,6 +25098,11 @@ namespace PascalABCCompiler.SyntaxTree
directives.InsertRange(ind, newels); directives.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<compiler_directive> match)
{
return directives.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -25315,6 +25480,11 @@ namespace PascalABCCompiler.SyntaxTree
sections.InsertRange(ind, newels); sections.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<documentation_comment_section> match)
{
return sections.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -25545,6 +25715,11 @@ namespace PascalABCCompiler.SyntaxTree
parameters.InsertRange(ind, newels); parameters.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<documentation_comment_tag_param> match)
{
return parameters.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -25875,6 +26050,11 @@ namespace PascalABCCompiler.SyntaxTree
tags.InsertRange(ind, newels); tags.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<documentation_comment_tag> match)
{
return tags.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -26981,6 +27161,11 @@ namespace PascalABCCompiler.SyntaxTree
attributes.InsertRange(ind, newels); attributes.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<attribute> match)
{
return attributes.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -27175,6 +27360,11 @@ namespace PascalABCCompiler.SyntaxTree
attributes.InsertRange(ind, newels); attributes.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<simple_attribute_list> match)
{
return attributes.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -27549,6 +27739,11 @@ namespace PascalABCCompiler.SyntaxTree
defs.InsertRange(ind, newels); defs.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<declaration> match)
{
return defs.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -27954,6 +28149,11 @@ namespace PascalABCCompiler.SyntaxTree
param.InsertRange(ind, newels); param.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<syntax_tree_node> match)
{
return param.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -28547,6 +28747,11 @@ namespace PascalABCCompiler.SyntaxTree
name_expr.InsertRange(ind, newels); name_expr.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<name_assign_expr> match)
{
return name_expr.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -30463,6 +30668,11 @@ namespace PascalABCCompiler.SyntaxTree
variables.InsertRange(ind, newels); variables.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<addressed_value> match)
{
return variables.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List
@ -30787,6 +30997,11 @@ namespace PascalABCCompiler.SyntaxTree
listunitsections.InsertRange(ind, newels); listunitsections.InsertRange(ind, newels);
} }
public int RemoveAll(Predicate<uses_list> match)
{
return listunitsections.RemoveAll(match);
}
// Окончание методов списка // Окончание методов списка
///<summary> ///<summary>
///Свойство для получения количества всех подузлов без элементов поля типа List ///Свойство для получения количества всех подузлов без элементов поля типа List

View file

@ -332,6 +332,13 @@ namespace NodeGenerator
} }
"; ";
public static readonly string list_remove_all_method =
@" public int RemoveAll(Predicate<list_element_type> match)
{
return list_name.RemoveAll(match);
}
";
public static readonly string[] list_methods = public static readonly string[] list_methods =
{ {
list_add_method, list_add_method,
@ -345,7 +352,8 @@ namespace NodeGenerator
list_insert_before_many_method, list_insert_before_many_method,
list_remove_method, list_remove_method,
list_replace_method, list_replace_method,
list_replace_many_method list_replace_many_method,
list_remove_all_method
}; };
// !Методы // !Методы