рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛
рд╢реБрдн рджреЛрдкрд╣рд░
рдпрд╣ рд▓реЗрдЦ рдХрд╛ рдЕрдкрдирд╛ рдПрд▓рдПрдПрд▓рдЖрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЬрдирд░реЗрдЯрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджреВрд╕рд░рд╛ рднрд╛рдЧ рд╣реИред рдЗрд╕ рднрд╛рдЧ рдореЗрдВ рдореИрдВ рдЖрджрд┐рдо рдЕрдкрд╕реНрдЯреНрд░реАрдо рдкрд╛рд░реНрд╕рд░реЛрдВ рд╕реЗ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ, рдпрджреНрдпрдкрд┐ рдмрд╣реБрдд рдирдП рдирд╣реАрдВ, рдПрд▓рдПрдПрд▓рдЖрд░ рдкрд╛рд░реНрд╕рд░реНрд╕ рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред рдЬрд┐рди рд▓реЛрдЧреЛрдВ рдиреЗ рдкрд╣рд▓рд╛ рд▓реЗрдЦ (рдиреАрдЪреЗ рд▓рд┐рдВрдХ) рдирд╣реАрдВ рдкрдврд╝рд╛ рд╣реИ, рдореИрдВ рдЖрдкрдХреЛ рдЕрдВрддрд┐рдо рдЕрдиреБрднрд╛рдЧ рдХреЗ рдХрдо рд╕реЗ рдХрдо рдкрд╣рд▓реЗ рдЖрдзреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдкрдврд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рдореИрдВ рдЗрд╕ рдЫреЛрдЯреЗ рд╕реЗ рдХреЛрдб рдХрд╛ рдХрдИ рдмрд╛рд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд░реВрдВрдЧрд╛ред
рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ, рдХрдИ рд▓реЛрдЧ рдореЗрд░реЗ рд╕рдВрдХрд▓рдХ рдХреЛ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдореЗрд░реЗ рдЗрд░рд╛рджреЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рдереЗред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЗрд╕ рдкреНрд░рд╢реНрди рдХреЗ рдЙрддреНрддрд░ рдирд╣реАрдВ рдорд┐рд▓реЗрдВрдЧреЗред рдореБрдЭреЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╢реБрд░реВ рдореЗрдВ рдореИрдВрдиреЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдереА, рд▓реЗрдХрд┐рди рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЗ рдФрдЪрд┐рддреНрдп рдХреЗ рд╕рд╛рде рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдПрдХ рдЬрдирд░реЗрдЯрд░ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдерд╛, рдФрд░ рдореИрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдпрд╣реА рд╣реИ, рд╡реЙрд▓реНрдпреВрдо рдмрд╣реБрдд рд╕рднреНрдп рд╣реИ: рдХрдИ рд╕реНрдХреНрд░реАрдиред рд▓реЗрдХрд┐рди рдлрд┐рд░ рдореИрдВрдиреЗ рдПрдХ рд▓реЛрдХрд▓реБрднрд╛рд╡рди рднрд╛рд╖рд╛ рдореЗрдВ рдореВрд▓ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рд▓реЗрдЦ рддреАрди рднрд╛рдЧреЛрдВ рдореЗрдВ рдмрдврд╝ рдЧрдпрд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЗ рддрд░реНрдХ рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рдореИрдВ рдкрд╣рд▓реЗ рдПрд▓рдЖрд░ / рдПрд╕рдПрд▓рдЖрд░ / рдПрд▓рдПрдПрд▓рдЖрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛, рдФрд░ рдХрд▓ рдореИрдВ рдЕрдВрддрд┐рдо рдкреНрд░рдХрд╛рд╢рди рдХрд░реВрдВрдЧрд╛, рдФрд░, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣рд┐рд╕реНрд╕рд╛ред
рд╡рд┐рдХрд╛рд╕ рдХреНрдпреЛрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИ?
рдпрджрд┐ рдЖрдк рдкрд┐рдЫрд▓реЗ рднрд╛рдЧ рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЖрджрд┐рдо рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреА рдЧрдгрдирд╛ O (n) рдХреЗ рд░реВрдк рдореЗрдВ рдХреА рдЬрд╛рддреА рд╣реИ, рдЬрд╣рд╛рдБ n рдЗрдирдкреБрдЯ рд╡рд░реНрдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред рдореИрдВ рддреБрд░рдВрдд рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд┐рд╢рд╛рди рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рдЫрдБрдЯрд╛рдИ рдХреЗ рд▓рд┐рдП, рдЬрдЯрд┐рд▓рддрд╛ рд╣реЗ (n * log (n)) рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рдХрдерди рдХрд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ? рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдПрди рдСрдкрд░реЗрд╢рди рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдХрдо рд╕реЗ рдХрдо рд╕реА * рдПрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬрд╣рд╛рдВ рд╕реА рдПрдХ рд╕реНрдерд┐рд░ рд╣реИред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдерд┐рд░рд╛рдВрдХ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИ - рд╕рднреА рдирд┐рдпрдореЛрдВ рдХреА рд▓рдВрдмрд╛рдИ рдХрд╛ рдпреЛрдЧ, рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ 100, 1000, рдФрд░ 10000 рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЕрд░реНрдерд╛рддреН, 10 рд╡рд░реНрдгреЛрдВ рдХреА рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рд▓рд╛рдЦ рдСрдкрд░реЗрд╢рдиреЛрдВ рдХрд╛ рдЦрд░реНрдЪ рдЙрдард╛рдПрдВрдЧреЗред рд▓реЗрдХрд┐рди рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╣реБрдд рдЦрд░рд╛рдм рд╣реИред
рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рд╕реНрд╡рдпрдВ рдкрд╛рд░реНрд╕рд░ рдХреЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореВрд▓ рд╡рд┐рдЪрд╛рд░ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдФрд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЯрд░реНрдорд┐рдирд▓ рдХреЗ рдирд┐рдпрдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдирд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рдкреНрд░рддреАрдХ, рдкрд┐рдЫрд▓реЗ рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░, рдПрдХ рдХрдирд╡рд▓реНрд╢рди (рдЕрдВрддрд┐рдо K рд╡рд░реНрдгреЛрдВ рдХреА рдЬрдЧрд╣, рдЬрд┐рд╕рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЧреИрд░-рдЯрд░реНрдорд┐рдирд▓ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдПрдХ рдЧреИрд░-рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ) рдФрд░ рдЬрд┐рд╕рдореЗрдВ - рд╕реНрдерд╛рдирд╛рдВрддрд░рдг, рдЕрд░реНрдерд╛рддреН, рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рдЗрд╕ рдЯрд░реНрдорд┐рдирд▓ рдиреЗ рдЕрдкрдирд╛ рд╕реНрдерд╛рди рдХрд╣рд╛рдВ рд▓рд┐рдпрд╛ рд╣реИред рдореЛрдЯреЗ рддреМрд░ рдкрд░, рдЕрдЧрд░ рдирд┐рдпрдо A = 012 рдФрд░ B = 021 рд╣реИрдВ, рддреЛ рд▓рд╛рдЗрди 01 рдирд┐рдпрдо A рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реЗ-рдУрд╡рд░ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рдПрдЧрд╛, рдирд┐рдпрдо B рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХ рд▓реЗ-рдУрд╡рд░ рдХреЗ рд▓рд┐рдП 02 рдФрд░ рдирд┐рдпрдо A рдХреЗ рдЕрдиреБрд╕рд╛рд░ 012 рдПрдХ рд╕рдЬрд╛ рдХреЗ рд▓рд┐рдПред рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдкреВрд░реНрд╡реЛрдХреНрдд рдирд┐рд░рдВрддрд░ C рдХреЛ 1 рдХреЗ рдХрд░реАрдм рд▓рд╛рдПрдЧрд╛ред рдпрд╣ рджреЗрдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рдпрд╣ рдпреЛрдЬрдирд╛ рдПрдлрдПрд╕рдПрдо (рд░рд╛рдЬреНрдп рдорд╢реАрдиреЛрдВ) рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдлрд┐рдЯ рдмреИрдарддреА рд╣реИред рд╕рд░рд▓ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрд╣ рдПрдХ рджреЛ-рдЖрдпрд╛рдореА рддрд╛рд▓рд┐рдХрд╛ рд╣реИ, рдЬреЛ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рддреАрдХ рджреНрд╡рд╛рд░рд╛ рдирдпрд╛ рд░рд╛рдЬреНрдп рдирдВрдмрд░ рджреЗрддреА рд╣реИред рдФрд░ рдЗрд╕рд▓рд┐рдП рдЬрдм рддрдХ рд╣рдо рдЕрдВрддрд┐рдо рд╕реНрдерд┐рддрд┐ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рдЬрд╛рддреЗред
FSM рдмрддрд╛рддрд╛ рд╣реИ
рдареАрдХ рд╣реИ, рдЕрдЪреНрдЫрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рдирд┐рдпрдореЛрдВ рдореЗрдВ рдЪрд░рд┐рддреНрд░ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП - рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдП рдФрд░ рдмреА рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдкрдврд╝реЗ рдЧрдП рд╡рд░реНрдг 0, 1 рдХреЗ рд╕рд╛рде, рд░рд╛рдЬреНрдп рдХреЛ "рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдП рдХреЗ 3 рдирд┐рдпрдореЛрдВ рдХреЗ рдкрд╣рд▓реЗ 2 рдЕрдХреНрд╖рд░" рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рдирд┐рдпрдо C = 013 рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рд░рд╛рдЬреНрдп рдХрдо рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реЛрдЧрд╛: "рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 3 рдП рдпрд╛ рд╕реА" рдХреЗ рдкрд╣рд▓реЗ 2 рдЕрдХреНрд╖рд░ рдкрдврд╝ рдЪреБрдХреЗ рд╣реИрдВред рдФрд░ рдлрд┐рд░ рд╕рдм рдХреБрдЫ рдЕрдЧрд▓реЗ рдЪрд░рд┐рддреНрд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧрд╛ - 2 рдпрд╛ 3. рдпрджрд┐ 2 рдЖрддрд╛ рд╣реИ, рддреЛ рд░рд╛рдЬреНрдп рдкрд░ рдЬрд╛рдПрдВ "рд╣рдо 3 рдП рд╕реЗ 3 рд╡рд░реНрдг рдкрдврд╝рддреЗ рд╣реИрдВ" рдФрд░ рдлрд┐рд░ рд╣рдо рдПрдХ рдХрдиреНрд╡реЛрдХреЗрд╢рди рдХрд╛ рдЖрдпреЛрдЬрди рдХрд░реЗрдВрдЧреЗ - 012 рдХреЛ рдЪрд░рд┐рддреНрд░ рдП рдореЗрдВ 3 рдФрд░ рд╕реА рдХреЗ рд▓рд┐рдП рдХреНрд░рдорд╢рдГ - рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдмрджрд▓ рджреЗрдВрдЧреЗред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдореЗрдВ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХрд╣рд╛рдВ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдХрдм рдмрдВрдж рдХрд░рдирд╛ рд╣реИред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╢реБрд░реБрдЖрдд "рд╣рдо 3x рдП рдпрд╛ рдмреА рдпрд╛ рд╕реА рд╕реЗ 0 рд╡рд░реНрдг рдкрдврд╝рддреЗ рд╣реИрдВ"ред рд╕рдорд╛рдкреНрддрд┐ рднреА рд╕реНрдкрд╖реНрдЯ рд╣реИ - рдП / рдмреА / рд╕реА рдХреЗ рд▓рд┐рдП 3 рд╕рдВрднрд╡ "3 рдХрд╛ 3" рд░рд╛рдЬреНрдпред рдпрд╣реА рд╣реИ, рдЬрдм рдПрдХ рдирд┐рдпрдо рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХ рд╕рдЬрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рд╣рдо рд░реЛрдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдЧрд░ рдпрд╣ рдПрдХ рдЖрджрд┐рдо рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рдЬрдЯрд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ, рдФрд░ рд╕рдм рдХреБрдЫ рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИред
A = 0 A | 1
рдРрд╕рд╛ рд╡реНрдпрд╛рдХрд░рдг рдПрдо рд╢реВрдиреНрдп рдФрд░ рдлрд┐рд░ 1 рдХреЛ рдЕрдВрдд рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "0000001"ред рдХрдард┐рдирд╛рдИ рдХреНрдпрд╛ рд╣реИ? рдФрд░ рдпрд╣ рддрдереНрдп рдХрд┐ рдЕрдм рд╣рдо рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдХрд┐ рдХрдм рд░реБрдХрдирд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдЕрдЧрд░ рд╣рдо рдХрдирд╡рд▓реНрд╢рдирд╢рди рдП рдкрд░ рд░реБрдХрддреЗ рд╣реИрдВ, рддреЛ рдкрд╣рд▓реЗ рдХрдирд╡рд▓реНрд╢рди рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж (рдЬрдм рд╣рдо рдЯрд░реНрдорд┐рдирд▓ 1 рдкрдврд╝рддреЗ рд╣реИрдВ, рд╣рдо рдЗрд╕реЗ рдП рдореЗрдВ рдзреНрд╡рд╕реНрдд рдХрд░ рджреЗрддреЗ рд╣реИрдВ) рдФрд░ рд╣рдо рд░реБрдХ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдФрд░ рдПрдо рдХрдиреЛрд▓реНрдпреВрд╢рди (рдирд┐рдпрдо рдП = 0 рдП рдХреЗ рдЕрдиреБрд╕рд╛рд░) рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдПрдХ рд╡реНрдпрд╛рдХрд░рдг рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рд┐рддреНрд░ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╡реНрдпрд╛рдХрд░рдг рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдПрд╕ = рдП | B | рд╕реАред рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд┐рд╢реЗрд╖ рдкреНрд░рддреАрдХ рдПрд╕ 'рдФрд░ рдирд┐рдпрдо рдПрд╕' = рдПрд╕ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрд╛рд░реНрд╕рд░ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдлрд┐рд░ рдЗрд╕ рдирд┐рдпрдо рдХреЗ рджреЛрд╖реА рд╣реЛрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдорд┐рд╢рди рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рд╣рдо рдШрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдордиреЗ рдПрдХ рд╕рд╛рде рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ - "рд╣рдордиреЗ рдирд┐рдпрдо рдПрд╕ 'рджреНрд╡рд╛рд░рд╛ 1 рд╕реЗ 0 рд╡рд░реНрдгреЛрдВ рдХреЛ рдЧрд┐рдирд╛, рдФрд░ рдЕрдВрддрд┐рдо рдПрдХред
рдЕрдм рд░рд╛рдЬреНрдп рдХреЛрдбрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдЦреИрд░, рд╣рдо рдЕрдкрдиреА рдЗрдЪреНрдЫрд╛рдУрдВ рдФрд░ рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рдХреЛ рд╕рд╛рджреЗ рдкрд╛рда рдореЗрдВ рдирд╣реАрдВ рд▓рд┐рдЦреЗрдВрдЧреЗред рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдмрд╕ рд╣рдореЗрдВ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИред рд╣рдореЗрдВ рдКрдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЕрдзрд┐рдХрддрдо рдХреЗ рдорд╢реАрди рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдкреНрд░рд╛рдердорд┐рдХ рд╣реИ рдЕрдЧрд░ рд╣рдо рдЙрдирдХреА рдЖрдкрд╕ рдореЗрдВ рддреБрд▓рдирд╛ рдХрд░реЗрдВред рдЙрдирдореЗрдВ рдХреЗрд╡рд▓ 2 рдкрд░рд┐рднрд╛рд╖рд┐рдд рдмрд┐рдВрджреБ рд╣реЛрддреЗ рд╣реИрдВ - рдирд┐рдпрдо рдФрд░ рдЗрд╕ рдирд┐рдпрдо рдореЗрдВ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ред рдФрд░, рдЬреИрд╕рд╛ рдХрд┐ рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдПрдХ рд░рд╛рдЬреНрдп рдореЗрдВ рдХрдИ рдРрд╕реЗ рд╕реЗрдЯ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдХреНрд▓рд╛рд╕рд┐рдХ рдореЗрдВ рд╕реЗрдЯ рдХреЛ рдЖрдЗрдЯрдо рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рд╡реЗ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВ: рдП = 01 ┬╖ 2, рдЕрд░реНрдерд╛рддреН, рдЙрдиреНрд╣реЛрдВрдиреЗ рдирд┐рдпрдо A = 012 рдореЗрдВ 2 рд╡рд░реНрдг рдкрдврд╝реЗред
рдПрдлрдПрд╕рдПрдо рддрд╛рд▓рд┐рдХрд╛
рдпрд╣ рдХреЗрд╡рд▓ рдПрдлрдПрд╕рдПрдо рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реА рд░рд╣рддрд╛ рд╣реИ рдФрд░ рдкрд╛рд░реНрд╕рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рддреИрдпрд╛рд░ рд╣реИред рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдХреНрд░рдордг рддрд╛рд▓рд┐рдХрд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рд╣реИ - рджреГрдврд╝ рд╕рдВрдХрд▓реНрдк рддрдм рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рд╣рдо рдПрдХ рдРрд╕реЗ рд░рд╛рдЬреНрдп рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рд╡рд░реНрдгреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рдпрдо рд╣реЛрддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдорд╛рд░реНрдХрд░ (┬╖) рдмрд╣реБрдд рдЕрдВрдд рдореЗрдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЪреВрдВрдХрд┐ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕реНрддрдВрдн рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдг рджреНрд╡рд╛рд░рд╛ рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рд╣рдореЗрдВ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдЯрд░реНрдорд┐рдирд▓реЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдврд╣рдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрдг рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдПрдХ рджреГрдврд╝ рд╕рдВрдХрд▓реНрдк рдХрд╛ рдЧрдарди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдПрдХ рдкреНрд░рддреАрдХ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ, рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдЬреЛ рдХрд┐ рд╡реНрдпрд╛рдХрд░рдг рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рддрд░реНрдХ рджреНрд╡рд╛рд░рд╛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╡рд╣рд╛рдВ рдирд╣реАрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рдЧрд▓рддреА рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг:
#start A A = B 2 B = 01
рдпрд╣рд╛рдВ, B рдХреЛ рджреЛрд╖реА рдард╣рд░рд╛рдиреЗ рдХреЗ рджреМрд░рд╛рди, рд╣рдореЗрдВ рдпрд╣ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ 2 рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ, рдФрд░ рдХреЛрдИ рдЕрдиреНрдп рд╡рд░реНрдг рдирд╣реАрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕реЗрдЯ рдХреА рдЧрдгрдирд╛ рдХрд╛ рддрд░реНрдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдиреАрдЪреЗ рдПрдХ рдЫрджреНрдо рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╣реЛрдЧрд╛ред рдЗрд╕ рдмрд┐рдВрджреБ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрдм рджреЛрд╖реА рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕ рдмрд╛рдд рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдХрд┐ рдХрд┐рд╕ рдЕрднрд┐рднрд╛рд╡рдХ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдП рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдПрдХ рджреГрдврд╝ рд╕рдВрдХрд▓реНрдк рдЪрд┐рдиреНрд╣ рдЖрд╕рд╛рдиреА рд╕реЗ рдХрдИ рдирд┐рдпрдореЛрдВ рдореЗрдВ рднрд╛рдЧ рд▓реЗ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╣рдореЗрдВ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХрд┐рд╕ рдирд┐рдпрдо рдореЗрдВ рдпрд╣ рдСрдкрд░реЗрд╢рди рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рддрд╛рдХрд┐ рд╕рдВрдмрдВрдзрд┐рдд рд░рд╛рдЬреНрдп рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдпрд╣ рдПрдХ рд░рд╛рдЬреНрдп рдвреЗрд░ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рд╕реНрдерд╛рдирд╛рдВрддрд░рдг (рдЯрд░реНрдорд┐рдирд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдФрд░ рд░рд╛рдЬреНрдп рдмрджрд▓рдирд╛), рд╣рдо рд╕реНрдЯреИрдХ рдкрд░ рд░рд╛рдЬреНрдп рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдзрдХреНрдХрд╛ рджреЗрддреЗ рд╣реИрдВред рдФрд░ рд╕рдЬрд╛ рдХреЗ рджреМрд░рд╛рди рд╣рдо рд╕реНрдЯреИрдХ рдПрд▓ рддрддреНрд╡реЛрдВ рд╕реЗ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдПрд▓ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рджрд╛рдИрдВ рдУрд░ рдХреА рд▓рдВрдмрд╛рдИ рд╣реИ (рддрддреНрд╡реЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдЬреЛ рдПрдХ рдЧреИрд░-рд╕рдорд░реВрдк рдореЗрдВ рдврд╣ рдЬрд╛рддрд╛ рд╣реИ)ред рдФрд░ рд╣рдо рдирдП рд░рд╛рдЬреНрдп рдХрд╛ рд╕реВрдЪрдХрд╛рдВрдХ рд░рдЦрддреЗ рд╣реИрдВ, рдЬреЛ рдПрдХ рд╣реА FSM рддрд╛рд▓рд┐рдХрд╛ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдиреНрдпреВрдирддрдо рдирд┐рдпрдо рдХреЗ рдмрд╛рдИрдВ рдУрд░ рдХреЗ рдиреЙрдирдЯрд░реНрдорд┐рдирд▓ рдХреЗ рдмрд░рд╛рдмрд░ рдХреЙрд▓рдо рд╕рдВрдЦреНрдпрд╛ рдФрд░ рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд▓рд╛рдЗрди рд╕рдВрдЦреНрдпрд╛ - рд░рд╛рдЬреНрдп рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдмреЛрдЭрд┐рд▓ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд░рд▓ рд╣реИред рдореИрдВ рдЙрдкрд░реЛрдХреНрдд рд╡реНрдпрд╛рдХрд░рдг рдкрд░ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ред
0. 0 1. , s0 {A = ┬╖ B 2}, {0} 2. , = [s0, 0] = s1 {B = 0 ┬╖ 1} , {0}, 1 3. , = [s1, 1] = s2 {B = 0 1 ┬╖} , {0, 1}, 2 4. , [s2, 2] (2 - ), = [s2, 2] = s3 {A = B ┬╖ 2}, {B} 5. , = [s3, 2] = s4 {A = B 2 ┬╖} , {B, 2}, EOF ( ) 6. , = [s4, EOF] = s5 {S = A ┬╖}, {A} 7. , = [s5, EOF] = s6 {S}, , ,
рд╣рдордиреЗ рд╕рдЬрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд▓рд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рддрдХ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдХреНрд░рдордг рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡реЗ рдХрд╣рд╛рдВ рд╕реЗ рдЖрддреЗ рд╣реИрдВред рдФрд░ рд╕рдм рдХреБрдЫ рддреБрдЪреНрдЫ рд░реВрдк рд╕реЗ рд╣рд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИ - рд╣рдо рдмрд╕ рд╕рднреА рдЙрдкрд▓рдмреНрдз рдкрд╛рддреНрд░реЛрдВ (рдЯрд░реНрдорд┐рдирд▓реЛрдВ рдФрд░ рдЧреИрд░-рдЯрд░реНрдорд┐рдирд▓реЛрдВ) рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рддреЗ рд╣реИрдВ, рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЗрд╕рдореЗрдВ рдлреЙрд░реНрдо рдХрд╛ рдПрдХ рдЖрдЗрдЯрдо {A = ... ┬╖ X ...} рд╣реИ, рдЬрд╣рд╛рдВ X рдПрдХ рдЗрдирд▓рд╛рдЗрди рд╡рд░реНрдг рд╣реИ, рддреЛ рд╣рдо рдорд╛рд░реНрдХрд░ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рдпрд╣ рд╕рд┐рд░реНрдл X рдкреНрд░рддреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реИ) рдФрд░ рдирдП рд░рд╛рдЬреНрдп рдХрд╛ рдЖрдЗрдЯрдо рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ {A = ... X ┬╖ .. ред}ред рдмреЗрд╢рдХ, рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдХрдИ рдРрд╕реЗ рдЖрдЗрдЯрдо рд╣реИрдВ, рддреЛ рдирдП рд░рд╛рдЬреНрдп рдореЗрдВ рдХрдИ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ рднреА рд╣реЛрдВрдЧреАред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди, рд╣рдо рд╡рд╛рдВрдЫрд┐рдд рдПрдлрдПрд╕рдПрдо рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ: [sOld, X] = sNewред рдпрд╣ рддрд╛рд▓рд┐рдХрд╛ рдХреА рд▓рдЧрднрдЧ рд╕рдорд╛рдкреНрдд рдкрдВрдХреНрддрд┐ рд╣реИред рдЖрдкрдХреЛ рдмрд╕ рдЗрд╕рдореЗрдВ рдХрдирд╡рд▓реНрд╢рди рддрддреНрд╡ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред
рдПрдХ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБред рдлрд┐рд░ рд╕реЗ, рдпрджрд┐ рд╣рдо рдЕрдВрддрд┐рдо рдЙрджрд╛рд╣рд░рдг рдХреА рдУрд░ рдореБрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреЗрд╡рд▓ {A = B ┬╖ 2} рдФрд░ [s0, B] = sX рдХреЛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрд╡рд╕реНрдерд╛ {A = ┬╖ B 2} рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдЧрд▓рдд рд╣реИ рдФрд░ рдХрднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рдХрд┐ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрд╡рд╕реНрдерд╛ рдХреЗ рдЗрдирдкреБрдЯ рдкрд░ рд╣рдореЗрдВ рдиреЙрди-рдЯрд░реНрдорд┐рдирд▓ (B) рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдПрдХ рдЗрдирдкреБрдЯ рдЯрд░реНрдорд┐рдирд▓ (0, 1, 2) рд╣реЛрддрд╛ рд╣реИред рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЦрд╛рддреЗ рдХреЛ рд╕рдВрднрд╡ рдШреБрдорд╛рд╡реЛрдВ рдореЗрдВ рд▓реЗрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ (рдСрдкрд░реЗрд╢рди рджреГрдврд╝ рд╕рдВрдХрд▓реНрдк рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реИ)ред рдпрд╣реА рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡реНрдпрд╛рдХрд░рдг рд╕реЗ, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдмреА рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рд╢рд░реНрдд рд░реВрдк рд╕реЗ {A = ┬╖ 0 1 2} рдмреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рддрд░реНрдХ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рдореИрдВрдиреЗ рдЬреЛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реИ рдЙрд╕реЗ рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рджреЗрддреЗ рд╣реБрдП, рдпрд╣ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: "рдпрджрд┐ рд░рд╛рдЬреНрдп рдореЗрдВ {X = ... ┬╖ Y ...} рд╣реИ, рддреЛ рдЗрд╕рдореЗрдВ {Y = ┬╖ ...}} рдХреЗ рдЖрдЗрдЯрдо рднреА рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рд╡рд┐рд╕реНрддрд╛рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХреНрд▓реЛрдЬрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣ рд╕рдм, рдЕрдм рд╕рд┐рджреНрдзрд╛рдВрдд FSM рдкреАрдврд╝реА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдФрд░ FSM- рдЖрдзрд╛рд░рд┐рдд рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рджреЛрдиреЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЫрджреНрдо рдХреЛрдб:
function firstTerminal(X) { if (X.type == Terminal) return X; result = []; for (rule in rules) {
рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХреЛрдб:
input >> term; accepted = false; /* 0 , , == */ stack = [0]; while (!accepted) { // - stack.top() state = FSM[stack.top(), term]; switch (state) { case Success: accepted = true; break; case Shift: // stack.push(state.index); input >> term; break; case Reduce: // L stack.pop(state.rule.right.length); // state.rule.left - // stack.pop() - , X stack.push(FSM[stack.pop(), state.rule.left]); // {..., Y, ..., Z} {..., X} X = Y ... Z break; default: throw SyntaxError; } }
рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдФрд░ рд╕реБрдзрд╛рд░ред рдПрд╕рдПрд▓рдЖрд░ (1)
рд╣рдореЗрдВ рдПрдХ рдмрд╣реБрдд рддреЗрдЬрд╝ рдФрд░ рдЕрдЪреНрдЫрд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдорд┐рд▓рд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдПрдХ рджреЛрд╖ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдпрд╣ рдЙрд╕ рд╡рд░реНрдг рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреА рдЕрдкреВрд░реНрдгрддрд╛ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ рдЬреЛ рдмрдВрдзрдиреЗрд╡рд╛рд▓рд╛ рдЧреИрд░-рдЯрд░реНрдорд┐рдирд▓ (рдиреЗрдХреНрд╕реНрдЯрд░рдорд┐рдирд▓ рдлрд╝рдВрдХреНрд╢рди) рдХреЗ рдмрд╛рдж рдЖрддрд╛ рд╣реИред рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЙрджрд╛рд╣рд░рдг:
A = B 2 | C B = C 0 | 1 C = B States: S0: [{S = ┬╖ A}, {A = ┬╖ B 2}, {A = ┬╖ C}, {B = ┬╖ C 0}, {B = ┬╖ 1}, {C = ┬╖ B}] S1: [{S = A ┬╖}], S0 A S2: [{A = B ┬╖ 2}, {C = B ┬╖}], S0 B ... SX: [{A = B 2 ┬╖}], S2 2
рд╡реНрдпрд╛рдХрд░рдг рдореЗрдВ рдкреНрд░рдкрддреНрд░ 10 ... 02 рдФрд░ 10 ... 0 рдХреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдиреЗрдХреНрд╕реНрдЯрдмреЛрд▓ = [0, 2, рдИрдУрдПрдл]ред рдФрд░ рдлрд┐рд░ рд╣рдореЗрдВ рдпрд╣ рдорд┐рд▓рддрд╛ рд╣реИ рдХрд┐ рдПрдлрдПрд╕рдПрдо [рдПрд╕ 2, 2] рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдирд┐рдпрдо C = B рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХ рдХрдирд╡рд▓реНрд╢рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕реА рдХреНрд╖рдг рдирд┐рдпрдо A = B 2 рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣рдореЗрдВ рдЙрд╕реА рдЯрд░реНрдорд┐рдирд▓ 2 рдкрд░ рд░рд╛рдЬреНрдп S2 рджреНрд╡рд╛рд░рд╛ SX рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред ред рдпрд╣ рджреБрдЦрдж рд╣реИред рдпрд╣ рдЗрд╕рд▓рд┐рдП рд╣реБрдЖ рдХреНрдпреЛрдВрдХрд┐ рдмрд┐рдВрджреБ C = B рдХреЗ рд▓рд┐рдП S2 рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣рдореЗрдВ A = C EOF рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреЗрд╡рд▓ EOF рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рдФрд░ рдХреЛрдИ 2 рдпрд╛ 0. рд╡реЗ рдХреЗрд╡рд▓ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рд╛рдВред рдпрд╣ рдПрдХ рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕реЗ рдЬрд╛рд▓ рд╡рд╛рд▓реЗ рд╡реНрдпрд╛рдХрд░рдг рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдЗрддрдирд╛ рджреБрд░реНрд▓рдн рдирд╣реАрдВ рд╣реИред рд╕рдорд╛рдзрд╛рди рд╕реНрдкрд╖реНрдЯ рд╣реИ - рдЙрди рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдЬреЛ рдЕрдиреБрдорд╛рди рдХреЛ рдкреНрд░рддреАрдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВред рдпрд╣реА рд╣реИ, {C = B ┬╖} рд╕рд╢рд░реНрдд рд░реВрдк рд╕реЗ {C = B ┬╖ [рдЙрдореНрдореАрдж EOF]} рдпрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ {C = B ┬╖, EOF} рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред рдХреЗрд╡рд▓ 2 рдЕрдВрдХ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ - рдЕрдВрдХреЛрдВ рдХреА рдкреАрдврд╝реА (рдпрд╣ рдПрдХ рдирдП рдкреНрд░рд╛рд░реВрдк рдХреЗ рдЕрдВрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ) рдФрд░ рдПрдХ рджреГрдврд╝ рд╕рдВрдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреА рдкреАрдврд╝реАред рдпрд╣реА рд╣реИ, рд╡рд╣рд╛рдБ рдХреЗрд╡рд▓ 2 рдХрд╛рд░реНрдп рд╣реИрдВ closeItem () рдФрд░ addReducing ():
рд╢реАрд░реНрд╖ - LALR (1)
рдкрд┐рдЫрд▓реА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдиреБрдХрд╕рд╛рди рдирдЧреНрди рдЖрдВрдЦреЛрдВ рд╕реЗ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ - рдЬрд╣рд╛рдВ рд╣рдордиреЗ 1 рдмрд┐рдВрджреБ рдФрд░ 1 рд░рд╛рдЬреНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛, рдЕрдм рдХрдИ рдмрд┐рдВрджреБ рдФрд░ рдХрдИ рд░рд╛рдЬреНрдп рд╕рдВрднрд╡ рд╣реИрдВ, рдХреЗрд╡рд▓ рдЕрдкреЗрдХреНрд╖рд┐рдд рдкреНрд░рддреАрдХ рдореЗрдВ рднрд┐рдиреНрдирддрд╛ рд╣реИред рддрджрдиреБрд╕рд╛рд░, FSM рддрд╛рд▓рд┐рдХрд╛ рд╕реВрдЬ рдЬрд╛рддреА рд╣реИ, рдФрд░ рдЗрддрдирд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЖрдХрд╛рд░ рдкрд░рд┐рдорд╛рдг рдХреЗ рдЖрджреЗрд╢реЛрдВ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдмрдВрдзрд┐рдд рддрд╛рд▓рд┐рдХрд╛ LR (0) рдХреЛ рдкрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред
рдПрдХ рд░рд╛рд╕реНрддрд╛ рдЦреЛрдЬрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ - рд╣рдо рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬреЛ рдХреЗрд╡рд▓ рдЕрдкреЗрдХреНрд╖рд┐рдд рдкреНрд░рддреАрдХ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: [{A = B, 0}, {B = C, 0}] рдФрд░ [{A = B, 1}, {B = C, 1}]ред рдХреНрдпреЛрдВ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ?
- рд╕рдВрдХреНрд░рдордг рдХреЗ рджреМрд░рд╛рди рдПрдХ рдирдП рд░рд╛рдЬреНрдп рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп, рд╣рдо рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рдкреНрд░рддреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ s0 рдФрд░ s1 рдХрд░реНрдиреЗрд▓ (рдЕрдкреЗрдХреНрд╖рд┐рдд рдкреНрд░рддреАрдХ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЖрдЗрдЯрдо рдХрд╛ рднрд╛рдЧ) рдореЗрдВ рд╕рдорд╛рди рд╣реИрдВ, рддреЛ s2 рд╕реЗ X рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди s2 рдФрд░ s1 рд╕реЗ X рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди s2 рднреА рдХрд░реНрдиреЗрд▓ рдореЗрдВ рд╕рдорд╛рди рд╣реИрдВред ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ s0 рдФрд░ s1 рдХреЛ sn0, s2 рдФрд░ s3 рдореЗрдВ sn1 рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЙрдирдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣реА рд╣реИред
- рдПрдлрдПрд╕рдПрдо рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рджреВрд╕рд░рд╛ рднрд╛рдЧ рджреГрдврд╝ рд╕рдВрдХрд▓реНрдк рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдБ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╡реЗ рдкреНрд░рддрд┐рдЪреНрдЫреЗрдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд░рд╛рдЬреНрдпреЛрдВ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрдореНрдореАрдж рдХреЗ рдкреНрд░рддреАрдХ рд╣реИрдВ, рддреЛ рдЗрд╕реА рдЙрдореНрдореАрдж рдХреЗ рдкреНрд░рддреАрдХ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ 1 рд╕реЗрд▓ рдореЗрдВ рд╕рдВрдХрд▓реНрдк рджрд░реНрдЬ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдФрд░ рд╡реЗ рджрд░реНрдж рд░рд╣рд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрдпреБрдХреНрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЕрдВрдд рдореЗрдВ рд╣рдореЗрдВ рдПрдХ рд╣реА LR (0) рдорд┐рд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реНрдпрд╛рдХрд░рдг рдкреНрд░рддрд┐рдмрдВрдз рдХреЗ рдмрд┐рдирд╛ред
рд▓реЗрдЦ рдХреЗ рдЕрдВрд╢
- рднрд╛рдЧ 1. рдореВрд▓ рд╕рд┐рджреНрдзрд╛рдВрдд
- рднрд╛рдЧ 2. LR рдЬрдирд░реЗрдЯрд░ рдХрд╛ рд╡рд┐рд╡рд░рдг
- рднрд╛рдЧ 3. рдПрд▓рдЖрд░-рдЬрдирд░реЗрдЯрд░ рдХреЗ рд▓реЗрдЦрди рдФрд░ рд╕рдВрднрд╡ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ