diff --git a/PluginsSupport/PluginsSupport.csproj b/PluginsSupport/PluginsSupport.csproj
index ee62680f2..66ab872e1 100644
--- a/PluginsSupport/PluginsSupport.csproj
+++ b/PluginsSupport/PluginsSupport.csproj
@@ -82,6 +82,14 @@
{af2efd7b-69dd-4b43-af65-b59b29349c23}
ParserTools
+
+ {c2cac65a-b2ae-4ccc-b067-e6b8e75df73a}
+ SyntaxTree
+
+
+ {1c9c945a-586d-42a2-a06b-65d84fa7ff78}
+ TreeConverter
+
diff --git a/TreeConverter/TreeConversion/compilation_context.cs b/TreeConverter/TreeConversion/compilation_context.cs
index a3005c0df..eaf30d2a9 100644
--- a/TreeConverter/TreeConversion/compilation_context.cs
+++ b/TreeConverter/TreeConversion/compilation_context.cs
@@ -1447,34 +1447,11 @@ namespace PascalABCCompiler.TreeConverter
{
if (ShortStringTypes.ContainsKey(length))
return ShortStringTypes[length];
- //type_node base_type = SystemLibrary.SystemLibInitializer.ShortStringType.sym_info as type_node;
- //check_name_free(name, def_loc);
SymbolTable.ClassScope scope = convertion_data_and_alghoritms.symbol_table.CreateClassScope(null, SystemLibrary.SystemLibrary.string_type.Scope);
short_string_type_node tctn = new short_string_type_node(//SemanticTree.type_access_level.tal_public, _cmn,
scope, def_loc, length);
- //tctn.IsFictive = true;
- //set_field_access_level(SemanticTree.field_access_level.fal_public);
- //_cmn.scope.AddSymbol(name, new SymbolInfo(tctn));
- //tctn.internal_is_value = false;//base_type.is_value;
- //tctn.is_class = false;//base_type.is_class;
- //common_property_node cpn = new common_property_node(compiler_string_consts.index_property_pascal_array_name,tctn,SystemLibrary.SystemLibrary.char_type,SystemLibrary.SystemLibInitializer.GetCharInShortStringProcedure.sym_info as function_node,
- // null,null,SemanticTree.field_access_level.fal_public,SemanticTree.polymorphic_state.ps_common);
- //tctn.default_property = cpn;
- //SystemLibrary.SystemLibrary.make_type_conversion(tctn,SystemLibrary.SystemLibrary.string_type,type_compare.less_type,SemanticTree.basic_function_type.none,true);
- //SystemLibrary.SystemLibrary.make_type_conversion(SystemLibrary.SystemLibrary.string_type,tctn,type_compare.greater_type,SemanticTree.basic_function_type.none,true);
- //SystemLibrary.SystemLibrary.make_equivalence_operator(tctn);
- //SystemLibrary.SystemLibrary.make_not_equivalence_operator(tctn);
tctn.add_name(compiler_string_consts.assign_name,new SymbolInfo(SystemLibrary.SystemLibrary.make_assign_operator(tctn,PascalABCCompiler.SemanticTree.basic_function_type.objassign)));
tctn.add_name(compiler_string_consts.plus_name,new SymbolInfo(SystemLibrary.SystemLibrary.string_add));
- //tctn.add_name(compiler_string_consts.eq_name,new SymbolInfo(SystemLibrary.SystemLibrary));
- //tctn.add_name(compiler_string_consts.noteq_name,new SymbolInfo(SystemLibrary.SystemLibrary.string_type.find_in_type(compiler_string_consts.noteq_name).sym_info as function_node));
- /*tctn.add_name(compiler_string_consts.smeq_name,new SymbolInfo(SystemLibrary.SystemLibrary.string_type.find_in_type(compiler_string_consts.smeq_name).sym_info as function_node));
- tctn.add_name(compiler_string_consts.sm_name,new SymbolInfo(SystemLibrary.SystemLibrary.string_type.find_in_type(compiler_string_consts.sm_name).sym_info as function_node));
- tctn.add_name(compiler_string_consts.greq_name,new SymbolInfo(SystemLibrary.SystemLibrary.string_type.find_in_type(compiler_string_consts.greq_name).sym_info as function_node));
- tctn.add_name(compiler_string_consts.gr_name,new SymbolInfo(SystemLibrary.SystemLibrary.string_type.find_in_type(compiler_string_consts.gr_name).sym_info as function_node));*/
- //_ctn = tctn;
- //SystemLibrary.SystemLibrary.init_reference_type(tctn);
- //converted_namespace.types.AddElement(tctn);
tctn.scope.AddSymbol(compiler_string_consts.plusassign_name,new SymbolInfo(make_short_string_plus_assign(tctn)));
type_intersection_node inter = new type_intersection_node(type_compare.greater_type);
inter.another_to_this = new type_conversion(SystemLibrary.SystemLibrary.char_to_string);
@@ -1496,9 +1473,7 @@ namespace PascalABCCompiler.TreeConverter
if (top_function != null)
tctn.defined_in_scope = top_function.scope;
set_field_access_level(SemanticTree.field_access_level.fal_public);
- //_cmn.scope.AddSymbol(name, new SymbolInfo(tctn));
tctn.SetBaseType(SemanticRules.StructBaseType);
- //_cmn.types.AddElement(tctn);
if (_ctn != null) type_stack.Push(_ctn);
add_type(name, tctn, def_loc);
_ctn = tctn;
@@ -1507,10 +1482,6 @@ namespace PascalABCCompiler.TreeConverter
tctn.internal_is_value = true;
return tctn;
- /*tctn.SetName(BuildName(tctn.name));
-_cmn.scope.AddSymbol(tctn.name, new SymbolInfo(tctn));
-_cmn.types.AddElement(tctn);*/
-
}
public void create_generic_indicator(common_type_node generic)
@@ -1969,13 +1940,6 @@ _cmn.types.AddElement(tctn);*/
tctn.internal_is_value = true;
add_convertions_to_enum_type(tctn);
- //SystemLibrary.SystemLibrary.add_funtion_to_type(compiler_string_consts.gr_name, tctn, enum_gr);
- //SystemLibrary.SystemLibrary.add_funtion_to_type(compiler_string_consts.greq_name, tctn, enum_greq);
- //SystemLibrary.SystemLibrary.add_funtion_to_type(compiler_string_consts.sm_name, tctn, enum_sm);
- //SystemLibrary.SystemLibrary.add_funtion_to_type(compiler_string_consts.smeq_name, tctn, enum_smeq);
- //SystemLibrary.SystemLibrary.add_funtion_to_type(compiler_string_consts.eq_name, tctn, SystemLibrary.SystemLibrary.int_eq);
- //SystemLibrary.SystemLibrary.add_funtion_to_type(compiler_string_consts.noteq_name, tctn, SystemLibrary.SystemLibrary.int_noteq);
- //_cmn.types.AddElement(tctn);
if (_ctn != null) type_stack.Push(_ctn);
add_type(name, tctn, def_loc);
_ctn = tctn;
@@ -1983,68 +1947,10 @@ _cmn.types.AddElement(tctn);*/
return tctn;
}
- //(ssyy) эта функция нигде не вызывается из-за изменения концепции конструкторов
- /*
- public void make_constructor()
- {
-#if (DEBUG)
- if (converting_block()!=block_type.function_block)
- {
- throw new CompilerInternalError("Create constructor call without function");
- }
- if (_func_stack.top().node_location_kind!=SemanticTree.node_location_kind.in_class_location)
- {
- throw new CompilerInternalError("Create constructor applied to non class method");
- }
-#endif
- common_function_node top_func=_func_stack.top();
-
- top_func.return_value_type=_ctn;
-
- common_method_node top_method=(common_method_node)top_func;
-
- common_method_node cmn=new common_method_node(top_func.name,_ctn,top_method.loc,_ctn,
- SemanticTree.polymorphic_state.ps_static,_fal,top_func.scope);
- cmn.is_constructor=true;
- cmn.is_overload=top_function.is_overload;
-
- //parameter_list pl = new parameter_list();
- foreach (common_parameter pr in top_method.parameters)
- {
- common_parameter new_par = new common_parameter(pr.name, pr.type, pr.parameter_type, cmn, pr.concrete_parameter_type,
- pr.default_value, pr.loc);
- cmn.parameters.AddElement(new_par);
- }
- //cmn.parameters.AddRange(top_method.parameters);
-
- statements_list stl=new statements_list(top_func.loc);
- cmn.function_code=stl;
- this_node thn=new this_node(_ctn,top_func.loc);
- //ssyy -
- common_method_call csmc=new common_method_call(top_method,thn,top_func.loc);
- foreach(common_parameter cp in cmn.parameters)
- {
- common_parameter_reference cpr=new common_parameter_reference(cp,0,top_func.loc);
- csmc.parameters.AddElement(cpr);
- }
- stl.statements.AddElement(csmc);
- stl.statements.AddElement(new empty_statement(null));
- //\ssyy -
- _ctn.methods.AddElement(cmn);
-
- top_method.pascal_associated_constructor=cmn;
- }
- */
-
public void close_var_definition_list(type_node tp, expression_node inital_value)
{
if (var_defs.Count==0)
return;
-// foreach (var_definition_node vdn in var_defs)
-// {
-// vdn.type = tp;
-// vdn.inital_value = GetInitalValueForVariable(vdn, inital_value);
-// }
int count = var_defs.Count;
for (int i=0; i lab_list)
- {
- foreach (label_node ln in lab_list)
- {
- if (ln.is_defined)
- {
- ln.goto_blocked = true;
- }
- }
- }*/
-
//\ssyy
//(ssyy) "Я" бывают разные :)
@@ -3195,19 +3012,6 @@ _cmn.types.AddElement(tctn);*/
{
is_find_predefinition=true;
- //Добавляем все описанные параметры
- /*
- foreach(parameter par in compar.parameters)
- {
- //Тут, конечно, приведение типа параметра, но оно вроде всегда должно быть такого типа.
- common_parameter intcpar=(common_parameter)par;
- common_parameter new_par = new common_parameter(intcpar.name, intcpar.type, intcpar.parameter_type,
- fn, intcpar.concrete_parameter_type, intcpar.default_value, intcpar.loc);
- fn.parameters.AddElement(new_par);
- fn.scope.AddSymbol(new_par.name,new SymbolInfo(new_par));
- }
- compar.scope=fn.scope;
- */
}
else
{
@@ -3400,15 +3204,6 @@ _cmn.types.AddElement(tctn);*/
}
}
- /*
- compar.parameters.clear();
- foreach (common_parameter pr in fn.parameters)
- {
- pr.common_function = compar;
- compar.parameters.AddElement(pr);
- }
- */
-
_func_stack.push(compar);
compar.attributes.AddRange(fn.attributes);
//si.sym_info=fn;
@@ -3442,15 +3237,6 @@ _cmn.types.AddElement(tctn);*/
si=_func_stack.top().scope.FindOnlyInScope(fn.name);
_func_stack.push(temp);
}
- //SymbolInfo si=find_only_in_namespace(fn.name);
-
- //И эта проверка наверно не нужна, но пусть пока повисит
- //Тем более с ней, наверное, быстрее работает
- //Лучше удалю пока
- //if (si.Next==null)
- //{
- // return;
- //}
while(si!=null)
{
@@ -3532,9 +3318,6 @@ _cmn.types.AddElement(tctn);*/
_cmn.runtime_types.AddElement(comp_tn);
}
}
- //_cmn.type_synonyms.Add(new type_synonym(name, tn, loc));
- //_cmn.scope.AddSymbol(name,new SymbolInfo(tn));
- //DS MODIFED 22.07.07
CurrentScope.AddSymbol(name, new SymbolInfo(tn));
if (tn is ref_type_node && converting_block() == block_type.namespace_block)
converted_namespace.ref_types.Add(tn as ref_type_node);
diff --git a/TreeConverter/TreeConversion/convertion_data_and_alghoritms.cs b/TreeConverter/TreeConversion/convertion_data_and_alghoritms.cs
index 84cdf2a10..1125fb3a8 100644
--- a/TreeConverter/TreeConversion/convertion_data_and_alghoritms.cs
+++ b/TreeConverter/TreeConversion/convertion_data_and_alghoritms.cs
@@ -299,18 +299,6 @@ namespace PascalABCCompiler.TreeConverter
switch (fn.semantic_node_type)
{
- /*
- case semantic_node_type.empty_function_node:
- {
-#if (DEBUG)
- if (exprs.Length!=1)
- {
- throw new CompilerInternalError("Epty functions with only single parameter allowed.");
- }
-#endif
- return exprs[0];
- }
- */
case semantic_node_type.basic_function_node:
{
return create_basic_function_call((basic_function_node)fn, loc, exprs);
@@ -411,16 +399,6 @@ namespace PascalABCCompiler.TreeConverter
{
function_node fn = select_function(exprs, si, loc);
- /*
- if (fn.compile_time_executor != null)
- {
- expression_node ex = fn.compile_time_executor(loc, exprs.ToArray());
- if (ex != null)
- {
- return ex;
- }
- }
- */
//allow_procedure = true;
if ((!allow_procedure) && (fn.return_value_type == null))
{
@@ -1577,38 +1555,6 @@ namespace PascalABCCompiler.TreeConverter
private void convert_function_call_expressions(function_node fn,expressions_list exprs,
possible_type_convertions_list ptcal)
{
- /*if (SystemLibrary.SystemLibrary.syn_visitor.SystemUnitAssigned && fn.name != compiler_string_consts.assign_name && !SystemLibrary.SystemLibrary.syn_visitor.one_way_operation(fn.name) && SystemLibrary.SystemLibrary.syn_visitor.in_check_range_region())
- {
- for (int i=0; i= fn.parameters.Count - 1))
@@ -1673,20 +1619,6 @@ namespace PascalABCCompiler.TreeConverter
}
- //public common_function_node find_eq_method_in_symbol_info(function_node fn,SymbolInfo si)
- //{
- // while(si!=null)
- // {
- // common_function_node cfn=si.sym_info as common_function_node;
- // if (function_eq_params(cfn,fn))
- // {
- // return cfn;
- // }
- // si = si.Next;
- // }
- // return null;
- //}
-
private function_node find_eq_return_value_method_in_list(function_node fn, function_node_list funcs)
{
foreach (function_node f in funcs)
@@ -1732,11 +1664,6 @@ namespace PascalABCCompiler.TreeConverter
public function_node is_exist_eq_method_in_list(function_node fn,function_node_list funcs)
{
return find_eq_method_in_list(fn,funcs);
- /*if (fn==null)
- {
- return false;
- }
- return true;*/
}
public void init_reference_type(type_node ctn)
@@ -2104,11 +2031,6 @@ namespace PascalABCCompiler.TreeConverter
{
fn = find_eq_return_value_method_in_list(fn, funcs);
return fn;
- /*if (fn == null)
- {
- return false;
- }
- return true;*/
}
private string get_return_variable_name(string function_name)