Compilers principles, techniques and Tools · 2018. 3. 15. · ’ ˇ& 1 & 8= ˇd1 Sˇ$%34 7ˇ $˙...
Transcript of Compilers principles, techniques and Tools · 2018. 3. 15. · ’ ˇ& 1 & 8= ˇd1 Sˇ$%34 7ˇ $˙...
�
�������������������
�����������
�������
��� ������������� ���� ����������������������� ��������� ������� ���
�����
� ���������� � ���!"����!���#�����$��������%��&����'��������������
�� ���������
����������� ��&(��������� ��)�*��+,��$�%��� ������-./�(��0PL/1���1��2��#�&!"����3456����7��347����� �������� �8�
�5�9)��
��������347����� �8��5#�&����"��8�:��#��!"����9�������9�������*��+,���� ����;4���<=��5#�&!���4>9��
��(�?��&������%��<=��@�9�����������$��"��$���&>8��5#�&���4>9����"����A��#��1��2��#��#�����3�������<=�����1��2��#�B�-
��4)���9C���"��8��!"����<�� ��
��(�D�������E4��1��2��#������&>8�������!#��1��2��#�F'G� ���<=��F'G��
��(�H��I����J�K>� ����L��1��2��#��45���J�K>� ��8��5#�&��/�M7��$��!#�$�N-��<=���96�.�97�:��=�����<=�� ��������L��O-�G
�5#�&���!"����"��������������#���� ���� ��
��������&1�!����� ��1�!���$�8�8��������$�%��#���5#�&��������347����� �������P��#��7��&�� �%��4>8��$�%��1�!����9����
��#�����)�Q����&R�%��1�!���.��!"����!������4ES�������L"��#�����#�&��347����� ��9��������������� ���&1�!�����
�����A&1�!����9���������T#��9������55#�347����� ��9����3��56�������������
���������������+,���� ���������������*��+,���� ������ ���-����U�9���(7�������� �V1W���#��5#�&��$�����$*
��X�����Turbu C��X�������� ������������(7�������� �8�.ANSI C
?Y��41K�$9M>�(Lexical analysis
DY��41K�$9K��(syntax analysis
HY&R�5U���41K��(semantic analysis
ZY&��4���#��4>9��(intermediate code generation
[YL�#�$ ����54�code optimization�
\Y&R�L���#��4>9��(code generation
�$�%�]S�:��!%���]S�]7�3��^�,��_ ���0�^�8^�%���!��/8�"�^��%�]S�3���34�`�������5%��&���4(E������1��2��#���
����:�7�:������E���� �����
��
� �����
������������ �������������������������
Compilers principles, techniques and Tools
�
�������������������
��
��
��
��
��
��
��
��
��
��
��
��
��
��!��" #$�%
�&,���41K�����1��2��#������Linear Analysis��$9M>��41K��.�lexical Analysis��]�90��41K��.�scaning Analysis� ���=)�
�97�&�� ��������L�P�:�55#���"��������4�����8�:���9���������a6� ������%���#���#)8�:��@�����F%�����,5��$�%�������Token����A�
�8��%��&�Token�%����95����345b!%�8���97�&��:�4�c�&C������-����%���!��/8�"�����57��&��$9M>��)��41K��&"8����#�
����$9K�����141K��8������������34�@��8�$9M>��)��41K��&����������97�&��:��=����$9K���)��41K��$�8�8��
�%����E��d1�S��Q�9���Token�%�� ���5�������
$�41#���!1#�keywords�
�%���1!��operators�
�%���e�literals���
�%����57�identifiers���&1#��9f���8��%���8��.g�9��.�%��4M���&��������#)��5#�&��h�S�������#��#�&�����97�&����=��
�%�:�55#��"�delimiters�
���
�
���
�
�
↵
�
;
tab
space
��
�������Token ��$���a=b+2
��
��&���
�$9M>���141K�comment�%����K4i9��&>���$�%��1C�-�8��5#�&���������white space�����"�F%� ���#�����%����57�$�%���#���#��#���
�%��&��_��;)�����P��%��j��&R�,���)��8��5#�&��IkG�����5#�&�� ��������������TX��^6a��^�&��_��;)����&R�,��$9M>��)��41K�
�5#��
��
��������� ��
��������� ��
���� ������� ��
������!��!���
���"��!��!���
������!��#�$����"%
�" &'$�()!* �+��,-��.�#���/
!01�������%
%�!&�������
Token value ���Token type
������������a������� ����������id����������������
w w w
. i t
9 8
. i r
� �
�������������������
��!��" !��%
�������1<1���41K�&�Hierachical analysis���;'�� .��parsing analysis� �$9K�����syntax analysis� ��97�&��:�4������141K��
�8��� ���`9�������)�3�7�����$9K�Token ��9�����)��8�����������P�B���7��������9�������$���$9M>���41K�� ��&�-�����$�%�
8��%��&��_��;)��,���7������ ���`9���%��&��&R�5U����141K����&"8�����95�������B���7����������).��� ����TX��C��)��
��(7���$�9���);0( ++= iifor�%�4��j��$9K��$�,��F47����7�����
'(�)*��%���!���
���Q9��/��5#�&R�5U����141K���=4l8�3���!L��Type cheking������ ��!���7�� �'��Q9���������)�����)8��%��&����'������Q9�������
�%�4��_��;)����Q9��������$�,����������������� �� �� �� �� ������������������Q9�������←+ intfloat��
�,�←+ charfloat��
��
'��������))���$ ���
�97�&��������&��4���� ������$�8�8�������]S�3������ &��4���� �3�����9�4���4�E��&��;����347������$���$�������������
��#� &��4���� �3���A��G���7������������c�m�9��&�<����
����$ �+$ ,����7�����P��P�$����#��4>9������97���-�)��O�����:����������(����G����&�,5��347����� ��
�-.�/�0��0�����+$ ,��������&�,5��347����� �7�����P�347����� ����P��������#��7��$����9)� ���
'������"����)�,0��
]S�3�������#����TX���97���"�����g�����#���P����&��9C���&��4���#�����97�&��&U��+func(b)�a=func(b)����8��$�"���
�g���&��9���-func()�g���3���������0���b������8�:�7�&��9���-�������� ��n2��8��97�&����S����A9���4M����������P�&�E)��
�97�&��:��=�����A9���4M����������
<46��97�&!����'���&��4���#���:��!%�$ ����54L��!���#�3����4>��o��
h�9"Y������-����.�#� ����54L�&>8������(E������������#���#�8��97�&����'����������:��!%�&��4���#��4>9���!�����95����
��4)�&��$�8�8��
'(�,�����))���$ ���
�97�&����'���347���$8������"����A�&1�!����#��1G���3������ ��<���&��:�E��:��=�������e� ���P�����#�&��4��:�7��4L���#�gA�8���
�97�&��:��=�������e� ���P�����#��97�������$�#����
��1��2��#��G������ ��(7�/�X����95���p=i+r*60 ���%��&����E������9����3���$8�������2��#� ���1G����%��4e���8��:�7�p�-
��#����i,p,r�Q9�� ��&�!%�real�5�<%����
��������
��
��
��
��
→+= →+=analysissyntaxanalysislexical
idididrip 60*:60*: 321 :=
1id +
2id
3id
*
60
→analysissemantic
:=
1id +
2id
3id
*
60
inttoreal
���
�
���
�
�
→
���
+=
= →
��
�
��
�
�
=
+=
=
=
→
11
12
12
2
23
121
31
31
223
132
1
int
,
,
,
,0.60#
,
0.60**
)60(int
idRMOVF
RRADDF
RidMOVF
RMULF
RidMOVF
tidid
idt
tid
tidt
tidt
torealt
generationcodeoptimizercodegenerationcodeermediate
w w w
. i t
9 8
. i r
�
�������������������
��
�1�&�'���&����� ������� -��]Sfront-end�&>8�������<(���%�347�����!��$����1��2��#����back-end������8�=���d1�S��$�%�347���$����
2��97���79��������3������ �'���4W���#���#��)�$9M>��41K��scanner���%�4��q4SE������P���942��#��91�Yrs���
�#9��������������2��#��5���-�����1G�������%�3$9M>�;4>��P�Lexical����9E4��&R���57� �� P���942��#�&��5L�Yr?�
���1G������$9M>��41K�FRT��/8�"����8�����������9"9��$�%����57��41#�symbol Table���9E4�� d>9�Y�7�����4%���
�back-end���1G��� ��&ES�54L�$ ����8�7�������<�8��#�&R�L���#��4>9���1G���7��&��.����34�d>9�Y�7�����4%����
��34��8�=�compiler�8�preprocessor��#�&>�G����.�%�4����'���������$8�����&R�5U��8�$9M>��41K���1��2��#��#�����3������
preprocessor�%�4!����'��������#�3����d>9�Y�7�����4%����
�front-end ��:��=�����4>��8�back-end���1��2��#���front-end��56�V4#���t�����.�%�8�back-end���1��2��#�u��9���������
����d>9�Y�7�����4%���
�����.�7��:�E���T���T�A����57��#�&��9C���&R�5U��$�,��%�4��j��� �� ���09�Yd>9��
���M>����������������`9���$�%��,��dE#��=4l8�$9M>��)��41K������h��#Y��9����40�
2�9������;:7var integertemp =�M>�$9M>��)��41K��.�7��&��/�(��0��� ����#�temp7���� ��%�4��_��;)��,����95�������
�97�Q8�7����������������57����/�(��0�����
2������/�(��0��� ���.=:BA��,��$�����h�<����+4KC�V4���������������4>����7��&��$9K��$
������Y�.������/�(��0��� ����thenbaif =(��7��&��$9K��$�,��$������%;����0�� �9�������4>�����
Y���%�4�����A�&������9���������:�9������$9K���O�� ���#�&���������9�����&5U��&R�5U���)��41K���
��
+��12��3'���������3+�4� ���
2����8��5#��44M���#��>9��]S��L5������&-�#��L���$v9>95(��8��%�347����44M�����k>��79��347��� �����<����9��&������1��2��#
�1��2��#�$�%�]S�������
2��#�:��=����&��4���#����#����g����$�����9��&�����347��� �����<���#� ����54L�����Q9�����"9���8���'4������.47��.3
�9��%�9���54L�3(!���G�����#
�5�0'������ ��6��5'����"�7��'��2 8�0
?Y&1�!�����7��#��
DY$9K���CT������
HY����P�����T!"
���#��4>9��&1�!����#�$9K���CT������� ����9��&��&)������$��9<0�]��!40������
��
��
��
��
��
w w w
. i t
9 8
. i r
�
�������������������
$9K���)��41K��d��l8��
?Y�����8��KC�&�����������M>�V4����&�������������������&������
DY/��5#�����"�&����Flow of control checks �������TX�.Break��� ����c��1G�3���(��;�� ��w8���V"9���while.�for.�switch�
�%�4��j���,��$����1G�3456���9�����9C�����#����)�&��
HY��������TX��.��9��-�����K5��/��5#Lable�97��%�l������������������4A���<���&��
ZYAda��� ����TX��.@�����$�%��������#��6���<���&���#������9���������$�L����8����������������$�������1G���
�57����<(�
[Y��6���������#9���9��$�%��
��
���)�2��3� 9��:�;��'(�)*��<6��!�=� ���"�2� ���'>�0
�0�7����2��'%)7��7'�2�����x7����x7���&�5%�!%�/�8��d��U��������/�8�����&��9���-� C�����x ����TXx����$�x%������x0����xU��
�7����7���&�5%�!%�g���d��U����������L�P�V4����8��L�P�Q9��.&>������
� ����)� '�2�0���&�����A�&������9����1!�����$�%���91!��Q9���!<A�3��������4)�� 12 ������TX�:]5.1[ =a���&R�x5U��$�x,��
����P����n�������� �������9"8�a���7��$��E�����������&�<������
� �6����b ������������g!"��!����'���$��������8�=���$��E���8�+4KC�������$���g!"���41!�ac +=c����x#�&��9xC�������8�
bfloat���Q9�� �����8�aint���Q9�� ������%�4����'������Q9��y�������!��&R�5U����141K��.�7��� a����4M�����A9���#��5U��3������Q9x���xfloat������x���
�9E4���
?��*���#���2�0 ��7��:�E��d��U�����8��$�4M���z4%�����5#�&��&����&R�5U����141K�
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
w w w
. i t
9 8
. i r
� �������������������
�������
������� ��
�������� ��
�������������������
�������������������
�������������������
������������������n
�������������� !����
�������������� !���2
���������������� !�3
�������������� !���n
����������
��� �����������������������������������������
����������� ����������������C����������������������������������������������������!���!�����!��"��!#�$!%���&���!�����!'��
����% �(�����)��'���%�����*%��%������������+����)�n������ �,������������� �&��-���������C�������.�/,�0��� �+++����K������!��������!���!�������!���&��-�
������"��#�$%���&��1��nk����2,�� ������%������+���2,����%3���0����4�� ����(����%�����&��-��$%��&�5%��+����!����%�!������(6�� ��7/8�$%��79�����
����������:&�;�,�������<6=���������'+�������� �*%����7/1�$%���������!>'������!���!� �$!%����������4��������������&��%��)����?���&���
������ � ��@�,�:&�������������>'����A6��� ��������+������������������� ��!��"������������#����������$��%���& '��������������"���()�
���������������"���()������ ������*� ��+ ,���!��"�����-������������������$��%��& '������"������� ��!��"�����.���!��"���������������������
/ 0 1�����������������������*2��+ ,���!��"�����-��������������"�34,�5��
��
��
������B���$%�� ��:&�;�,����n���4��� ���k������������������n�������'���k�2,�� ���������<6=���
���>5��&���n+k���������%����� 2,��C���9����&����8�������D��$%���% �7/1+ ��
��
��
��
��
��
��6������0���7���8���� ���������������������������/ ��%��
E�9��F��)&�,��
E�A6��� � ��������'�.G6�,�
E��4��� � ���)����<6=�.G6�,�
E�)��H�0�I���
E&�5�:&�;�,��2����J�I%�3K�
E�����L���2=�,�I%�3K����2�!,����!����%�!����
�%�'������� ����%�'���3K�+��
��
��
��
��
��
��
��
��
������� ��
���� ���"��
�������
�������
��������
w w w
. i t
9 8
. i r
� ������������������#
� 9:��; �<%� ������=����$���M,������1�������4�����������%���������!��������!��"��#�����&����������������N��;�O��$%��>P��
��%�������8��Q��8����������������������1�4��% �7/1���RL��S���T��$�K�)����J�:�T��������%35�����&����$��:���&����8�����+��
��
��
��
��������������.����% ��%�.�������"��#���������� �&�1�� �,�:&��0�����������2,����&�UT�����������-�� ���� ��
���&����,��0���������-��$���+��
�;���>��'�� �����
E����L��������VK�WX9"�T�D����������
E��Y��B��3)��
������5�N�� ���������F�Y��:��>1�N�Z4�������M�����������������&��-��������������������������������������"��#������������
����Q�8�3������&��&����J�N��&����$�������+������B��3)�3������2,��:&�&�[���Y���������Y��:��>1��Y��\G=��\�S���$%�������+��
�8������*2���-������?������������� �� ,�"�2��� @��7A��B� C���65��
E�)&�,��
E��]����^����
E7>9�2����J��
�1��2=��
��&���&������,��0�����.�>=��$%��������_�K����2,����,��0� �����:��H�0��1�����"�T�D������L��������VK�WX9����`�����=��J�:��
��������&���\�5��+��
���0�����%?�=��
��&�.�>=��$%��&�&����J�2,���&����7>=�*%�������������������������������2=�,�&���]�������������P>��$�K�)��?���&�����&�
������&�1����^�����I%�3K��<4,+��
3$D�* ���E=��
:a%�����������������`���������&�&���J�.�>=��2G=�Gb�c�.�/,�0��&���& �����������������(�����&����2%�%��.�>=����F�$�>�
��&��� ������&�����]�������S���T��7>9�2����J+��
��2,��������>�����%���������$%����)�2J����� �������d�&�1�:&�;�,���K��� ���%�����%�4��]������2=�,��%���@0���&���\�5���
&�1���2=�,�$�K��]���e=����K��+��
��7F�*��2�G�=��
��%���RL��S���T� ���������������������� ��������$%��7�L&����$%���������&���\�5�������&����7>=����2,����%����� ��� �K��P��
&�&�\�5����&����7>=�*%�2(%���1������K��� ��:&�;�,��B���$%���1�������;�2=�,�I%�3K��2P'��1��� ��:&�;�,��+��
��
�����������*%��1����/��)�:��1�������&�����&�����K������
�������f�&�������'��9���*%��������������������+��
����������������f�������������������8�������Q�8�������������&�����
��$%&%���� � ��'(��)���* +,-������.
� �/ �0�1&���2�3�45�%����6�&����� �7
�6�&����� $�8��
second halfFrist half
w w w
. i t
9 8
. i r
� ������������������9
���G @��1����,����( @����H ������������� ��I� J���"�34,���+��
��
��
��
��
��
��
��
��
��
��
��������� �����������>���������(%�6�&��-������������%��&� �����(%�6�����&����������������(%�6�*%N�79�:������4PS�� �����2,�
�����:&�;�,���
��4PS���������������
��>��������P�����4PS���������:a%������������&��)������J��K���3'����2,����2(���$��g+��
��
��
��
��
��
( @����H ��������G @��1����,�����������!�#�;���-������������$I�� ��I� J���"�34,���+��
��
��
��
��
��
��
��
��
��
��
��
��
��
1
;
1
;
+=
+=
forwardforwardelse
end
halffristofbeginningtoforwardmove
halffristreload
beginethenhalfsecondofendtheatforwardifelse
end
forwardforward
halfsecondreload
beginethenhalffristofendtheatforwardif
eofeof
second halfFrist half
end
inputofendgsignifiyinbufferawithineofelse
end
halffristofbeginningtoforwardmove
halffristreload
beginethenhalfsecondofendtheatforwardifelse
end
forwardforward
halfsecondreload
beginethenhalffristofendtheatforwardif
beginetheneofforwardif
forwardforward
/8/*
;
1
;
;1
+=
↑=
+=
w w w
. i t
9 8
. i r
�������������������:;
"�2���� @��I�K�� ������
hE��RL��S���T���L�� ��:&�;�,�������7�=���(�,��&�������
iE�� �N��&��&����2%�%��"���/�� ��:&�;�,������(�,�� �,��������� �*>������ �,�:&��0
jE0���4>,���� �*>������ �,�:&���&������6�(�2%�%����
�7b���%�)�������%�������%��������������L�����%������1&�������^�����3��������7�=���(�,��&��������
�����7%�4��7��J��>?��"��4=���������&���I%�>���?��"��4=����,�����������$���������SL������2,�+��
7/1�&�>��$�L������\�J�����W��9� ������L�4�&� ��2,��"��4=��,��1�Q��8��:�=�J����&����8���������,��1������2L�9����R����&�>���% �
��1���W�9�N+��
��
�.�9������������Q�8�������+��
�.��'��� ��� ��
��
��
�.��' ������
��
��
��
��
��
��
���������������/%�&�1���7�/8���;L���&� ������������6���S%&��������
&�1�:���k����&�>��.��'��&�$����2(%�����$�������$�K�%� ���-�+��
&�1���:���k��Y,�$�L���:��>1���\������������&�>��.��'��&+��
��
<��1�=.+>
�-$��?��8$�1
���1
>< valuetokentypetoken ,
letter other 3s��1s�� 2s��
4s��
Letter/digit
stare
digit
w w w
. i t
9 8
. i r
�
��������������������
����������
���� ������������������������
�������������� �����<=<<>=>=> ,,,,,��
gratherG
EqualE
leseL
:
:
:
��
����������������������������������������������
��
��
��
��
��
������ !"#$�%�����&�����������'��
��
��
��
��
��
��
������������������
��
����� ��(��)���������� !"#$���
112
112)/(
134.12.
134.12)/(.
EdigitEdigit
EdigitEdigit
EdigitEdigitdigit
EdigitEdigitdigit
+−+
+−+
��
��
��
��
��
��
��
��
��
��
12�� 13�� 17��14�� 15�� 16�� 18�� 19
digit
digitdigit otherdigit
digit digit
. E −+ or
E
�
digit
lette
r
othe
r 11��9�� 10��
Letter/digit
stare)(id�� return
�
�
w w w
. i t
9 8
. i r
�
��������������������
���#���(��)���������� !"#$��
digidigit.��
��
��
��
�(��)���������� !"#$*!+)��
��
��
��
��
����������� ������!��"#�$�%&�'����� ��(�����
��
��
}
;
}
/*/*:
;:():25
;:25:20
;:20:12
;:12:9
;:9:0
{)(
{
()int
;0,0int
startreturn
errorcompilerdefault
breakrecovercase
breakstartcase
breakstartcase
breakstartcase
breakstartcase
stateswitch
fail
startstate
=
=
=
=
==
��
��
��
�������
����������������,-���.���/��$�0��%����1!����2�������3�������45��.����6�����7.����28������.�9��:������(��)�/����������� �
����.��.���������������!-��/3�����
��
����������� ���������)&�����*���!���*+,� ����
��
��
��
��
22��.
24other �start
20�� 21��digit
digit
23��digit
digit
27other �start25�� 26��
digit
digit
w w w
. i t
9 8
. i r
�
��������������������
(�+!;�$<=��$��� �������������.����>����?6 ��@8�A������
����������B)��������!���� ������������������������.���
� ��������/������C�����,2�D�8�������������8����6����!�����
����6 ��@8�A�������A�.��E/��$�/>����������.��������������
��A�.���/��$�@8�A�������8���#!.����������������5�FG�����
����.������������8���#!.��������5���?6 ��@8�A�������6����
���5!.�������������.������������#&?6 ��@8�A��0�?3�'���
��
��
��
��
��
�����,2�D�@�-����%�>�����0����!���(� ��� !"#$�������
�������B����8��/���0��8��������0�(H�D����I$�J �����������
(� ���,����E��KL�J����!.�/!��L�,���8����������?3#.��
E�6 ��@8�A��������0�MG������!����������5������#��@8�A�������
��������
�,���������=��$�%�����
���=��$���������������������/��$�����������!���� �����
���������������8���#!.���������FG�N���.����#��������!.��������
��9,10,11,�����!���(� ��� !"#$��������
������J������.���3$��#!������O��/��$����,����E� �����
�����I��J��!����5�/�0�MG����� ������.�P�������@8������
�8��H���,������
��
��
��
��
��
��
��
��
��
��
��
��
��
��
;
();
;16)''(
15))((
();:15
;
();
15))((
();:14
;
();
;16)''(
;14)'.'(
;13))((
();:13
;
();
;13))((
();:12
;
));((
);(;)(:11
;;11
;10))(||)((
();:10
;
();
;10))((
();:9
;;;;)(:4
;;;:3
;;;:2
;
;4
;3)''(
;2)''(
);(1
;
);(
;6)''(
;5)''(
;1)''(
};0,_{))(();(:0
){(
{)1(
break
failstateelse
stateEcifelse
statecisdigitif
nextcharccase
break
failstateelse
statecisdigitif
nextcharccase
break
failstateelse
stateEcifelse
statecifelse
statecisdigitif
nextcharccase
break
failstateelse
statecisdigitif
nextcharccase
break
valuetokengettokenreturn
valuetokeninstallcungetchcase
breakstateelse
statecisdigitcisletterif
nextcharccase
break
failstateelse
statecisletterif
nextcharccase
breakLtokenvaluereloptokentypecungetchcase
breakNEtokenvaluereloptokentypecase
breakLEtokenvaluereloptokentypecase
break
stateelse
statecifelse
statecif
nextcharccase
break
failstateelse
statecifelse
statecifelse
statecifelse
statebeginninlexemecisspaceifnextcharccase
stateswitch
while
=
==
=
=
=
=
=
=
==
==
=
=
=
=
=
=
=
=
=
=
=
==
==
==
=
=>==
====
=
=
=>==
====
=<==
=++=
�
���
��
���
��
���
����
�@8�A6 �?���
w w w
. i t
9 8
. i r
�
��������������������
��
��
��
��
-�./���� ��������
��
��
��
��
}
}
;;'');(:27
;
;27
;26))((
();:26
;
();
;26))((
();:25
;;'');(:24
;
;24
;23))((
();:23
;
();
;23))((
();:22
;
();
;22)'.'(
;21))((
();:21
;
();
;21))((
();:20
;
;18))((
;;'');(:19
;
19
;18))((
();:18
;
();
;18))((
();:17
;
();
;17)''||''(
;18))((
();:16
==
=
=
=
=
=
=
===
=
=
=
=
=
=
=
==
=
=
=
=
=
=
==
=
=
=
=
=
=
=
=−=+=
=
=
tokenvaluenumtokentypecungetchcace
break
stateelse
statecisdigitif
nextcharccace
break
failstateelse
statecisdigitif
nextcharccace
tokenvaluenumtokentypecungetchccace
break
stateelse
statecisdigitif
nextcharccace
break
failstateelse
statecisdigitif
nextcharccace
break
failstateelse
statecifelse
statecisdigitif
nextcharccace
break
failstateelse
statecisdigitif
nextcharccace
break
statecisdigitif
tokenvaluenumtokentypecungetchcace
break
state
statecisdigitif
nextcharccace
break
failstateelse
statecisdigitif
nextcharccace
break
failstateelse
stateccifelse
statecisdigitif
nextcharccace
w w w
. i t
9 8
. i r
�
��������������������
����������
���� ������
������������������������ �������������������������������������������������������������� ���������������������� �!� "#��$�%���������&
�����������������'�(��)��*���������� ���������������������������� �������� +,��$�+-���-��."/��������0���1���2+��)��+*���+�����)3�4
�������5���,�*-��������� ��6��#���������������6��7�8���'��*��4���������,� ��'�#��)3��5�������9:���4��;��
��
��
�������<����=�����>:������������������������-���%����8�������-�����-��� ?��������84����� ��@����A:�����������������!+���� ��
�6���4�$�����B%��>�����������4�����8����������-�����-������ �"��7�8������0���A:�6�"#�1����������6��C�)���D�����;��
��E4���������� �����*F,��� F����>:������������������������� G�H����*�� ��IBJ���4�4���-������� �����-�����-��� ?������;��
������������������������
K������� ����
K�6(�����H���������2��)�����C�L������: =���M������C�L�������?�4������
K����4�� *�N>��H����O��5����6(���4�P�����<>→><��
K��������2�����A���
��
�����������
������,���,�����������)���������,���-� �������)3�����7����)���������������,�$���D�8������6?�!����������%����;��
��
��
��
��
��
��
���� ��)�������"��Q����'������$�**����NP� �57��������6F-;��
��
��
��
��
��
��
��
��
��
��
��
��
))(( xfxfi ==
��������� ���������������
),,,( PTNTSG
RuleProductionP
SetalTerT
SetTerminalNoneNT
symbolstartS
:
min:
:
:
����������� ����������������
����!��"#$���%�
��&������ �"#$�'()*
'���()*���� �����%�
+����!
*�,�-.�
�����/0� 1�2��!
w w w
. i t
9 8
. i r
�
�������������������3
•�-��� �����8���������*F,���9�R4;��
• "����9�R4�������.,��$�-���:������8�����-�����8�����������������6��7�)��������7�.,����3�&����� !����:�
���� ��!�"������
K����,��D>��D���/�� �"��7������&$�**����������������-�����-���;��
K�$�**���>��D�����,��DSK���8���D����T��������,��D�UK�T������8���D������,��D�
•����������/����**�� �� 5,�����4� 5,�������8�����������-��8�C�%����$�**���>��D*���������������+���%�.+,���+�:��6+��7���-��8�����3��
����,��D�8����������� !��)���� �����������������������*-�����-����
•��"�H����8���D����T�������,��D������������ ��������+���+"�H� �����������������V�������"�H���:����� 5,�W�?�-�����4�$����X4�-
��W�?�-�� ��������Y����V�-���;
•�����,��D����8���D����T����4�4��"�H����0���8�����-��1����)��,����� 5,�4�$����X4�-����� ���� ������+H���� ����������������
���B%� ����� ,��� �,�&Z[� �,������;
•�*-���<�\����7�C� �!�����������%�$�**���>��D���;
��
���#�$��
��� ,��<�\��������������%���)������%���������%�)3�.,��$�-���:��)��������"�H�2��67��J������4���� ������� +,���W�?�+-�� ����4�����Z[�W�?�-�
'�(��)��*������������D�]"���;�"�H���:������������-� ���VJ^������>���V���������������%���
,��M\�������%�4��������H4�Z[�W�?�-�� ����4�;��-�<�\���_C�� !���� ��4�;��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
����→ ��������������������
������������������������������������������������������ �����
��� 1E ���������� 2E ������� 1S ������� 2S �
������ ������ ������ ������ ����������
����
��
������ ������ ������
1S
2S
2E
1E
������������
������ ������ ������
1E
������ ������ ������ ������ ����������
2S1S2E
����
w w w
. i t
9 8
. i r
�
�������������������4
•M��������M�-�����-��� �����%� ,��M\�����/���`�)����M�*�����D�)3������� �\�������%�;��
��������������6F-����6�7��#9������%�<�\���_C���
��
•���2+����4�4��+,��D���� +,������������4�4��*F,����
,��8����
�%�!�&'�(��!�����%�)�&*����#���+�,�!��#�-�#�.�%/��
)1(LL�E4��8�����""L������$�����Z[� �,������4�4���-����� ,�� *5��8������'4���4�""L� �,�����,��D���� ,�� *5��8������<4��
�*�� ��$��9�,����7�?�-��8���Z[;��
���)3�)���D���� ,���8�����������-����4�4�����aM���� ��b�����
������D�������������� ,�����D�2��������a����4��������� �������7����'4�H�2��������8�*c���&���%� �����+�8��� "�������,�&�-��� ����NP�X
,������<�C�����,��D;��
��
��
��
��
��
��
��
��
��
��
��
��
��
�.%��+0��1�2)�)(αfirst��
�6��,���������P������8���/3first���$�-�d��������"�H�����6F-���� ,�� G���'�*��������P��)3��-� ��X4�-�)3������
�8���/3�����P�� ��,�����7x��
K��%�α�����D���-��}{)( αα =first��
K���%���������$�>3��*����:�����P��������)(xfirst��*���C�L��;
K�%�X���4��+���D��+�/�2�kYYYX �21→����+-����+:���2+��;�����+���+���P��4�)()(,)(,)( 321 nYfirstYfirstYfirstYfirst ��
6��-�� +*5���*+-������+���iY����+P�������+**���+�:����� +\��+*������+��X����+��� +��N+������+��8+�������+���+*���+�:�������+�
����P�)(Xfirst��-� ���C�L��;
K�%�X4�����D���/�2�kYYYX �21→�-����:���2��;����P��)( 1Yfirst0NH���ε�1����P����)(Xfirst�������C�L�;
K�%�X���4�����D���/�2�kYYYX �21→��-����:���2��;�4�ε��������P�)( 1Yfirst�-���01Y�������ε����+*���+�:�����1������+��8+�����
���$4^�)( 1Yfirst0NH���ε�1����P�)( 2Yfirst0NH���ε1�����N�)(Xfirst�������C�L�;
K�����:��$���7�����H����ki YYYYX ��21→��%��ε��)(,)(,)( 121 −iYfirstYfirstYfirst ��������P���-���)( iYfirst0���N+H��+�ε�1
����P����)(Xfirst�������C�L�;
X
Y
Z��$
�"#$�-.� ��M
……�� a + b $ ������
����!��"#$����������%�5
������
stmtunmelsestmtmthenexprifstmtunm
otherstmtmthenexprifstmtm
stmtunmstmtmstmt
___
|__
_|_
→
→
→
w w w
. i t
9 8
. i r
�
�������������������6
3�4��$����>���V���������������%;��
��
��
��
��
��
��
'�(��;���-�a��*����:����������%�.,��������3�&a����� !��)����8����e����
ε|
|
SB
baBS
→
→��
f,�D�;���aaBS →→�4�},,{)(,},{)( baBfirstabsfirst ε==��
��
'�(�;���������%���first()��*�������������;��
����
caF
aFbaA
aFB
bBAaS
|
||
|
|
→
→
→
→
�����������������������������������������������������������f,�D�����������������������������������������������
},{)(
},{)(
},{)(
},{)(
basfirst
caffirst
baAfirst
aBfirst
=
=
=
= ε
��
��
'�(��;���������%���first()��*�������������;��
��
caF
aFbaA
aFB
BabBAaS
|
|||
|
||
→
→
→
→
ε
������������������������������������������������������������������������������������������������������f,�D
},{)(
},{)(
},,{)(
},{)(
basfirst
caffirst
baAfirst
aBfirst
=
=
=
=
ε
ε
��
��
idEF
TFT
TFT
ETE
ETE
|)()5
|*)4
)3
|)2
)1
→
′→′
′→
′+→′
′→
ε
ε
},({)(
},({)(
},{)(
},({)(
},*{)(
idEfirst
idTfirst
Efirst
idFfirst
Tfirst
=
=
+=′
=
=′
ε
ε
f,�Dw w
w .
i t 9
8 . i
r
������������������� ���
���������������
��
����������� �������������� ����(�)���
���������� ����������������
������������ ���������������������������������������������� ��!"#����$%#����������&�'(�)��
��
��
*��������%��(#���!��!��)(αfollow��
+� ,�α-symbolstart��.�/01#�!����2�3����4�)(αfollow!�������5�
+6��������!'��� ,�αAB →����7�8� ��.�/0#�--9������:����)(αfirst7�����ε���������)(Afollow����������;��5�
+�!'��� ,�6�������AB α→����7�8� ��.�/0#�--9������:����)(Bfollow����������)(Afollow����������;��5��
+6��������!'��� ,�βαBA →����7�8� ��.�/0#�-!�����:�������()(βfirst7�����ε���������)(Bfollow����������;��5��
+6��������!'��βαBA →�� )(βfirst�(�<�ε�����������7�8� ��.�/0#�!���)(Afollow����)(Bfollow����������;��5�
��=�5���������(����!� �>�?<����@�! � ��5��
��
��
� ���
��
��
��
��
�=�5���������(����!� �>�?<����@�! � ��5��
��
��
��
��
��
��
��
�=�5���������(����!� �>�?<����@�! � ��5��
��
��
��
��
��
}{)( aXfollowBXa =→→ γα
idEF
TFT
TFT
ETE
ETE
|)()5
|*)4
)3
|)2
)1
→
′→′
′→
′+→′
′→
ε
ε
}),$,,*{)(
}),$,,{)(
}),$,,{)(
}),${)(
}),${)(
+=
+=′
+=
=′
=
Ffollow
Tfollow
Tfollow
Efollow
Efollow
},({)(
},({)(
},{)(
},({)(
},*{)(
idEfirst
idTfirst
Efirst
idFfirst
Tfirst
=
=
+=′
=
=′
ε
ε
A��B
ε|)4
|)3
|)2
)1
dD
DbB
BSBaA
ABDS
→
→
→
→
}$,,,{)(
}$,,,{)(
},,${)(
},,${)(
dbaDfollow
dbaBfollow
dbAfollow
dbSfollow
=
=
=
=
},{)(
},{)(
},,{)(
},,{)(
ε
ε
dDfirst
dbBfirst
dbaAfirst
dbaSfirst
=
=
=
=
A��B
BcC
bB
SbCAaSbA
BCdS
|)4
|)3
||)2
|)1
→
→
→
→
ε
ε
ε
}d,a{)C(follow
}d,c,b,a{)B(follow
}a{)A(follow
,$}b{)S(follow
=
=
=
=
},b,c{)C(first
},b{)B(first
}d,c,b,{)A(first
}d,c,b,{)S(first
ε=
ε=
ε=
ε=
A��B
w w w
. i t
9 8
. i r
������������������� ���
S ���E %#����� � "3� �� ,,�(�F����(��C�� �� �D������E��+− ,,*����C������!C" �/�� CF0�������!:?C���C�� ����C���E�C��)(EFirst�
()(EFollow!���������5��
λ|*
*|
EF
FE
ES
+→
→
−+→
�A��B������,*}{)(
,*}{)(
−=
+=
Efollow
Efirst��
��
�������� �������!0��!0�5��
���������� ������!�"�!�#�$#%���
�!��E0�9GE����
���!0�H8��:I,3���!�����:5��
�!����.!�������%#��(�� ��H8�3��� �,��: ���5��
&'�()%*�!$� ��������)��
J+����#�H8��:I,3���$�G"!��)������αAA →��
��
K+�����������;�H8��:I,3���dBcAdB
cBA
||
|
→
→ α��� ��H8��:I,3���&"���������������������������������������;�αα AdBA →→��
+(,��!�&'�()%*�!�-.���
�0�0�*���0�8�������|||||||| 2121 nmAaAAA βββαα ��→��"��L����9������:���iβ�����A@�!�M���(�!0�I0�N( ��
3�iα�:?"�E0���ε3�����I��%�������!���,"���������H8��:I� ��<� "3�%�0�*�(���"7/��
εααα
βββ
||||
|||
21
21
AAAA
AAAA
m
n
′′′→′
′′′→
�
���
�=��5!� �OP<���� "3� �� ,��:I,3��5��
EdBcdEaEAcE ||||→��
�A��Bε|||
|
EdEaEAcE
EBcEdE
′′′→′
′′→��
+�&'�()%*�!�-.(��/���
����� �� ,!�����:��!0�%���?B��.!��*�5��
��������(��AA →+� �� ,�����!��E0��
9:"��/'���
��
��
��
��
��
��
��
��
doitojfor
dontoifor
)1(1
1
−=
=
������kjA αααα |||| 321 �→ ����� � βji AA → ������ ��������������� ������
βαβαβα kiA ||| 21 �→��
������ �iA!��"# ���$�%&'�����()�*+�,����-�.��
��
��
w w w
. i t
9 8
. i r
������������������� ���
�=��5!� �OP<� "3� �� ,�3�����H8��:I,3��5��
SdAcA
bAaS
|
|
→
→��
��:I,3���OP<��� ����;9"����H8bAaS
bdAadAcA
|
||
→
→��
����<9"��������#�H8��:I,3���OP<���
&'�0�)��1���
��
!�'���3�����(���*�!<�H8�������� ,������H8���: ��������� �� ,�Q"!����R :I�� S��Q"�%#�6��5�=�21 | ββ aaA →�������
H8���: ��α�@�/�����%�8�� �.��T:���&�"�B����U������� ���B����%������0���� �� ,�N�0�&"��3��� �!"��%���������(�����!�������
��*�&"��3��Q"�@�! �� �� �&��V��%������0�%� �W��B!0�������>�������������!�'���&�0�53��%�������U�����I��X����� ���: ���
�� ,5��
�9������:���� ,���� ��'�<����nnmaaaA δδδβββ ||||||| 121 ��→3��� �,���: ������.�/0#�α����H8���: ���%�������
����0�OP<� "3�6��������
��
��
�� ,��=�!" �/�� F0������� "3���
bE
aiEtSeSS
iEtSS
→
→
→
|��
��
�����������������9"����� �,���: ���3��YB��
��
��
!" �/�� F0������� "3� �� ,��=���
��
������(����< ��� �,���: ��� ������ �� �� �� �� ���
��
��
���< ��� �,���: ��@(���������
��2�3�4���56�7$����������)� �������
?"����"7���(!����(�(� �� ,!�����:������� "3�Z��[��:5��
+!��E0�9GE�� �� ,��
+!�����:��!0�H8��:I,3���
+!����.!�������%#��(��H8�3��� �,���: ��5�
��
ε||
|
AadAcA
AbdA
bAaS
′′→′
′→
→
m
n
A
AA
βββ
δδδα
|||
||||
21
21
�
�
→′
′→
bE
eSS
aSiEtSS
→
→′
′→
ε|
|
TabcdmabcdTabcdfabcEA ′→ |||
TdmdTdfEB
BabcA
′→′
′→
|||
TmTfZ
ZdEB
BabcA
′→′
′→′
′→
||
|
w w w
. i t
9 8
. i r
������������������� ���
�"7���(!�\��
+�����!V��(��Y" �����
+!������%�I0��������0�"�B� �D���� ]��
+!������%�I0��������0�"�B����%�:�5�
��
�������� "3�6�������^����B�(!�����I���� �9���
J+��������%�0�*� ���� ���α→A!� ��� ������ "3��<� ���
�����3�����)(αfirsta ∈.�������.!��*α→A�������_�],[ aAM9��������� *�5� ���
���� ,�)(αε first∈ ����3�����.�/0#)(AfollowB ∈��.!��*�.����α→A�_�������],[ bAM9��������� *�5� ���
����� ,�)(αε first∈�(�)($ Afollow∈���_�����.�/0#,$][AM��.!��*�.����ε→A9��������� *���5��
�=�5��
��
��
��
��
��
��
��
��
��
��
�=��5!�������I��^����B�(!�� "3� �� ,��� �5��
��
��
��
��
��
��
��
��
$id)(*+��
E1E1EEE
3E3EE2E ′��
E4E4EET
6E6E56T ′��
E8E7EEF
$ }�� { 0 id = ) ( for ; �
E E 3 E 1 E E E 2 1 S
E E E E 4 E 5 E E 5�� A
E E E E 6 E E E E 7 C
E E E E 8 E E E E�� E
E E E E 9 E E E E�� V
E E E 10 E 11 11 E E 11 X
E E E12 E E E E E�� B
E 14 13 E 13 E E E 13 13 L
idEF
TFT
TFT
ETE
ETE
|)()87
|*)65
)4
|)32
)1
→−
′→′−
′→
′+→′−
′→
ε
ε
}),$,,*{)(
}),$,,{)(
}),$,,{)(
}),${)(
}),${)(
+=
+=′
+=
=′
=
Ffollow
Tfollow
Tfollow
Efollow
Efollow
},({)(
},({)(
},{)(
},({)(
},*{)(
idEfirst
idTfirst
Efirst
idFfirst
Tfirst
=
=
+=′
=
=′
ε
ε
()
()
follow
first
}{;$);););;);{;$
{;{0{;
foridforid
foridididididforid
LBXVECAS
==
εεεε
εε
ε
ε
ε
|}14,13(
}{)12(
|0)11,10(
)9(
)8(
|)7,6(
|)5,4(
|);;(|;)3,2,1(
SLL
LB
VX
idXV
VE
EC
EVA
BSACAforAS
→
→
→
→
→
→
=→
→
w w w
. i t
9 8
. i r
������������������� ��/
�������������2�3��)�0���$��������
+���(�(��:IB���G:0����2�!� ����;��5��
+���!:������� �!� �������!`�����L������:�����! �.�����5�
+��:IB����2�(�������!� ����;�����$����)�
+!:?�����& �����(�(��:���
+�:IB���-��� ���-����(���� �2������� *�5�
�:IB�Q"�&�M���(��"7���(!��3��.��T:�����U����"7�������%��������:<�����������@��0����&�"�B����557$�80�9� �$��!�0���:�0��
:�������������(�(��:�����G:0������!�2����7�0� �� ,�@ � ������� /"������3���� ,����.�(7��������"�������[�.!���%�I0��
�.� ���2� �,������ *��:IB��[������5���(�(����� �!������%�"�B������`��������0��3��"7�������2�������G���:IB����(�2��*��
!����.!0���5��
�(� �� ,�@ � ��%������ *�3��YB�2���(�(���������������� �9� �a �� ,��-�������.!0��[������Q"���(�(�3���:IB�����(�
��:IB��U��� S��!:T���b�T�������&���� "3�6U�<�!������
J+� ,�$== Xa����.!����%�"�B������`��������"7�������!�����
K+� ,�$≠= Xa�-!����X�3��!V�� S��(��������OP<��:IB��U���������.!0��[���(�(�3����
c+�� ,��X�(�!������� ��Q"xa ≠!�!���d����_0���][��
e+�� ,�X�0����@ ��Q"$��� �� �D�)���0 ��!���],[ �_�����aXM�����%������'�<�(�����&"�����! �����V�� ��(!������
f'��)UVWX 6����������.!��*→],[ ��0�[����aXM� S���'�<�&"�������������(�X��:IB�3�����(�.!�UVW(�������%
��:IB���� S����"��L�����������U� �,������ *��:IB��U������5��
>�)],[ ��0�[aXM!�!���d����_0���][�Q"��'�<�&"����������'�[�5��
5����;$�3�(��2���#�*��)�0���$�80�9��!�$0�"�!�8�<�/�3=��
��
��
��
��
��
��
��
��
��
��
��
��
��
���������������������������
��
/*/*$
;,,,
;
],[
/*/*
();
;
$
;
$;
21
111
21
emptyisstackXUntil
errorelse
end
YYYXproductiontheoutput
toponYwithstackthetoonYYYpush
stackthefromXpop
beginthenYYYXaXMif
lnonterminaisXelse
errorelse
ipAdvanceandstackthefromXpop
thenXif
thenorterminalaisXif
ipbytopointedsymboltheandsymbplstacktopthebeXlet
repeat
Wofsymbolfirstthetopointtoipset
k
kk
k
=
→
→=
=
−
�
�
�
α
α
w w w
. i t
9 8
. i r
������������������� ��0
��
����>$#!���2�3�?� ididid *+57$�����@�#3�#�*�0���2�3�4����!���3��!?�A��<B9����=��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
�C6�*$�0.%��
�C6��
J+�:IB��U��!�����:��!0�g��]����V����(�(����(�!�����0�"�B���
K+���_���'(��0�"�B� �D��:IB��U],[ tokenXM�'�[�)(null!����5�
:�0�0��>�<��>�D��C6�EF9$�>$#!�:�0���)1(LL�0$������=��
GModepanic�
Glevelpharse��
��
�h(�����Modepanic����V�� ����� ���B� ,������C���C��!C ����OP<���(�(�3���!`0#�-!�������_0���][�Q"��"7���(!���'�[��0�[�Q"����
�������������@�����������������4���3����"ingsynchorniz���h(�����!� ��Modepanic�� �� ,�����0�"�B� �D� ����3��������C������Q"
ingsynchorniz������:� ,� F0������I��5���h(������� Modepanic�����C������iC����>�Cj:0���C���/:?��7�0ingsynchorniz�������5���&C"�
.!��.��T:���%�0�*����(�(���:IB��
� �$* ididid +����
ETE ′→� �$* ididid +��TE ′$� �
TFT ′→� �$* ididid +��FTE ′′$� �
idF →� �$* ididid +��idTE ′′$� �
� �$* idid+��TE ′′$� �
ε→′T� �$* idid+��E′$� �
ETE ′+→′� �$* idid+��+′TE$� �
� �$* idid��TE′$� �
TFT ′→� �$* idid��FTE ′′$� �
idF →� �$* idid��idTE ′′$� �
� �$* id��TE ′′$� �
TFT ′→′ *� �$* id��*$ FTE ′′� �
��$id��FTE ′′$� �
idF →��$id��idTE ′′$� �
��$��TE ′′$� �
ε→′T��$��E′$� �
ε→′E��$��$� �
w w w
. i t
9 8
. i r
������������������� ��1
���!�����������[��� ������(�(�3�����"3���?*�OP<�%(!��!0��:���"7�������� �����>�j:0������0�,����!"����������5������i����>�j:0��Q"
follow ����������&:� ,� F0����������%�����������0�"�B� �D� ��ingsynchorniz��������0�"�B� �D�%#��5���&:� ,� F0�������(�&"���������C�����
follow����� ���G��ingsynchorniz����?�0���� ��5���� �/��6�������0 ������ :� �OP<�� �&"���� ���� :I����������0�%����������&C"���C������
�������%��������=��-�(7���������first����������7�0��������0�"�B� �Dingsynchorniz�(7����G0#�5��
�C6�*$�0.%�4�� $�5,���2�3��)�0���$��H7�3��
�
�
���
�
��
��
��
��
��
��
��
��
��
��
$);(}
();
();
;
;.
;
}
,,,
;
{
;&&],[
;//
;
}();
;
{
$;
//{
();
;][
$;][
;0
11
≠
=
=
=
≠=
−
=
=
=
=
=++
=++
=
−
Tokenwhile
tokengettoken
else
tokengettoken
else
Xpop
stackinTNsignnotisXif
synchXifelse
YYYpush
Xpop
synchXNULLNoTtokenXMif
terminalnonaisXelse
Xpop
else
tokengettoken
Xpop
tokenXif
XorterminalaisXif
stacktheoftopisXdo
tokengettoken
symbolstarttosstack
tosstack
tos
kk �
w w w
. i t
9 8
. i r
�
��������������������
��
��
��
��
�������������������LL(1)�� ���
��
���������First()���Follow() ���������������������
��
��
��
������������
��
��
��
� !"�����������������������!����LL(1)����#���
�������$��%�����%�&����'��(�����)������������������*+����&����,&�����&�,���������LL(1)�����#���
��
�������� ��������-.���
/0�1���2"���
/34���5�����678
/��������������������������34����,����!���"��
����$�!��������������������������������������LL(1)&���9��:����
��
�LL(1)�� ����������������������������
�,�����LL(1)�0�"�������$�;�<�=�� �,��������>��βα |→A�%������=�������?���%��%�������
��
@/�φαβ =)()( FirstFirst ���
A/�����B���C���8�����%�������D!��������
E/�����ε→α *F����:<���)(αε First∈���Gφβ =)()( AFollowFirst ��%����
��B#�H����nA ααα ||| 21 �→��������;�I#φαααα =)()()()( 321 nFirstFirstFirstFirst �������
��
��C����������������LL(1)�� ����
��
��
��
��������+φ≠= cceAFirstcdAFirst )()( ���
$tieba��
����1����2S��4����3,4����S ′����������5��E��
bE
S
eSS
aS
SiEtSS
→
→′
→′
→
′→
.5
.4
.3
.2
.1
ε
}{)(
,$}{)(
,$}{)(
}{)(
},{)(
},{)(
tEFollow
eSFollow
eSFollow
bEFirst
eSFirst
aiSFirst
=
=′
=
=
=′
=
ε
ceAcdAB
fAbA
BAS
|.5
|.4,3
|.2,1
→
→
→
�����������
w w w
. i t
9 8
. i r
�
��������������������
��
��
�����D!���&��.>��<�!=�����I���������;&���J��%�,&������%��Start Symbol�#��&�������
��
��
K�������������C�����L��M) �����'�#����
abbcde �,&�����D�:#&
��
��
��
��
��
��
��
��
��
K�����,� �>�������L����������9N<��>��� �'�%��OB<��1������
��
!�"#$Phars%�&��>��,���*N��0�"�(������5P�������C���&��#!N#�$�!�<�����%���;���&!�!���#�������Q�(���������'�R��:<�(�
&!%����S!�T�����αβγγα +�� AS*��
!�"#�����$Simple Phars%&������?����&��%���;���&!�!��0�=�(���&�����>������:<�β�>��;&�>�R��:<�(���
αβγγ� α �AS*��
�( )���$Handle%�&��>����N>�&!%������"����U#��&��>��� �'�%��(��OB<��1���&�����>��,��;&�>�R��:<Handle���Q�V� �
&���#�&!����D���������
�I�&�W��.��H�����&���������%������$!#�=�(���>����N>����X:Y���,����%�����;�$�34��N>��#�������Q����) ���(���%������$!#�=���
���X�=&�W��.��H �'�%��K�����>����N>�Z!B.��J��%�&�N#����,&������%��) ���[��������F�>��� �'�%��G�� ��&�������,���D�:#&��%��
��������) ����*8���\�( )�������#�������
��
��C����&����� �;��I�>&�) ���bccdef�����]P5�����������������!������&����
��
���
���������������������98����������bccdef����������D!�� �'�%��K�����>����N>��*�>!�������
��
��
��
c bccdef�
Bcd bBcdef
e bBef
bBCf�bBCf
�S
;��I�>&�) ���
S → aABe
A → Abc \ b
B → d S → aABe → aAde → aAbcde → abbcde��������������
abbcde����������������
aAbcd � �����������
aAde��������������������
aABe������������� ���
S
eC
cBcdB
bBCfS
→
→
→
|
bccdef
bBcdef
bBef
bBCf
S
*������+ ,�-�.���(�!�-��/�0��'�12��3���
w w w
. i t
9 8
. i r
�
��������������������
��
��
&!%����;&�^�>��,&������%��,���1I#��1��,&�����"���(������5��(�����_���K����&��1�#������5��,���`��>����9N<�J��%��&���%��,�
�,&���$�� &������=�������
��
4�!�+,��!�����������!�����5#�&��
��/�0�$shift�&�%�\��'�#���&�� ��!:N>FToken�,� �G��#!%����;&�&����=���5��,L���,&����(������#������handel�� �a���5��,L����&��
&!%���B���>����N>������5��,�����b<������=�������'�#��9N<�����:<��������������&��&!%�X:Y���������K�#�!=�������
��
2��3$Reduce��&�%��&��������������Q�(��$�,��������678�����>��K�#�!=�����B���>����N>����X:Y��������5��,����c��<��<!N��
� &�������=������>���!�7��$!#�=�34��N>����
.��!����"6$Accept&�%�������������������'"!��$������>����������0b<���
�78�� �$Error�&�%�#�!+������"������&����Y+��������;&�&�]�P5��,!T#�,�Y+�(���>��������
���%��`��>����98���������&id+id*id&!%����;��&�����������Z�>��������
��
��
��
��
��
��
��
��&��'�#��`��>����_��/&��&�&!���9B5��J!#��&�) �����
@/�����5��,����c��<�����<!N���0�������&�!��K����&�,������Nd����
�>��X:Y���K�#�!=��>����N>F;��I�>&�S�P�#���&�9B5�G��
A/�&!%�0��#��$��T��) �������#!#�=�S�P�#���)�����=��9B5��K�����
$!#�=�(�����)����>����N>����\�������,����c��<����,���<!N������
�%���X:Y�����5���) ���9+���������D�8�K��4/���!��) ����
��
��
��
��/�0��9: �!�-�!���8����;��0�12��3���
@/��/�0���8���12��3$Shift-Reduce conflict �&%�#�!�#��>�������� &����,����#����� ���0��#�������'�#��9N<����&��I����Nd��
���) ���9N<������
A/�8���2��3�12��3$Reduce-Reduce conflict &%�K����%���;&�^�>��9��=��UTD�(���&�) ���,����;�<�=�(�����)�������
�>��;&�&�e��9B5��J!#�
��
��
9N<
,&������5��
���'�#�idid+id*id$�f�
�) ��idE →��+id*id$�fid�
���'�#�+��+id*id$�fE�
���'�#�id��id*id$�fE+�
�) ��idE →��*id$�fE+id�
���'�#�**id$�fE+E�
���'�#�idid$�fE+E*�
�) ��idE →��$�fE+E* id�
�) ��EEE *→��$�fE+E*E�
�) ��EEE +→��$�fE+E�
Accept$�fE�
(1) E → E + E
(2) E → E * E
(3) E → ( E )
(4) E → id
���� -(�!�-�.���*������+ ,�-�.����-�<,���������������&
w w w
. i t
9 8
. i r
� �
��������������������
��
��
��_���`��>���LR�,� �����!ID��\�%������L������K�����`��>����,� �����!ID����>&�g���LR�#!%�������'����B4!����>&��>����&!+���
���^�����%������$�%�������������+�>��&�$�5��>�����5���1#�,����`��>����_�������D�8��&���
/SLR$Simple LR%
1LALR$Look Ahead LR%
1CLR$Cannonical%
�^������[��=����C���,����,� ��>����&!N#�;&�^�>��`��>����_���K������$�!��������!#����#���,� �$����LR�,���&�4���� ��*c��g�����
/��.��!��(=�,&������%��,�1�#�������&����������=��N�=�K����&�,&������%��\$�&!%�����"�h��LR�$��&����$�,&������%��$�����
� &����]�P5������
/��-�&R�!c������5��,�!�T�mmSXSXS �110�&!%����;&�&�$�5#��iS�RL�8�;�� &�$�5#���iX�,� ��#�������Q���� ��#�����
&��I���0��#��) ���;��I�>&�W5�����O��\&!%��"�����5���&�;��I�>&�(������#!%����9'������5�����,&����,� &�N#�\�>�������
/9: �!�-����0(�&L�8���,&������%��,����&�N#�Z�>�����;��������������#����>��;������������*c���N�=����#���K����,L���R
�������K��.�����,�.���*8��������������,�!�T������5�
/9: �!�-������H��N�=��&�9��%�)P��K��action���goto�>������N�=action�)P����&!%�0��#��������������*N<�goto�
�������]P5�����,�.���D�8
>,?�H�>L���� �>����K������,!T#�,� ��Y+�$b<���<�>���
@ #&�+�>��1���>��&�����*�+���>&�R�:>�T����8�� ��>����K�����������������
��>����W*�P��g���������9B%��&LR�>��;�%�;&�&�$�5#�� �����1#���Y��������
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
�9: �!�-�4�!LR
...$321 aaa
0
1
1
S
X
S
X
S
m
m
m
m
�
�
−
−
��
��
����������#��LR����+
RL�8 gotoAction
��5�w w w
. i t
9 8
. i r
�
��������������������
��
��6�<,$1-item%�,���� LR(0)F�cb+��!i�����*=�G���������G����,�D!��G�Y'#�(�����F�I�&�j�+���b<���G>��&��#�B���&���>����N
����D!��K���������>��$XYZA →�������&���������*=���14����
A� � XYZ
A� X�YZ�
A� XY� Z
A� XYZ� �
����D!�ε→A���R�!c�����*=�(���1����→A�;&�&�$�5#�k�Tc�&�<�l���(������#�!������*=�(��\���N#������D!��������;��Nm%�&�<�K�D���\&!%
����m������m����"�����mY'#�(m���&�\�D!�����,���'���4�������N#����]P5���*=�����#��&�\���N#����]P5������Y'#���.=!��&�<�K���&����D!�
XYZ��������7��X�5����%��$��&���U�#������ ����$�5#� !"��*=�K�D�����C��,�����>��;�%�;��&��������&�,&�����&������*=�K���&����m &��m��$�5#��
������7��X�5����%��,&�����&����+����X�������7��X�5����%��(��$��&���U�#�����&���&����K������>��;�%�;��&YZ�����&�������
��
��5#Closure&���
����I�������,����0b=�����,���<!N���G�;�I#�\�%���Closure(I)����;�%�&�����0b=���<!N���I$!#�=��&����;&�^�>������>��������
@/��&�&!�!���*=�� ��������&I����Closure(I)&!%�����"�h�����
/����βB��α→A��&�Closure(I)����%���&!�!��γ→B�*=�;�I#���%����D!��(�����γ��B���&�b:=�����I�$�����%�:#�
����"�h�&&����������#�!�#�,�I�&�������*=�V� ����&!%������"�����������#�������$!#�=�K��Closure(I)&!%��"�h���
��C�����������������������!���I�����������������������R�!c�����*=�(��,���<!N����;�I#��%��Closure(I)�%�� �!+��n� �0b=���4�9��%���
��
��
��
��
o>�����
��
��
��
��
��
��
��
��������9N<�����R�!c�����>����(���D�8�0�����&��>���1��&!%��>���>����K����D�8�0�����&�����������������
/����S��%���������J��%���b<��0�"����,��;�<�=������SS →′�F$SS →′G�$��&���S ′���������>��������#�������Q�(����
�;&��"�����������9c�8�������\���������"�h�Faugmented grammar�G���!���
/�0�#����,������D�80S��&��������������������������������&�����0S�Op>���;&�&����=�Closure������������K���0S���������"�h��
]}.{[ EE →′
idEF
FFTT
TTEE
EE
|)(
|*
|
→
→
+→
→′
idF
EF
FT
FTT
TE
TEE
EE
.
).(
.
*.
.
.
.
→
→
→
→
→
+→
→′
�(�!�-��,?A�������>8��SLR
�� 0.SS →′w w w
. i t
9 8
. i r
�
�������������������
/������D�8��&��*���!i�����iS���0�"�����n� ������
{
{��
��
�
→
→
nnn xA
xA
βα
βα
.
. 111
������%�����%�&�F���$��&���x����%����#�������Q�������#������#�!������G�����&
���0�#����,������D�8�R�!c�K����&jS���\;&���&�����iS���,���:D�?>!��������[�4�������x������jS���Km����m����� !m"����������������9'����
�����b<��N ��&�������q������b<�����.����x�� &�������=�������.�h���&���>��;�%�9'��������:>�T������ ������K���������Op>���
����&jS����� &�������=�����8�0�����&��&��B#��4���#�����DkS�X��Y���'�=&�����%�����%�&�&!���jS��R�!c�K����&��%���jS�;�5#�&�����
���r!<��&��iS���[�4������,���:D�?>!��x������kS�����'#����0�=�K���\&&������9d������0����m�&����,������D�8��I�&���������������B�
&!5#��"�h��
��C���������>����������������D�8�0�����&���
)(ET
idT
TE
TEE
→
→
→
+→
����
�(������0�=��&�Start Symbol���#���$ES →�������D�8������������"�h��������������0S&���&������������m�����;�%���^��98������;
����������
)(ET
idT
TE
TEE
ES
→
→
→
+→
→
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
�
S�E$ ��
E�E+T
E�T ���
T�id���
T�(E) ��
S� E $�
E� E+T���
E� T
T� id
T� (E)��
E�E+T
E�T �� ��
T�id � ��
T�(E)���
S� E$
E� E+ T �
�T�id ��
T�(E) ��
E� E+ T
T� (E)��
E�E+T T� (E) �� �
E��
T��
id
�
�
0S
1S
�
2S
�
3S
4S
�
5S
6S
7S
�4S
�id3S
T2S
�
E
T8S
id3S
�4S
�
9S
6S
)
w w w
. i t
9 8
. i r
���������������������
��
��
����������� �� ������������������������������������
idF
EF
T
TFT
TFT
E
ETE
ETE
→
→
→′
′→′
′→
→′
′+→′
′→
)6
)()7
)6
*)5
)4
)3
)2
)1
ε
ε
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��������
3S
7S
8S
9S
4S
�3S
E
10S
�
2S
�5S
�
4S
�
3S
���
5S
�12S
�
���
4S
�
Id
5S
�
13S
�
11S
�
S��E ��
E�� T E′
T��F T′ ��
F�� (E)���
F��id �����
S� E�
E� T � E′ �
E′ ��+T� E′ �
� E′ ��� �������
T� F� T′
T′ �� TF* ′
T′ ���
F� (�E)��
E�� T E′
T��F T′ ��
F�� (E)���
T��id �����
F�id� �����
E� T E′ �
E′ �+�T E′
T��F T′
F�� (E)
F��id
T� F T′ �
T′ � TF*. ′ �
F�� (E) �� �
F��id � ��
F� (E�)�
T′ � TF* . ′ �
T′ �� TF* ′
T′ ���
F� (E)��
0S
1S
�2S
�
4S
�
5S
�
E��T��
F
�Id
�
���
���
T��
����
Id��
F
E′��
T′��
F
T
Id
6S
F��
E′ �+T� E′ ��
� E′ ��+T E′ ��
E′ ��� ����
E′��E′ �+T E′ �
14S
�
�7S
T′�� T′ � .TF* ′
��� 9S
15S
�
w w w
. i t
9 8
. i r
���������������������
����������� �� ��������������������������������������
��
idF)6
)E(F)5
FT)4
F*TT)3
TE)2
TEE)1
EE
→
→
→
→
→
+→
→′
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��� ��������SLR���
������State������ ��������������
������ !�"����#$�%action&��������'�(�)*������������� �
�� !�"����#$�����%goto�&������������� ���������'��+�
��
��
w w w
. i t
9 8
. i r
���������������������
��
�������� �������action���goto������� ���!��"�#�$%�����
����a������� �����,�-������'�.�iS�������-�a��/�0-�0jS� ������-�]a,i[action�������� ��!�jS��
����� �iS1� #$�������'�"����0-��.A α→�02#�3��"�42�����'�"����0-�()A(Follow%�5�� b�&� �]b,i[action��������� ��!�
nR�06� #7�0-�n� #$���8 ��,�.A α→����
������ �����iS #$���.SS →′ ���,�-�0$,��� ��!�,$]i[action�����9�accept�� ��!��������
�:;-�<��6'�"��-goto������9����������06��=iS������'���+�.���-�%�5��A�&�����0-jS��� ���� ��]A,i[goto���������� ��!j�
��
��
����������� �� �<>!�0?@A���������0�B3'����C����
��
),$},{*,)F(Follow
),$},{*,)T(Follow
),$},{)E(Follow
+=
+=
+=
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
�����"��&�'(�)��'����*��+���� ��,SLR������� ��-�����"��.�� /��
�����������52���$-�$��������09�D��0$�E�0-�0������������������09�D��"�� ��0$, �"�F$���0-�� ����
GH�'0�1��2����nS]a,i[action =�"�� ���������$-��8��0�B3'�0����-�(�a�IJ����nK�-�0-�� ��6���<L$��0$�E�"���
MH3�'�2�����nR]a,i[action =�������8�,��9���8��N$���.���,�-���������-���:����,�-�0�n������#'�8�2�!�8 ��,�β→A���0O����-�(�,�-�
���0��>���8��0�B3'β������IE��������PQ��0$�E�"K�-����� ����PQ��β�0$�E�"K�-����������m���$-�8��0�B3'�0����-��,�-�A�(IJ����
� ���#C#����2]A,m[gotoPQ��"��-�0�����R���0$6��(�����09�D��0$�E�"K�-�0-�� �|| β������OS'�0O-�0$�OE�"K�-����|| β2���"K�O-���
0$�E����PQ��� ����#C�B��������8 ��,�.��0$�E� ����������R�-�����������
TH4�562����accept]a,i[action =����8�,���3�����L9#���-�"�� ��0$, �0�B3'��,�-�
UH'782����error]a,i[action =����8�,���-� ���L9#����2��-�"�� ��0$, �0�B3'��,�-���
gotoAction��
FTE$)(��*+id
321����4S�������5S��0S��
������Accept������6S����
1S��
������2R��2R����7S
2R����2S��
������4R��4R����
4R��4R����3S��
328����4S������
5S��4S��
��6R��6R����
6R��6R�����5S��39������
4S������5S��6S��
10��������4S������
5S��7S��
��������11S������
6S����8S��
������1R��1R����
7S��1R����9S��
������3R��3R����
3R��3R����10S��
������5R��5R����
5R��5R����11S��
w w w
. i t
9 8
. i r
���������������������
�'9 /�0�B3'����C����8��@$����-���� ��0$,id*id+id���0�B3'�� ���
��
������������
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
!�0?@A�1�?�D#'�0-�0C#'��-�,#��<6,�R���0-�� �0$, �.��0�B3'��$� #N�����#'����<>���
0$6��V�"���������SLR�8�N�W��,�-�LALR���CLR� ��B������
����
��
��
��
��
��
gotoAction��
FTE$)(��*+id
321����4S�������5S��0S��
������Accept������6S����
1S��
������2R��2R����7S
2R����2S��
������4R��4R����
4R��4R����3S��
328����4S������
5S��4S��
��6R��6R����
6R��6R�����5S��
39������4S������
5S��6S��
10��������4S������
5S��7S��
��������11S������
6S����8S��
������1R��1R����
7S��1R����9S��
������3R��3R����
3R��3R����10S��
������5R��5R����
5R��5R����11S��
�C��/��"�� ��0$, ��0$�E
Shift5 id*id+id$0
idF →��*id+id$��0id5
FT →��*id+id$��0F3
Shift7��*id+id$��0T2
Shift5��id+id$��0T2*7��
idF →��+id$��0T2*7id5��
F*TT →��+id$��10F7*2T0
TE →��+id$��0T2
Shift6��+id$��0E1
Shift5��id$��0E1+6��
idF →��$��0E1+6id5
FT →��$��0E1+6F3
TEE +→��$��0E1+6T9��
Accept$��0E1
idF)6
)E(F)5
FT)4
F*TT)3
TE)2
TEE)1
EE
→
→
→
→
→
+→
→′
� ��������SLR� ���� ���������id*id+id
end//}
();error
else
return
Then)Accept]x,s(action[IFelse
})A,S(goto(Push
);A(Push
();pop
)||2to0i(For
)A:R]x,S[action(IFelse
();Tokennextx
);S(Push
);x(Push
)S]x,S[action(IF
){EOF(!while
i
i
j
ji
=
α=
α→=
=
=
w w w
. i t
9 8
. i r
�
��������������������
��
��
������������ ��� ������ �������������LR����
�������������������� ���������������������������� ��� ������������ ����!"�#$��"�%&�'�("���)� "� *�������������+����,��"�-��"�����-��.��-
������������������������/01���������� ���2��)��3������������-�!4�)�/5���� +����+������-��)�/5��������$.����!"��2��� �6�� ��"��%����+����� ��+7��
*� "� *� ��'�("�2�!"������/5����/�8"��"�������!"�9)��������:��3�����;�-�����;��<���=����%��
��� "� *�>�?�"� �2��2�-��� �
)E(|idF
F|F*TT
T|TEE
→
→
+→
��� "� *�����@�� �A�� B;�-��-��#� *��� *�'�-� C���&�������$D�3�#State�&�'�)��5�!"���3�-�����;
���������-��������������7E0)���'�7��'�-�$�����"C� ���-�����-� "� *�������2�'�("��� *��$D�3���=�����)�/5����!�- �������� ��#���9)�+����
��F���&'��� G�%��
idE
)E(E
E*EE
EEE
→
→
→
+→
�����
��
�� *���'�-�H��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��� *����������������3'�)�!"�/��8���-�������������=���IJ�-���2�'�-%��
��
��
��������������
E′ ��E
E��E+E
E��E*E
E��(E)
E��id
E′ �E�
E�E�+E
E�E�*E
0S1S
�
E� (�E)
E��E+E
E��E*E
E��(E)
E��id
E��
���
Id��
2S
�
E�id�
3S
E�E+�E
E��E+E
E��E*E
E��(E)
E��id
E� (E) ��
E�E*�E
E��E+E
E��E*E
E��(E)
E��id
+��
���
4S
�
5S
�
E� (E�)
E�E�+E
E�E�*E
Id��
���2S
�3S
E�� 6S
E�E+E�
E�E�+E
E�E�*E
7SE��
���2S
�Id��3S
E�E*E�
E�E�+E
E�E�*E
���2S
�3SId��
8S
)�� 9S
+��4S
���� 5S
�
E��
+��4S
���� 5S
�
+��4S
���� 5S
�
w w w
. i t
9 8
. i r
�
��������������������
/(<��IJ��� *�������������%��
)},*,{$,)E(Follow +=��
��
��
��
��
��
��
��
��
��
��
���/5�����;�5�-����-�����2�!"��B3K"shift/Reduce���$������L-���%���/+3�$������2�!"�������'�("� "� *����$1 �� ��;�$�����$��
�2�!"��������)� AM01�$��D�����/5���%��
��
������CLRH���
��
�����LR(1)�H��'����N�LR(1)N�����/�8�"�,� "�O���N���C'���LR(0);������1�0�"�N����!7���9����1�0�"���;�����#Lookahead�&���@$��
���:-�J������0="]LA,A[ .α→����1�0�"���!7���9����1�0�"�-�"�-� ����P��-��2�!"����9��0;�Follow�������$��-�$0���;����� �Q�C���'�+�
-�������)�%)A(FollowLA ⊆��
�������������� �� ��$����������R�?��CLR����$D�3��� *���'�7��'�-��-� C�$D�3��� *���$.����!"������CLR����7;�"�SLR�����$���C���>� +2�'��
>→′< {$},SS .�2���!"��
���-��.��S�����(��I"�'��-�AD����-�"�-����C�����)�'��LR(0)���-��.����F���'��-�AD����(2�-��.����2����R�?���C�����)�'��LR(1)������:�����������$���
��-�0;����=��!7���9����1�0�"�@�;�2�!"��F�?��-��.���1�0�"������������������.)� �Q���)�'��C��� �� ���:-�J��������������%��
)a(Firstb|}]b{,B[
}]a{,BA[
..
β∈δ→
βα→��
��T"�%�$D�3��� *��CLR��7��'�-��-� ��� "� *�%��
��
��
��
��
��
��
$�����2�'�-��� *����=���IJ%��
��
��
goto�action�state�E�$�)�(�*�+�id�1���
2S ���3S �0
�acc����5S �4S �1�
6���2S ���
3S �2�
�4R �4R ��
4R �4R ��3�
7���2S ���
3S �4�
8���2S ���
3S �5�
��9S ��
5S �4S ��6�
�1R �1R ��5S , 1R �4S , 1R ��7�
�2R �2R ��5S , 2R �4S , 2R ��8�
�3R �3R ��
3R �3R �9�
idF)5
FT)4
T*FT)3
TE)2
ETE)1
EE
→
→
→
→
+→
→′
w w w
. i t
9 8
. i r
�
��������������������
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
!"#���$%�&�'���CLR(1)H���
�������������U�-CLR(1)���$���!2�-���(2�-��.���������P��-�-����SLR(1)���$=�?��-��������-� *�����:�����������@�� *� ����I���� +F��+��!0��C�
}]b{,A[ .α→�����)��;�5�-�@'�2�����2��]b,i[action���-����α→AduceRe���!"�-� <�)���������+�����������������-� A��:-�(1����@'�
��1�0�"Follow�'�7��!"���������2�!7���9����1�0�"�����)�%��
��
��T"�%��7��/�0���!M(<���T"��� *����� ���-�����������%��
��
��
����
��
��
��
��
��
��
��
��
��
��
gotoactionstate
FTE$*+id��
321������4S��0S��
������ac������1S��
������2R����
5S����2S��
������4R��6S��4R����
3S��
������5R��5R��5R����
4S��
327������4S��5S��
38��������4S��6S��
������1R��������
7S��
������3R����
3R����8S��
E′ �� E , {$}
E �� T+E , {$}
E �� T , {$}
T �� F*T , {+,$}
T �� F , {+,$}
F ��id {*,+,$}
E�� E′ � E� , {$}
8S��
0S�� 1S��
E � T�+E , {$}
E � T� , {$}
2S��
T��
T � F�*T , {+,$}
T � F� , {+,$} F��
3S��
F �id� {*,+,$}
id
4S��
E � T+�E , {$}
E �� T+E , {$}
E �� T , {$}
T �� F*T , {+,$}
T �� F , {+,$}
F ��id {*,+,$}
+��
5S��
T � F*�T , {+,$}
T �� F*T , {+,$}
T �� F , {+,$}
F ��id {*,+,$}
*��
6S��
E��E � T+E� , {$}
7S��
T��
F��
id
2S��
3S��
4S��
T � F*T� , {+,$} T��
F��3S��
id4S��
w w w
. i t
9 8
. i r
�
�������������������
��T"�%�$D�3��� *��CLR��7��'�-��-� ��� "� *�%��
dC)3
cCC)2
CCS)1
SS
→
→
→
→′
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��2�'�-��� *�������������%��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
gotoactionstate��CS$dc��
2��1����4S��3S��0S��
��ac������1S��
5����7S��6S��2S��
8����4S��3S��3S��
������3R��3R��4S��
����1R������
5S��
9����7S��6S��6S��
����3R������
7S��
������2R��2R��8S��
����2R������
9S��
{$},SS .→′
S�� CC {$}
C�� cC ,{c,d}
C�� d , {c,d}
{$},SS .→′
0S��
S S� C�C {$}
C�� cC ,{$}
C�� d , {$}
C�� 2S��
C�c� C ,{c,d}
C�� cC ,{c,d}
C�� d , {c,d}
c 3S��
C� d� , {c,d}
d4S��
S� CC� {$}
C
5S��
C� c�C ,{$}
C�� cC ,{$}
C�� d , {$}
c 6S��
C� d� , {$} 7S��
d��
C�c C� ,{c,d} C�� 8S��
cd
3S��4S��
cd
6S��7S��
C�� C� cC� ,{$}
9S��
1S
w w w
. i t
9 8
. i r
� ��������������������
������&�'����(����������LALRH���
��� *���'�-��� �LALR��� *���������@����� "� *�N��CLR ��'�-��-� "� *��%���-����VG���� *��CLR��� *��� ���/01������;����LALR �
��C�!"�$���%��
����� *���-������CLR�����)�'��C�9W�����'� *�!"�!4�)�$=�?����(;����LR(0)���;C�#��������.)��3KPJ�� C������Core���!+"�$=�+?��N+�����+7��*�&
��2��� �.���%�����!"���Q���;-��!;�.�����.)�����-�!4�)�$=�?���� *���-�VG����!7���9����1�0�"���'�7C����+�� +�B;��+�� �B;��-��)�$=�?��������)�'��
'�7��!"���Q��')��
��T"%��� *��������������CLR��IJ�39��� *���@�LALR��7��'�-��-��X�� "��%��
��X�� "��� *���-�����2�!"��B3K"3S����6S�@4S����7S���8S����9S�7�.)���Q��/��<�#�;-�� �.�����.)&��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
���� "� *� *�CLR���-���"���)�$=�?����Q�����V�����2���������������-�LALR�$+F *�����;� ����!"�����;������!M5������;� "� *���� +"� *��+��
LALR�$����%���� "� *� *����3CLR���������LALR��������������-���Q�����V��@�2�(;�LALR���9)���>�;�/5���� "� *�Y���@ ���)��5��� ��9)��
������-���Q�� Z��-���AE�)LALR��[�;��>�;�/5����\�"C��)��W;������9)��� "� *���;C� A"�CLR����+=P<�:-�+J��+���-�����2�����(;�')�
LALR$�����2��������;���Q�����/(<��=P<�/5����@!�D�3���7��-�!�-�(1����@$.�;�')��%����+��������+���+�����+[� XLALR����� *�+����-����
�����������U�-��7;�0)��7�1���2���Q�CLR$����%�������������;�0;�N�� ��71���LALR����)��5� ���:-�J����/(<���T"��%��
��
��
��
��
��
��
��
��
��
gotoactionstate
CS$dc
217,4S6,3S0
����acc����1
5����7,4S��6,3S��2
89����7,4S��6,3S��36
����3R��3R��3R��47
����1R������5
����2R��2R��2R��89
{$},SS .→′
S�� CC {$}
C�� cC ,{c,d}
C�� d , {c,d}
{$},SS .→′
0S��
S S� C�C {$}
C�� cC ,{$}
C�� d , {$}
C�� 2S��
c
C� d� , {c,d,$}
d7,4S��
S� CC� {$}
C
5S��
C� c�C ,{$,c,d}
C�� cC ,{ $,c,d }
C�� d , {$,c,d }
c
6,3S��
d��
C�c C� ,{c,d,$} C��
9,8S��d
6,3S��7,4S��
1S
c
7,4S��
w w w
. i t
9 8
. i r
� ��������������������
�����������������)�$=�?����=�SLR�����LALR�������[�<�� "� *� )�.����+��������+����)�$=�?����=�����D�$��� �CLR����,+�� "��+���+) "� *
�*-��������������SLR�����LALR�$����%���U�-�!4���,�1���7�LALR������$(.;�CLR��� +� ���-�+<�$+����+�0"��-���I;���)��P5����$�������
��7��]8��%���N��^�)���(D�������)��W;���[�;���-�(;��/5������-� C�_MQ������N����� ���-����V��U�-�����������%���-CLR���N+���+�� ���-����V��
���-�"�-����D�@�2��)��W;����;����;�9)���/01�!�3� A��@�P5�����SLR�����LALR���!F�+?��9)�+��/+01��+7���� ������V���P5�$�����0"�
�2�]8�%�`�.3��������CLR�� �=� ��$�%��
� "� *� *�CLR� "� *����$F *�����;� ����!"���C��2���LALRa$�����
������������-�� ��� �5LALR�/5����$�����0"�r-r'�2�����2��%��
�� "� *� *�SLR� "� *� C��2���CLR�')���LALR$�����
!*��E�����$1 ���.��["���
��
��
��
�)��*+ � !�%�Type checking��
��
���$,�-�$.��/���� ��� �"��-�/�MI��/01�8�"����;��!��7="%�b F���T"� ��71�����)�-� <�� �������������-��-�!J�5�$"K1������ M��G"��
����-C���7�cd'�-�� ���e(X��"�; ��-������ ��]� =��!�����������Int A[10]; A[i]=5
�-��["���7���-i� �"��-��-��["�����7��fW8"�����)��"�-� <��-�!�"K1� M��G"����������-��8�"�fW8"�� ��i�-�3�8�"����=��� �������
������-�$.��/���
c\��;�*� ��� �.��(Type checking)�H�-C�'�-��;������g�"�����-���'�7��S0�� ���%�;�M01�������) AM01�72�����2�� �.���%��
h\����;� ��� �.��#���;� ����3��H& ��]� =��������-���;�N�� ����0;��
i\� �� ��� �7��H�-�KT"swich�-�case������ Break�)��"�L-��P5��; *��'�2�����2���
j\���-�����)-��5���!�- ��H� ����-�KT"Ada�k�lW"���;�N���[M3� )�-���5��� ���
��
��For1(……)
For2(………..)
End for2
End for1
��
&�0 ���
� *�a���)�V��;�������=��N�����-C�>�;���� ��g�"�N��c���cd���I����I"����O-�5���P5��2���R�IJ��1�N�(sub scrip out of vong)�-����
�:�-���B:=A[i]��mI=11�-������"�����-�!M��$D�3�-a$���]8��/��<�����"�; �����_������!;��
c\����� ��� �"�/"�1�'�.���_��
h\��-������77��������_����/��G"��� �"�
i\!��7="���77��������_����/��G"��� �"�
j\n�F�:�-�������3��"�; ���5�_����� ��� �"�
`����H��7��*4� *��@$���$�-�]11[A:B =��2�!"�]8��!"��"� *�/�MI��_����/��G"����M3 "�-��P5���A;C����
������ ������CLR
LALR
SLR
w w w
. i t
9 8
. i r
�
�������������������
��#���9����;�8�"�fW8"�/��G"��� �"��-��)���;�� �%��
�&�$�a$���R�IJ�/��["�>�;� "� *�k�l5�-��)��7��*����N��������
��
c&� "� *LL(1)$.�;�@�SLR(1)��')$.�;��
h�&� "� *LL(1)�!D��$.�;�SLR(1)$.)���
i�&� "� *LL(1)���SLR(1)$�����
j�&� "� *LL(1)!D��$.)�SLR(1)$.�;���
`����%��7��*1���$�-�$��
��
��
��
��
�o7��-�������LL(1)�2��)��5� ���/�2����%��
��
��
��
��
��
����� "� *�V�LL(1)�K"�'�7��'�-��-� "� *�������������������� *��� *��@�$.�;�����2�!"��B3@�SLR(1)��')$.�;��
&�0 ��������+���+����+���� �������.��7���-�X��-� "� *�����7��fW8"��-�/�8"�$.�;�,��7"���77���A8���������������� �-���N���� �� ��� "� *�
����������������� "� *��� ���=������7��fW8"���77���A8��LL(1)����.���-�%��
��
��
��
!�8*����� "� *� *����C��2�����2��p��LL(1)a�;����$.)���
��� �� ��� �5LL(1)��p��!�8*�������2�(;�'�("������ ����%%�2�����2��;��
��#�1�-��$��-�!�8*������2���01�� C���-�p��� �*-����F����2�(;�'�("�� "� *� *���LL(1)��2�����2��$��-�!�8*����� "� *� *����$���
$�����0"LL(1)�����2����2�(;��
���;�H "� *� *�CLR��0�3��2�(;�LALR$.�;���;���
��
��
��
��
��
��
������
��2���eF�"��
CAS��
},c{ �},b{ �{a}First
{b}{c,b}�{$}Follow
$cba��
������1S
��32/3��A
��44��C
λ→−
λ→−
→
|cCC)43
|bA)32
aACbS)1
bc|bbcQ
Rbc|Caba|abaR
Qba|RaL
→
→
→
w w w
. i t
9 8
. i r