|
|
@ -759,7 +759,7 @@ class VariableNode:
|
|
|
|
class NamespaceNode:
|
|
|
|
class NamespaceNode:
|
|
|
|
'''Класс ноды соответствующей пространству имен в дереве переменных.'''
|
|
|
|
'''Класс ноды соответствующей пространству имен в дереве переменных.'''
|
|
|
|
def __init__(self, name='', parent=None):
|
|
|
|
def __init__(self, name='', parent=None):
|
|
|
|
self.name = name
|
|
|
|
self._name = name
|
|
|
|
self.variables = dict()
|
|
|
|
self.variables = dict()
|
|
|
|
self.namespaces = dict()
|
|
|
|
self.namespaces = dict()
|
|
|
|
self.parent = parent
|
|
|
|
self.parent = parent
|
|
|
@ -776,12 +776,12 @@ class NamespaceNode:
|
|
|
|
|
|
|
|
|
|
|
|
def add_namespace(self, namespace) -> None:
|
|
|
|
def add_namespace(self, namespace) -> None:
|
|
|
|
'''Метод для добавления пространства имен в пространство имен.'''
|
|
|
|
'''Метод для добавления пространства имен в пространство имен.'''
|
|
|
|
if namespace.name in self.variables:
|
|
|
|
if namespace._name in self.variables:
|
|
|
|
raise VariableError("variable with the name '{}' is already in"
|
|
|
|
raise VariableError("variable with the name '{}' is already in"
|
|
|
|
" the namespace '{}'".format(
|
|
|
|
" the namespace '{}'".format(
|
|
|
|
namespace.name,
|
|
|
|
namespace._name,
|
|
|
|
self.get_fullname()))
|
|
|
|
self.get_fullname()))
|
|
|
|
self.namespaces.update({namespace.name: namespace})
|
|
|
|
self.namespaces.update({namespace._name: namespace})
|
|
|
|
namespace.parent = self
|
|
|
|
namespace.parent = self
|
|
|
|
|
|
|
|
|
|
|
|
def clear(self):
|
|
|
|
def clear(self):
|
|
|
@ -794,14 +794,14 @@ class NamespaceNode:
|
|
|
|
|
|
|
|
|
|
|
|
def get_fullname(self) -> str:
|
|
|
|
def get_fullname(self) -> str:
|
|
|
|
'''Метод для получения полного имени пространства имен.'''
|
|
|
|
'''Метод для получения полного имени пространства имен.'''
|
|
|
|
if self.parent is not None and self.parent.name != '<root>':
|
|
|
|
if self.parent is not None and self.parent._name != '<root>':
|
|
|
|
return '{}.{}'.format(self.parent.get_fullname(), self.name)
|
|
|
|
return '{}.{}'.format(self.parent.get_fullname(), self._name)
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
return self.name
|
|
|
|
return self._name
|
|
|
|
|
|
|
|
|
|
|
|
def get_package_name(self) -> str:
|
|
|
|
def get_package_name(self) -> str:
|
|
|
|
if self.parent.name == '<root>':
|
|
|
|
if self.parent._name == '<root>':
|
|
|
|
return self.name
|
|
|
|
return self._name
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
return self.parent.get_package_name()
|
|
|
|
return self.parent.get_package_name()
|
|
|
|
|
|
|
|
|
|
|
@ -820,7 +820,7 @@ class NamespaceNode:
|
|
|
|
raise VariableNotFoundError("'{variable_name}' is not found in the"
|
|
|
|
raise VariableNotFoundError("'{variable_name}' is not found in the"
|
|
|
|
" namespace '{namespace_name}'".format(
|
|
|
|
" namespace '{namespace_name}'".format(
|
|
|
|
variable_name=name,
|
|
|
|
variable_name=name,
|
|
|
|
namespace_name=self.name))
|
|
|
|
namespace_name=self._name))
|
|
|
|
|
|
|
|
|
|
|
|
def __getitem__(self, name: str) -> None:
|
|
|
|
def __getitem__(self, name: str) -> None:
|
|
|
|
'''Метод возвращает ноду пространства имен или ноду переменной.'''
|
|
|
|
'''Метод возвращает ноду пространства имен или ноду переменной.'''
|
|
|
@ -834,7 +834,7 @@ class NamespaceNode:
|
|
|
|
raise VariableNotFoundError("'{variable_name}' is not found in the"
|
|
|
|
raise VariableNotFoundError("'{variable_name}' is not found in the"
|
|
|
|
" namespace '{namespace_name}'".format(
|
|
|
|
" namespace '{namespace_name}'".format(
|
|
|
|
variable_name=name,
|
|
|
|
variable_name=name,
|
|
|
|
namespace_name=self.name))
|
|
|
|
namespace_name=self._name))
|
|
|
|
|
|
|
|
|
|
|
|
def __contains__(self, name):
|
|
|
|
def __contains__(self, name):
|
|
|
|
return name in self.namespaces or name in self.variables
|
|
|
|
return name in self.namespaces or name in self.variables
|
|
|
|