2015-06-01 22:15:17 +03:00
|
|
|
|
// Copyright (c) Ivan Bondarev, Stanislav Mihalkovich (for details please see \doc\copyright.txt)
|
|
|
|
|
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
2015-05-14 22:35:07 +03:00
|
|
|
|
using System;
|
|
|
|
|
|
|
|
|
|
|
|
using PascalABCCompiler.TreeRealization;
|
2017-05-09 12:52:40 +03:00
|
|
|
|
using System.Collections.Generic;
|
2017-10-23 11:21:15 +03:00
|
|
|
|
using System.Collections;
|
2015-05-14 22:35:07 +03:00
|
|
|
|
|
2018-04-14 18:18:42 +03:00
|
|
|
|
namespace System.Collections.Generic
|
|
|
|
|
|
{
|
|
|
|
|
|
using PascalABCCompiler.TreeConverter;
|
|
|
|
|
|
public static class SymbolInfoList
|
|
|
|
|
|
{
|
|
|
|
|
|
public static bool HasOnlyExtensionMethods(this List<SymbolInfo> list)
|
|
|
|
|
|
{
|
|
|
|
|
|
for (int i = 0; i < list.Count; ++i)
|
|
|
|
|
|
if (!(list[i].sym_info is function_node && (list[i].sym_info as function_node).is_extension_method))
|
|
|
|
|
|
return false;
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2015-05-14 22:35:07 +03:00
|
|
|
|
namespace PascalABCCompiler.TreeConverter
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
public enum access_level {al_none, al_private, al_protected, al_public, al_internal};
|
|
|
|
|
|
|
|
|
|
|
|
public enum symbol_kind {sk_none, sk_overload_function, sk_overload_procedure, sk_indefinite};
|
|
|
|
|
|
|
|
|
|
|
|
public abstract class base_scope
|
|
|
|
|
|
{
|
2018-04-14 18:18:42 +03:00
|
|
|
|
public abstract List<SymbolInfo> find(string name);
|
2015-05-14 22:35:07 +03:00
|
|
|
|
|
|
|
|
|
|
public abstract base_scope top_scope
|
|
|
|
|
|
{
|
|
|
|
|
|
get;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public class BaseScope
|
|
|
|
|
|
{
|
|
|
|
|
|
//public virtual SymbolInfo Find(string name)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// return null;
|
|
|
|
|
|
//}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2015-12-28 14:25:15 +03:00
|
|
|
|
//Тип записи в таблице символов.
|
2015-05-14 22:35:07 +03:00
|
|
|
|
/*public enum name_information_type
|
|
|
|
|
|
{
|
2015-12-28 14:25:15 +03:00
|
|
|
|
nit_base_type, //Пока нигде не используется.
|
|
|
|
|
|
nit_common_type, //Помещается в Сашину таблицу символов в тот момент, когда TreeConverter встречает определение типа.
|
|
|
|
|
|
nit_compiled_type, //Информация, об откомпилированном типе. Находится Ваней в сборках.
|
|
|
|
|
|
nit_basic_function, //Информация о базовом методе. Создается Колей при инициализации модуля System.
|
|
|
|
|
|
nit_common_namespace_function, //Функция, определенная в пространстве имен. Помещается Колей в Сашину таблицу символов.
|
|
|
|
|
|
nit_common_in_function_function, //Функция, определенная в другой функции. Помещается Колей в Сашину таблицу символов.
|
|
|
|
|
|
nit_common_method, //Метод класса. Помещается Колей в Сашину таюлицу символов.
|
|
|
|
|
|
nit_compiled_function, //Метод откомпилированного класса. Находится Ванией в сборках.
|
|
|
|
|
|
nit_common_namespace, //Пространство имен. Пока нигде не добавляется в таблицу символов.
|
|
|
|
|
|
nit_unit, //Помещается Колей в Сашину таблицу символов.
|
|
|
|
|
|
nit_local_variable, //Помещается Колей в Сашину таблицу символов.
|
|
|
|
|
|
nit_namespace_variable, //Помещается Колей в Сашину таблицу символов.
|
|
|
|
|
|
nit_class_field, //Помещается Колей в Сашину таблицу символов.
|
|
|
|
|
|
nit_common_parameter, //Помещается Колей в Сашину таблицу символов.
|
|
|
|
|
|
nit_basic_parameter, //Помещается в таблицу символов при инициализации модуля System.
|
|
|
|
|
|
nit_compiled_parameter, //Не связано с таблицей символов. О этих параметрах знают только откомпилированный функции.
|
|
|
|
|
|
nit_constant_defnition, //Помещается Колей в Сашину таблицу символов.
|
|
|
|
|
|
nit_common_property, //Помещается Колей в Сашину таблицу символов.
|
|
|
|
|
|
nit_compiled_property, //Свойство откомпилированного класса. Находится Ванией в сборках.
|
|
|
|
|
|
nit_basic_property, //Пока нигде не используется.
|
|
|
|
|
|
nit_compiled_variable, //Поле откомпилированного класса. Находится Ванией в сборках.
|
2015-05-14 22:35:07 +03:00
|
|
|
|
nit_compiled_namespace
|
|
|
|
|
|
};*/
|
|
|
|
|
|
|
2017-10-23 11:21:15 +03:00
|
|
|
|
public class PCUSymbolInfo : SymbolInfo
|
2015-05-14 22:35:07 +03:00
|
|
|
|
{
|
|
|
|
|
|
private semantic_node_type _semantic_node_type;
|
|
|
|
|
|
|
|
|
|
|
|
private bool _virtual_slot;
|
|
|
|
|
|
|
|
|
|
|
|
public semantic_node_type semantic_node_type
|
|
|
|
|
|
{
|
|
|
|
|
|
get
|
|
|
|
|
|
{
|
|
|
|
|
|
return _semantic_node_type;
|
|
|
|
|
|
}
|
|
|
|
|
|
set
|
|
|
|
|
|
{
|
|
|
|
|
|
_semantic_node_type = value;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public bool virtual_slot
|
|
|
|
|
|
{
|
|
|
|
|
|
get
|
|
|
|
|
|
{
|
|
|
|
|
|
return _virtual_slot;
|
|
|
|
|
|
}
|
|
|
|
|
|
set
|
|
|
|
|
|
{
|
|
|
|
|
|
_virtual_slot = value;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2018-04-16 16:17:43 +03:00
|
|
|
|
|
2017-10-23 11:21:15 +03:00
|
|
|
|
public class SymbolInfo
|
2017-05-09 12:52:40 +03:00
|
|
|
|
{
|
2018-04-28 05:16:38 +03:00
|
|
|
|
public override string ToString() => sym_info.ToString();
|
2017-10-07 14:01:51 +03:00
|
|
|
|
|
2017-05-09 12:52:40 +03:00
|
|
|
|
//private readonly name_information_type _name_information_type;
|
|
|
|
|
|
private definition_node _sym_info;
|
|
|
|
|
|
|
|
|
|
|
|
private access_level _access_level;
|
|
|
|
|
|
|
|
|
|
|
|
private symbol_kind _symbol_kind;
|
|
|
|
|
|
|
|
|
|
|
|
public SymbolTable.Scope scope;
|
|
|
|
|
|
|
|
|
|
|
|
public access_level access_level
|
|
|
|
|
|
{
|
|
|
|
|
|
get
|
|
|
|
|
|
{
|
|
|
|
|
|
return _access_level;
|
|
|
|
|
|
}
|
|
|
|
|
|
set
|
|
|
|
|
|
{
|
|
|
|
|
|
_access_level = value;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public symbol_kind symbol_kind
|
|
|
|
|
|
{
|
|
|
|
|
|
get
|
|
|
|
|
|
{
|
|
|
|
|
|
return _symbol_kind;
|
|
|
|
|
|
}
|
|
|
|
|
|
set
|
|
|
|
|
|
{
|
|
|
|
|
|
_symbol_kind = value;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*public name_information_type name_information_type
|
|
|
|
|
|
{
|
|
|
|
|
|
get
|
|
|
|
|
|
{
|
|
|
|
|
|
return _name_information_type;
|
|
|
|
|
|
}
|
|
|
|
|
|
}*/
|
|
|
|
|
|
|
|
|
|
|
|
public definition_node sym_info
|
|
|
|
|
|
{
|
|
|
|
|
|
get
|
|
|
|
|
|
{
|
|
|
|
|
|
return _sym_info;
|
|
|
|
|
|
}
|
|
|
|
|
|
set
|
|
|
|
|
|
{
|
|
|
|
|
|
_sym_info = value;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-23 11:21:15 +03:00
|
|
|
|
public SymbolInfo()
|
2017-05-09 12:52:40 +03:00
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-23 11:21:15 +03:00
|
|
|
|
public SymbolInfo copy()
|
2017-05-09 12:52:40 +03:00
|
|
|
|
{
|
2017-10-23 11:21:15 +03:00
|
|
|
|
SymbolInfo si = new SymbolInfo();
|
2017-05-09 12:52:40 +03:00
|
|
|
|
si._access_level = this.access_level;
|
|
|
|
|
|
si._sym_info = this._sym_info;
|
|
|
|
|
|
si._symbol_kind = this._symbol_kind;
|
|
|
|
|
|
si.scope = this.scope;
|
|
|
|
|
|
return si;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private symbol_kind get_function_kind(function_node fn, bool is_overload)
|
|
|
|
|
|
{
|
|
|
|
|
|
symbol_kind sk;
|
|
|
|
|
|
if (is_overload)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (fn.return_value_type == null)
|
|
|
|
|
|
{
|
|
|
|
|
|
sk = symbol_kind.sk_overload_procedure;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
sk = symbol_kind.sk_overload_function;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
sk = symbol_kind.sk_none;
|
|
|
|
|
|
}
|
|
|
|
|
|
return sk;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private symbol_kind get_function_kind(function_node fn)
|
|
|
|
|
|
{
|
|
|
|
|
|
common_function_node cfn = fn as common_function_node;
|
|
|
|
|
|
if (cfn != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
return get_function_kind(cfn, cfn.is_overload);
|
|
|
|
|
|
}
|
|
|
|
|
|
basic_function_node bfn = fn as basic_function_node;
|
|
|
|
|
|
if (bfn != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
return get_function_kind(bfn, bfn.is_overload);
|
|
|
|
|
|
}
|
|
|
|
|
|
return symbol_kind.sk_none;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private access_level get_class_member_access_level(SemanticTree.IClassMemberNode icmn)
|
|
|
|
|
|
{
|
|
|
|
|
|
access_level al;
|
|
|
|
|
|
switch (icmn.field_access_level)
|
|
|
|
|
|
{
|
|
|
|
|
|
case SemanticTree.field_access_level.fal_public: al = access_level.al_public; break;
|
|
|
|
|
|
case SemanticTree.field_access_level.fal_protected: al = access_level.al_protected; break;
|
|
|
|
|
|
case SemanticTree.field_access_level.fal_private: al = access_level.al_private; break;
|
|
|
|
|
|
case SemanticTree.field_access_level.fal_internal: al = access_level.al_internal; break;
|
|
|
|
|
|
default:
|
|
|
|
|
|
al = access_level.al_private; break;
|
|
|
|
|
|
}
|
|
|
|
|
|
return al;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-23 11:21:15 +03:00
|
|
|
|
public SymbolInfo(template_class tc)
|
2017-05-09 12:52:40 +03:00
|
|
|
|
{
|
|
|
|
|
|
_sym_info = tc;
|
|
|
|
|
|
_access_level = access_level.al_public;
|
|
|
|
|
|
_symbol_kind = symbol_kind.sk_none;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-23 11:21:15 +03:00
|
|
|
|
public SymbolInfo(label_node lab)
|
2017-05-09 12:52:40 +03:00
|
|
|
|
{
|
|
|
|
|
|
_sym_info = lab;
|
|
|
|
|
|
_access_level = access_level.al_public;
|
|
|
|
|
|
_symbol_kind = symbol_kind.sk_none;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-23 11:21:15 +03:00
|
|
|
|
public SymbolInfo(compiled_event ce)
|
2017-05-09 12:52:40 +03:00
|
|
|
|
{
|
|
|
|
|
|
_sym_info = ce;
|
|
|
|
|
|
_access_level = access_level.al_public;
|
|
|
|
|
|
_symbol_kind = symbol_kind.sk_none;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-23 11:21:15 +03:00
|
|
|
|
public SymbolInfo(compiled_type_node value)
|
2017-05-09 12:52:40 +03:00
|
|
|
|
{
|
|
|
|
|
|
//_name_information_type=name_information_type.nit_compiled_type;
|
|
|
|
|
|
_sym_info = value;
|
|
|
|
|
|
_access_level = access_level.al_public;
|
|
|
|
|
|
_symbol_kind = symbol_kind.sk_none;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-23 11:21:15 +03:00
|
|
|
|
public SymbolInfo(common_event value)
|
2017-05-09 12:52:40 +03:00
|
|
|
|
{
|
|
|
|
|
|
_sym_info = value;
|
|
|
|
|
|
_access_level = get_class_member_access_level(value);
|
|
|
|
|
|
_symbol_kind = symbol_kind.sk_none;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-23 11:21:15 +03:00
|
|
|
|
public SymbolInfo(common_namespace_event value)
|
2017-05-09 12:52:40 +03:00
|
|
|
|
{
|
|
|
|
|
|
_sym_info = value;
|
|
|
|
|
|
_access_level = access_level.al_public;
|
|
|
|
|
|
_symbol_kind = symbol_kind.sk_none;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-23 11:21:15 +03:00
|
|
|
|
public SymbolInfo(function_node value)
|
2017-05-09 12:52:40 +03:00
|
|
|
|
{
|
|
|
|
|
|
_sym_info = value;
|
|
|
|
|
|
_access_level = access_level.al_public;
|
|
|
|
|
|
_symbol_kind = symbol_kind.sk_none;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-23 11:21:15 +03:00
|
|
|
|
public SymbolInfo(compiled_function_node value)
|
2017-05-09 12:52:40 +03:00
|
|
|
|
{
|
|
|
|
|
|
//_name_information_type=name_information_type.nit_compiled_function;
|
|
|
|
|
|
_sym_info = value;
|
|
|
|
|
|
_access_level = get_class_member_access_level(value);
|
|
|
|
|
|
_symbol_kind = get_function_kind(value);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-23 11:21:15 +03:00
|
|
|
|
public SymbolInfo(compiled_constructor_node value)
|
2017-05-09 12:52:40 +03:00
|
|
|
|
{
|
|
|
|
|
|
//_name_information_type=name_information_type.nit_compiled_function;
|
|
|
|
|
|
_sym_info = value;
|
|
|
|
|
|
_access_level = get_class_member_access_level(value);
|
|
|
|
|
|
_symbol_kind = get_function_kind(value);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-23 11:21:15 +03:00
|
|
|
|
public SymbolInfo(compiled_property_node value)
|
2017-05-09 12:52:40 +03:00
|
|
|
|
{
|
|
|
|
|
|
//_name_information_type=name_information_type.nit_compiled_property;
|
|
|
|
|
|
_sym_info = value;
|
|
|
|
|
|
_access_level = get_class_member_access_level(value);
|
|
|
|
|
|
_symbol_kind = symbol_kind.sk_none;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-23 11:21:15 +03:00
|
|
|
|
public SymbolInfo(compiled_variable_definition value)
|
2017-05-09 12:52:40 +03:00
|
|
|
|
{
|
|
|
|
|
|
//_name_information_type=name_information_type.nit_compiled_variable;
|
|
|
|
|
|
_sym_info = value;
|
|
|
|
|
|
_access_level = get_class_member_access_level(value);
|
|
|
|
|
|
_symbol_kind = symbol_kind.sk_none;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-23 11:21:15 +03:00
|
|
|
|
public SymbolInfo(compiled_class_constant_definition value)
|
2017-05-09 12:52:40 +03:00
|
|
|
|
{
|
|
|
|
|
|
_sym_info = value;
|
|
|
|
|
|
_access_level = get_class_member_access_level(value);
|
|
|
|
|
|
_symbol_kind = symbol_kind.sk_none;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-23 11:21:15 +03:00
|
|
|
|
public SymbolInfo(compiled_namespace_node value)
|
2017-05-09 12:52:40 +03:00
|
|
|
|
{
|
|
|
|
|
|
//_name_information_type=name_information_type.nit_compiled_namespace;
|
|
|
|
|
|
_sym_info = value;
|
|
|
|
|
|
_access_level = access_level.al_public;
|
|
|
|
|
|
_symbol_kind = symbol_kind.sk_none;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-23 11:21:15 +03:00
|
|
|
|
public SymbolInfo(common_type_node value)
|
2017-05-09 12:52:40 +03:00
|
|
|
|
{
|
|
|
|
|
|
//_name_information_type=name_information_type.nit_common_type;
|
|
|
|
|
|
_sym_info = value;
|
|
|
|
|
|
_access_level = access_level.al_public;
|
|
|
|
|
|
_symbol_kind = symbol_kind.sk_none;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-23 11:21:15 +03:00
|
|
|
|
public SymbolInfo(basic_function_node value)
|
2017-05-09 12:52:40 +03:00
|
|
|
|
{
|
|
|
|
|
|
//_name_information_type=name_information_type.nit_basic_function;
|
|
|
|
|
|
_sym_info = value;
|
|
|
|
|
|
_access_level = access_level.al_public;
|
|
|
|
|
|
_symbol_kind = get_function_kind(value);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-23 11:21:15 +03:00
|
|
|
|
public SymbolInfo(common_namespace_function_node value)
|
2017-05-09 12:52:40 +03:00
|
|
|
|
{
|
|
|
|
|
|
//_name_information_type=name_information_type.nit_common_namespace_function;
|
|
|
|
|
|
_sym_info = value;
|
|
|
|
|
|
_access_level = access_level.al_public;
|
|
|
|
|
|
_symbol_kind = get_function_kind(value);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-23 11:21:15 +03:00
|
|
|
|
public SymbolInfo(common_in_function_function_node value)
|
2017-05-09 12:52:40 +03:00
|
|
|
|
{
|
|
|
|
|
|
//_name_information_type=name_information_type.nit_common_in_function_function;
|
|
|
|
|
|
_sym_info = value;
|
|
|
|
|
|
_access_level = access_level.al_public;
|
|
|
|
|
|
_symbol_kind = get_function_kind(value);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-23 11:21:15 +03:00
|
|
|
|
public SymbolInfo(common_method_node value)
|
2017-05-09 12:52:40 +03:00
|
|
|
|
{
|
|
|
|
|
|
//_name_information_type=name_information_type.nit_common_method;
|
|
|
|
|
|
_sym_info = value;
|
|
|
|
|
|
_access_level = get_class_member_access_level(value);
|
|
|
|
|
|
_symbol_kind = get_function_kind(value);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-23 11:21:15 +03:00
|
|
|
|
public SymbolInfo(common_namespace_node value)
|
2017-05-09 12:52:40 +03:00
|
|
|
|
{
|
|
|
|
|
|
//_name_information_type=name_information_type.nit_common_namespace;
|
|
|
|
|
|
_sym_info = value;
|
|
|
|
|
|
_access_level = access_level.al_public;
|
|
|
|
|
|
_symbol_kind = symbol_kind.sk_none;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-23 11:21:15 +03:00
|
|
|
|
public SymbolInfo(unit_node value)
|
2017-05-09 12:52:40 +03:00
|
|
|
|
{
|
|
|
|
|
|
//_name_information_type=name_information_type.nit_unit;
|
|
|
|
|
|
_sym_info = value;
|
|
|
|
|
|
_access_level = access_level.al_public;
|
|
|
|
|
|
_symbol_kind = symbol_kind.sk_none;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-23 11:21:15 +03:00
|
|
|
|
public SymbolInfo(local_variable value)
|
2017-05-09 12:52:40 +03:00
|
|
|
|
{
|
|
|
|
|
|
//_name_information_type=name_information_type.nit_local_variable;
|
|
|
|
|
|
_sym_info = value;
|
|
|
|
|
|
_access_level = access_level.al_public;
|
|
|
|
|
|
_symbol_kind = symbol_kind.sk_none;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-23 11:21:15 +03:00
|
|
|
|
public SymbolInfo(local_block_variable value)
|
2017-05-09 12:52:40 +03:00
|
|
|
|
{
|
|
|
|
|
|
//_name_information_type=name_information_type.nit_local_variable;
|
|
|
|
|
|
_sym_info = value;
|
|
|
|
|
|
_access_level = access_level.al_public;
|
|
|
|
|
|
_symbol_kind = symbol_kind.sk_none;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-23 11:21:15 +03:00
|
|
|
|
public SymbolInfo(namespace_variable value)
|
2017-05-09 12:52:40 +03:00
|
|
|
|
{
|
|
|
|
|
|
//_name_information_type=name_information_type.nit_namespace_variable;
|
|
|
|
|
|
_sym_info = value;
|
|
|
|
|
|
_access_level = access_level.al_public;
|
|
|
|
|
|
_symbol_kind = symbol_kind.sk_none;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-23 11:21:15 +03:00
|
|
|
|
public SymbolInfo(class_field value)
|
2017-05-09 12:52:40 +03:00
|
|
|
|
{
|
|
|
|
|
|
//_name_information_type=name_information_type.nit_class_field;
|
|
|
|
|
|
_sym_info = value;
|
|
|
|
|
|
_access_level = get_class_member_access_level(value);
|
|
|
|
|
|
_symbol_kind = symbol_kind.sk_none;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-23 11:21:15 +03:00
|
|
|
|
public SymbolInfo(common_parameter value)
|
2017-05-09 12:52:40 +03:00
|
|
|
|
{
|
|
|
|
|
|
//_name_information_type=name_information_type.nit_common_parameter;
|
|
|
|
|
|
_sym_info = value;
|
|
|
|
|
|
_access_level = access_level.al_public;
|
|
|
|
|
|
_symbol_kind = symbol_kind.sk_none;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-23 11:21:15 +03:00
|
|
|
|
public SymbolInfo(basic_parameter value)
|
2017-05-09 12:52:40 +03:00
|
|
|
|
{
|
|
|
|
|
|
//_name_information_type=name_information_type.nit_basic_parameter;
|
|
|
|
|
|
_sym_info = value;
|
|
|
|
|
|
_access_level = access_level.al_public;
|
|
|
|
|
|
_symbol_kind = symbol_kind.sk_none;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-23 11:21:15 +03:00
|
|
|
|
public SymbolInfo(constant_definition_node value)
|
2017-05-09 12:52:40 +03:00
|
|
|
|
{
|
|
|
|
|
|
//_name_information_type=name_information_type.nit_constant_defnition;
|
|
|
|
|
|
_sym_info = value;
|
|
|
|
|
|
_access_level = access_level.al_public;
|
|
|
|
|
|
_symbol_kind = symbol_kind.sk_none;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-23 11:21:15 +03:00
|
|
|
|
public SymbolInfo(common_property_node value)
|
2017-05-09 12:52:40 +03:00
|
|
|
|
{
|
|
|
|
|
|
//_name_information_type=name_information_type.nit_common_property;
|
|
|
|
|
|
_sym_info = value;
|
|
|
|
|
|
_access_level = get_class_member_access_level(value);
|
|
|
|
|
|
_symbol_kind = symbol_kind.sk_none;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-23 11:21:15 +03:00
|
|
|
|
public SymbolInfo(type_node value)
|
2017-05-09 12:52:40 +03:00
|
|
|
|
{
|
|
|
|
|
|
_sym_info = value;
|
|
|
|
|
|
_access_level = access_level.al_public;
|
|
|
|
|
|
_symbol_kind = symbol_kind.sk_none;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-23 11:21:15 +03:00
|
|
|
|
public SymbolInfo(definition_node value, access_level alevel, symbol_kind skind)
|
2017-05-09 12:52:40 +03:00
|
|
|
|
{
|
|
|
|
|
|
_sym_info = value;
|
|
|
|
|
|
_access_level = alevel;
|
|
|
|
|
|
_symbol_kind = skind;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
2015-05-14 22:35:07 +03:00
|
|
|
|
|
|
|
|
|
|
}
|