15
Generic Name Resolution with Metamodels Yuriy Tymchuk, Benjamin Arezki, Anne Etien, Nicolas Anquetil and Stéphane Ducasse

FAST Resolution (benevol13)

Embed Size (px)

DESCRIPTION

Presentation of FAST generic symbol resolution at BENEVOL 2013 workshop

Citation preview

Page 1: FAST Resolution (benevol13)

Generic Name Resolution with Metamodels

Yuriy Tymchuk, Benjamin Arezki, Anne Etien, Nicolas Anquetil and Stéphane Ducasse

Page 2: FAST Resolution (benevol13)

Software Assessment

Development

Assessment

Page 3: FAST Resolution (benevol13)

Software Assessment

Page 4: FAST Resolution (benevol13)

Modelling source code

#middleOf:and:b

a

sum^stst

:=

sum +

a b

/

sum 2

middleOf: a and: b | sum | sum := a + b. ^ sum / 2

Page 5: FAST Resolution (benevol13)

Resolving symbols

#middleOf:and:b

a

sum^stst

:=

sum +

a b

/

sum 2

a

b

sum

Page 6: FAST Resolution (benevol13)

Moose Toolchain

www.moosetechnology.org

Page 7: FAST Resolution (benevol13)

FAMIX Metamodel��������

�� �������������������� �

������� ����

�� ����������� ��� �

�� ����

������� ����

�� ������������ ��� �

�� ����

������������ �

�� ������������� ������� �

������!�� � �

�� �������������

���� � �������"#�

�� ��������������������#� ��#�

FAMIX

Page 8: FAST Resolution (benevol13)

Core metamodel

���������� �������

����

���������

���

�����

�������������

�������������

�����������

����

����������

����

��������������

��� !�"�#��$�����������

%��������!�"�#��$�������� ���

%���&!�"�#��$��������

��� ��������������

%��������������� ���

%���&����������

��������!�"�#��$��������

�����������

������� �����

���

�����

���

�������������

�����������!���'

���

�����

���

��������!���' ������������&�������

���

�����

���

#�������

������� ��

�����$����������

���

�����

���������

��� ��$���������

�����������

�����

���(��%���)������ ���*"�������)������

#��$����+�,���

��������)������

#��$���������

���!�����)������

#��$����!�����

Page 9: FAST Resolution (benevol13)

Smalltalk metamodel

���������� �������

����

���������

���

�����

�������������������� ������� ��

����������������

�������������

�����������

�������������

���

�����

���� ��������

��������������������

��������

��� �������

������� ��������

�����

���

���������

�������!��������� ���"���������

�����

����

��������

��������

��� �������#���� ��

��������

���

�����

���#������������

��������������������

���

��������

���������

��������

���

���������

���$��������!

���������������

����������

����

��������������

��������

��� �������

���%����&�'����� ���$����%�(� ����������!

�����������

���$�����)������

�������$�����

���"(�������)������

�������*�+���

��������)������

������������

����!����)������

�������*�+���

�������!)������ ���%!������!)������

����������

����

������

���%�������������

��������

����

������

���%�����)������

�������%�����

���,��'���)������

��������

�������� ��

���

�����

�����������%�������

��������

��������%����

��������� �����������

�����

Page 10: FAST Resolution (benevol13)

Java (sub)Metamodel

��������������

��������� ���

��������������

����

����� ���

��������������

���� ����

����

����������

����

��������

��������������

������������

����

����������

������������

����

����������

����

��������

����

����������

���� ����

��������������

���� �������

���� ����������

���� �� �����

����

����������

���� ����

����

����������

���� ����������

����

����������

���� ����������

���������� �������

����

�����

����

���������������

�������������

������������

����� ����!������������

���������"�������

��#$%����&��'�������

����(� ���������&��'�������

����(��������&��'�������

��#$%�������������

(� ����������

����

(�������������

������������&��'�������

����� ����!

������� �����

����

���������&��'�������

�������������

����

���������&��'�����������

����������

���"������������ ���

����

�����"������������ ���

����&�������

������� ��

�!��'��� � ���!

�������� ��������

���)��������

����

����������

����

����� ���

���*���������

���+������

���$(�����

�����������

��#$%�'��������

����������,�����

&��'�� ��������

���-�������,�����

&��'�� �.�/��

�������,�����

&��'�� �����

���$��!��,�����

&��'�� �$��!��

����'��,����� ������!,�����

&��'�� ����!

���0�'�������

���� �����

�������������

���-� ������

���� ����

����� ���

���-����'������

���$�(��.�������

�������� ����!

����

��(.������

����

��!�.������

���$����(���

����� ����!

���#����$�&������

���� ��!'���

���� �����&��

���"�������+�������������� ���"�������+������������

���������

��#$%����

���

Page 11: FAST Resolution (benevol13)

Resolving a symbol

Page 12: FAST Resolution (benevol13)

LookupSymbol Method scope

Class scope

Superclass scope

Package scope

Page 13: FAST Resolution (benevol13)

SelectSymbol

private?public?

protected?

Page 14: FAST Resolution (benevol13)

Case studies

Pharo (smalltalk)

Java (subset)

Cobol

Page 15: FAST Resolution (benevol13)