Upload
yuriy-tymchuk
View
44
Download
0
Tags:
Embed Size (px)
DESCRIPTION
Presentation of FAST generic symbol resolution at BENEVOL 2013 workshop
Citation preview
Generic Name Resolution with Metamodels
Yuriy Tymchuk, Benjamin Arezki, Anne Etien, Nicolas Anquetil and Stéphane Ducasse
Software Assessment
Development
Assessment
Software Assessment
Modelling source code
#middleOf:and:b
a
sum^stst
:=
sum +
a b
/
sum 2
middleOf: a and: b | sum | sum := a + b. ^ sum / 2
Resolving symbols
#middleOf:and:b
a
sum^stst
:=
sum +
a b
/
sum 2
a
b
sum
Moose Toolchain
www.moosetechnology.org
FAMIX Metamodel��������
�� �������������������� �
������� ����
�� ����������� ��� �
�� ����
������� ����
�� ������������ ��� �
�� ����
������������ �
�� ������������� ������� �
������!�� � �
�� �������������
���� � �������"#�
�� ��������������������#� ��#�
FAMIX
Core metamodel
���������� �������
����
���������
���
�����
�������������
�������������
�����������
����
����������
����
��������������
��� !�"�#��$�����������
%��������!�"�#��$�������� ���
%���&!�"�#��$��������
��� ��������������
%��������������� ���
%���&����������
��������!�"�#��$��������
�����������
������� �����
���
�����
���
�������������
�����������!���'
���
�����
���
��������!���' ������������&�������
���
�����
���
#�������
������� ��
�����$����������
���
�����
���������
��� ��$���������
�����������
�����
���(��%���)������ ���*"�������)������
#��$����+�,���
��������)������
#��$���������
���!�����)������
#��$����!�����
Smalltalk metamodel
���������� �������
����
���������
���
�����
�������������������� ������� ��
����������������
�������������
�����������
�������������
���
�����
���� ��������
��������������������
��������
��� �������
������� ��������
�����
���
���������
�������!��������� ���"���������
�����
����
��������
��������
��� �������#���� ��
��������
���
�����
���#������������
��������������������
���
��������
���������
��������
���
���������
���$��������!
���������������
����������
����
��������������
��������
��� �������
���%����&�'����� ���$����%�(� ����������!
�����������
���$�����)������
�������$�����
���"(�������)������
�������*�+���
��������)������
������������
����!����)������
�������*�+���
�������!)������ ���%!������!)������
����������
����
������
���%�������������
��������
����
������
���%�����)������
�������%�����
���,��'���)������
��������
�������� ��
���
�����
�����������%�������
��������
��������%����
��������� �����������
�����
Java (sub)Metamodel
��������������
��������� ���
��������������
����
����� ���
��������������
���� ����
����
����������
����
��������
��������������
������������
����
����������
������������
����
����������
����
��������
����
����������
���� ����
��������������
���� �������
���� ����������
���� �� �����
����
����������
���� ����
����
����������
���� ����������
����
����������
���� ����������
���������� �������
����
�����
����
���������������
�������������
������������
����� ����!������������
���������"�������
��#$%����&��'�������
����(� ���������&��'�������
����(��������&��'�������
��#$%�������������
(� ����������
����
(�������������
������������&��'�������
����� ����!
������� �����
����
���������&��'�������
�������������
����
���������&��'�����������
����������
���"������������ ���
����
�����"������������ ���
����&�������
������� ��
�!��'��� � ���!
�������� ��������
���)��������
����
����������
����
����� ���
���*���������
���+������
���$(�����
�����������
��#$%�'��������
����������,�����
&��'�� ��������
���-�������,�����
&��'�� �.�/��
�������,�����
&��'�� �����
���$��!��,�����
&��'�� �$��!��
����'��,����� ������!,�����
&��'�� ����!
���0�'�������
���� �����
�������������
���-� ������
���� ����
����� ���
���-����'������
���$�(��.�������
�������� ����!
����
��(.������
����
��!�.������
���$����(���
����� ����!
���#����$�&������
���� ��!'���
���� �����&��
���"�������+�������������� ���"�������+������������
���������
��#$%����
���
Resolving a symbol
⚜
LookupSymbol Method scope
Class scope
Superclass scope
Package scope
SelectSymbol
private?public?
protected?
Case studies
Pharo (smalltalk)
Java (subset)
Cobol