Compilers principles, techniques and Tools · 2018. 3. 15. · ’ ˇ& 1 & 8= ˇd1 Sˇ$%34 7ˇ $˙...

Post on 26-Mar-2021

2 views 0 download

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