рдкрд░рд┐рдЪрдп
рд╢реБрдн рджреЛрдкрд╣рд░
рдореБрдЭреЗ рд░реВрд╕реА рдореЗрдВ рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рд╕рд░рд▓ рдФрд░ рд╕рдордЭрджрд╛рд░ рд╡рд░реНрдгрди рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдореИрдВрдиреЗ рдЗрд╕ рдЕрдВрддрд░ рдХреЛ рднрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдХреНрдпрд╛ рд╣реИ? LR (0) рдкрд╛рд░реНрд╕рд░ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдПрдХ рдкрд╛рд░реНрд╕рд░ рд╣реИред Parser рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдЯреЛрдХрди рдХреА рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░реАрдо (рднрд╛рд╖рд╛ рдХреЗ рдореВрд▓ рддрддреНрд╡ рдЬреЛ рдЗрдирдкреБрдЯ рдХреИрд░реЗрдХреНрдЯрд░ рд╕реНрдЯреНрд░реАрдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рд╣реИ, рдЯреЛрдХрди рдХреЗ рдЙрджрд╛рд╣рд░рдг рдПрдХ рд╕рдВрдЦреНрдпрд╛, рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо, рд╡рд░реНрдг рд╣реИрдВ) рдФрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рднрд╛рд╖рд╛ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВред рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╣реЛрддрд╛ рд╣реИ, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдПрдХ рдкреЗрдбрд╝ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╕рдВрд░рдЪрдирд╛ рдЕрдЧрд▓реЗ рдЪрд░рдг рдореЗрдВ рдЬрд╛рдПрдЧреА - рд╕рд┐рдореЗрдВрдЯрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг, рдЬрд╣рд╛рдВ рдХрдВрдкрд╛рдЗрд▓рд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреЗрдбрд╝ рдХреЗ рдЕрд░реНрде рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред
рдкрд╛рд░реНрд╕рд░реНрд╕ рдХреЗ 2 рд╡рд░реНрдЧ рд╣реИрдВ - рдЕрдкрд╕реНрдЯреНрд░реАрдо рдФрд░ рдбрд╛рдЙрдирд╕реНрдЯреНрд░реАрдоред рдкреВрд░реНрд╡ рдкрддреНрддрд┐рдпреЛрдВ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рдкреЗрдбрд╝ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЗрдирдкреБрдЯ рдЯреЛрдХрди рд╣реИрдВ, рдЬрдмрдХрд┐ рдмрд╛рдж рд╡рд╛рд▓реЗ, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдкреЗрдбрд╝ рдХреА рдЬрдбрд╝ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВред рджрд░рдЕрд╕рд▓, LR рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдмрд╛рдПрдВ рд╕реЗ рджрд╛рдПрдВ (L - 'рд▓реЗрдлреНрдЯ') рд╕реНрдЯреНрд░реАрдо рдХреЛ рдкрдврд╝реЗрдЧрд╛ рдФрд░ рдиреАрдЪреЗ рд╕реЗ рдКрдкрд░ рдПрдХ рдЯреНрд░реА рдмрдирд╛рдПрдЧрд╛ (рд▓реЗрдЯрд░ R, рдЬрд┐рд╕рдХрд╛ рдорддрд▓рдм рд░рд╛рдЗрдЯ рд╣реИ, рдХрдиреНрдлреНрдпреВрдЬ рдирд╣реАрдВ рд╣реИ, рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╣реИрдВ)ред рдЗрдВрдбреЗрдХреНрд╕ 0 рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЯреЛрдХрди рдХрд╛ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рд╡рд░реНрддрдорд╛рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЪреБрдирдиреЗ рдХреЗ рдХреНрдпрд╛ рдлрд╛рдпрджреЗ рд╣реИрдВ?
- рд╡рд╣ рддреЗрдЬ рд╣реИред
- рдХрдИ рднрд╛рд╖рд╛рдУрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдЕрдЧрд░ рдЖрдкрдиреЗ рдПрдХ рднрд╛рд╖рд╛ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛, рддреЛ рдЙрдЪреНрдЪ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рде LR рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЗрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред
- рд╕рд┐рдВрдЯреИрдХреНрд╕ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬреИрд╕реЗ рд╣реА рдПрдХ рдЪрд░рд┐рддреНрд░ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдкрд┐рдЫрд▓реЗ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИ, рд╣рдо рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдЖрдЙрдЯрдкреБрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕рдХреЗ рдиреБрдХрд╕рд╛рди рднреА рд╣реИрдВ:
- рдирд┐рд░реНрдорд╛рдг рдХреА рд╕рд╛рдкреЗрдХреНрд╖ рдЬрдЯрд┐рд▓рддрд╛ред
- рдЖрдк рднрд╛рд╖рд╛ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреА рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рдПрдХ рдореВрд░реНрдЦ рдореЗрдВ рдбреНрд░рд╛рдЗрд╡ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╢рдмреНрджрд╛рд╡рд▓реА
рдПрдХ рдЯрд░реНрдорд┐рдирд▓ рдкреНрд░рддреАрдХ (
рдЯрд░реНрдорд┐рдирд▓ ) рдПрдХ рдкреНрд░рддреАрдХ рд╣реИ рдЬреЛ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпреЗ рдЯреЛрдХрди рд╣реИрдВред
рдЧреИрд░-рдкреНрд░рддреАрдХ рдЪрд┐рд╣реНрди (
nonterminal ,
nonterminal ) - рдПрдХ рдкреНрд░рддреАрдХ рдЬреЛ рднрд╛рд╖рд╛ рдХреА рдПрдХ рд╡рд╕реНрддреБ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдХрд╣реЗрдВ рдХрд┐ рдкреНрд░рддреАрдХ A рдПрдХ рд╢рдмреНрдж рд╣реИред рдмреЗрд╢рдХ, рд╣рдо рдП рдХреЗ рдмрдЬрд╛рдп рдмрд╣реБ-рд╡рд░реНрдг рдирд╛рдо - рд╢рдмреНрдж рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВред
рдкреНрд░рд╕рдВрдЧ-рдореБрдХреНрдд рд╡реНрдпрд╛рдХрд░рдг (
рд╕реАрдПрдлрдЬреА ) - рдкреНрд░рдкрддреНрд░ рдХреЗ рдирд┐рдпрдореЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ
, рдЬрд╣рд╛рдВ рдП рдПрдХ рдиреЙрдирдЯрд░реНрдорд┐рдирд▓ рд╣реИ, рдбрдмреНрд▓реНрдпреВ рдЯрд░реНрдорд┐рдирд▓реЛрдВ рдФрд░ рдиреЙрдирдЯрд░реНрдорд┐рдирд▓ рдХрд╛ рдПрдХ рдордирдорд╛рдирд╛ рд╕рдВрдЧреНрд░рд╣ рд╣реИред рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдХреЗрд╡рд▓ рд╡реНрдпрд╛рдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛, рдЗрд╕ рд╕рдВрджрд░реНрдн рд╕реЗ рдЕрд░реНрде рдореБрдХреНрддред
рд╡реНрдпрд╛рдХрд░рдг рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЙрджрд╛рд╣рд░рдг, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдПрдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВрдЧреЗ:
рдпрд╣ рд╡реНрдпрд╛рдХрд░рдг рджреЛ рд╕рдВрдЦреНрдпрд╛рдУрдВ - 0 рдФрд░ 1 рдкрд░ рдЕрдВрдХрдЧрдгрд┐рддреАрдп рд╕рдВрдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдЕрдзреВрд░реЗ рд╕реЗрдЯ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рд╡реНрдпрд╛рдХрд░рдг рднрд╛рд╖рд╛ рдХрд╛ рд╡рд░реНрдгрди рд╣реИред рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рд╣рдорд╛рд░реА рднрд╛рд╖рд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдпрд╛ рдХрд╣реАрдВ рд╣рдордиреЗ рдПрдХ рд╕рд┐рдВрдЯреИрдХреНрд╕ рддреНрд░реБрдЯрд┐ рдХреА рд╣реИ (1+ рдХреЗ рдмрдЬрд╛рдп 1+ рд▓рд┐рдЦрд╛ рд╣реИ), рд╣рдо рдЗрд╕ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдХреЛ рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рддрд░реАрдХреЗ рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ рд╢реБрд░реБрдЖрддреА рдиреЙрди-рдЯрд░реНрдорд┐рдирд▓ (рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдИ) рд╣реИред 1 + 1 рдХреЗ рд▓рд┐рдП, рдкрде рдРрд╕рд╛ рдИ рд╣реЛрдЧрд╛, рдирд┐рдпрдо 2 рд▓рд╛рдЧреВ рдХрд░реЗрдВ, E + F, рдирд┐рдпрдо 1, F + F, рдирд┐рдпрдо 4, T + F, рдирд┐рдпрдо 8, 1 + F, рдлрд┐рд░ рд╕реЗ 4, 1 + T рдФрд░ рдЕрдВрдд рдореЗрдВ рдЖрдард╡реЗрдВ, 1 + 1. рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдо рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рдХреНрдпрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рд╕рд╣реА рд╣реИред
рдЕрдм рд╣рдо рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рдирд╛рдо рдкрд░ рдЖрд░ рдЕрдХреНрд╖рд░ рдХреЛ рд╕рдордЭрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо рдирд┐рдпрдореЛрдВ рдХреЗ рдЪрд░рдо рджрд╛рд╣рд┐рдиреЗ рд╣рд┐рд╕реНрд╕реЗ рд╕реЗ рд╕реНрд╡рдпрдВрд╕рд┐рджреНрдз рддрдХ рдЬрд╛рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд, рд╕рд░рд▓ рдирд┐рдпрдореЛрдВ (7 рдФрд░ 8) рд╕реЗ рд╣рдо рдореВрд▓ (1) рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВред рдПрд▓-рдПрдирд╛рд▓рд╛рдЗрдЬрд░ (рдПрд▓рдПрд▓) рдирд┐рдпрдореЛрдВ рдХреЗ рдмрд╛рдПрдВ рд╣рд┐рд╕реНрд╕реЛрдВ рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреА рдЕрдЧрд▓реА рджрд┐рд╢рд╛ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛
рдкрд░рд┐рдорд┐рдд рд░рд╛рдЬреНрдп рдорд╢реАрдиреЛрдВ (
FSM ) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред рдпрд╣ рдПрдХ рдореЙрдбрд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд░рд╛рдЬреНрдпреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдФрд░ рдПрдХ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рд╣реИред рдорд╢реАрди рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрд╡рд╕реНрдерд╛ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ рдФрд░ рд╡рд░реНрддрдорд╛рди рдФрд░ рдЗрдирдкреБрдЯ рдкреНрд░рддреАрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдкрдирд╛ рд░рд╛рдЬреНрдп рдмрджрд▓рддреА рд╣реИред рдпрд╣реА рд╣реИ, рд╣рдо рд░рд╛рдЬреНрдп 0 рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдпрджрд┐ рдЗрдирдкреБрдЯ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдСрдЯреЛрдореЗрдЯрди 1 рд░рд╛рдЬреНрдп рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдмреА 2 рд░рд╛рдЬреНрдп рдореЗрдВред рд╕рдВрдХреНрд░рдордг рдХреЗ рдпрд╛рдВрддреНрд░рд┐рдХреА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рджреНрд╡рд╛рд░рд╛ рджрд┐рдП рдЧрдП рд╣реИрдВ, рдЬрд╣рд╛рдВ рдХреЙрд▓рдо рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рд╣реИрдВ, рдХреЙрд▓рдо рдЗрдирдкреБрдЯ рдкреНрд░рддреАрдХ рд╣реИрдВред
рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо
рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдЪреАрдЬреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ:
- рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рд╕реНрд╡рдпрдВ, рдЬрд┐рд╕рдХрд╛ рд╣рдо рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗред
- рд╕реНрдЯреИрдХ (рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдЬреЛ LIFO (рд▓рд╛рд╕реНрдЯ рдЗрди рдлрд░реНрд╕реНрдЯ рдЖрдЙрдЯ) рдирд┐рдпрдо рдХрд╛ рдЕрдиреБрдкрд╛рд▓рди рдХрд░рддреА рд╣реИ) рдЪрд╛рджрд░реЛрдВ рдХреЗ рдвреЗрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд╣реИ - рдкрд╛рд░реНрд╕рд░ рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкрддреНрддреА рдХреЛ рд╕реНрдЯреИрдХ рдореЗрдВ рд░рдЦреЗрдВ, рдФрд░ рд╕реНрдЯреИрдХ рд╕реЗ рддрддреНрд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдиреЗ рдкрд░ рдкрд╣рд▓реЗ рд▓реЗрдВред
- рдПрдХреНрд╢рди рдЯреЗрдмрд▓ред рд╡рд╣ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдФрд░ рдЗрдирдкреБрдЯ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдЪрд░рд┐рддреНрд░ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред
- рд░реВрдкрд╛рдВрддрд░рдг рддрд╛рд▓рд┐рдХрд╛ рдПрдХ рд╕рд╣рд╛рдпрдХ рддрд╛рд▓рд┐рдХрд╛ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рдПрдХ рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣рд╛рдВ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╕реНрдерд┐рдд рд░рд╛рдЬреНрдп рд╣реИред рд╣рдо рдХрд╛рд░реНрдпреЛрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛ рджреЗрдЦрддреЗ рд╣реИрдВ (рд╕реВрдЪрдХрд╛рдВрдХ рд╡рд░реНрддрдорд╛рди рдЗрдирдкреБрдЯ рдкреНрд░рддреАрдХ рдФрд░ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рд╣реИрдВ)ред рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ 4 рдкреНрд░рдХрд╛рд░ рдХреЗ рд░рд┐рдХреЙрд░реНрдб рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ:
- рд╕рдлрд▓рддрд╛ (рд╕реНрд╡реАрдХрд╛рд░) - рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЗрдирдкреБрдЯ рд▓рд╛рдЗрди рдЗрд╕ рд╡реНрдпрд╛рдХрд░рдг рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред
- рд╢реВрдиреНрдп (рддреНрд░реБрдЯрд┐) - рдХреЛрдИ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдирд╣реАрдВ рд╣реИ, рд╣рдо рдПрдХ рдЧрддрд┐рд░реЛрдз рдкрд░ рд╣реИрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рд╡рд░реНрддрдорд╛рди рдЪрд░рд┐рддреНрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдЧрд▓рддреА рдХреАред
- рд╕реНрдерд╛рдирд╛рдВрддрд░рдг (рд╢рд┐рдлреНрдЯ) - рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╣рдо рдЙрд╕ рд░рд╛рдЬреНрдп рдХреЛ рдбрд╛рд▓рддреЗ рд╣реИрдВ рдЬреЛ рдЗрдирдкреБрдЯ рдЪрд░рд┐рддреНрд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рдЕрдЧрд▓рд╛ рдкрдврд╝реЗрдВ
- рдХрдореА (рдХрдо рдХрд░рдирд╛) - рд╣рдордиреЗ рдХрд╣рд╛ рд╣реИ рдХрд┐ рд╣рдо рд╡реНрдпрд╛рдХрд░рдг рдирд┐рдпрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣рд╛рдБ рд╣рдо рдкрд░рд┐рд╡рд░реНрддрди рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВред рдкрд╣рд▓рд╛ рд╕реВрдЪрдХрд╛рдВрдХ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рд╣реИред рджреВрд╕рд░рд╛ рдирд┐рдпрдо рдХреЗ рдмрд╛рдИрдВ рдУрд░ рд╣реИред рдпрд╣реА рд╣реИ, рд╣рдордиреЗ рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ред
рдХреЛрдб рд░реВрдк рдореЗрдВ, рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
- рдвреЗрд░ред рдзрдХреНрдХрд╛ ( рд░рд╛рдЬреНрдп [рдХреЛ реж ] ) ;
- рдЬрдмрдХрд┐ ( рд╕реНрд╡реАрдХреГрдд )
- {
- рд░рд╛рдЬреНрдп * рд╕реЗрдВрдЯ = рдвреЗрд░ред рд╢реАрд░реНрд╖ ( ) ;
- рдЯрд░реНрдорд┐рдирд▓ рд╢рдмреНрдж = рдПрд╕ [ inp_pos ] ;
- рдЕрдЧрд░ ( рд╢рд░реНрддреЗрдВред IsTerm ( рд╢рдмреНрдж ) )
- рддреНрд░реБрдЯрд┐ ( ) ;
- рдХреНрд░рд┐рдпрд╛ * рдХреНрд░рд┐рдпрд╛ = рдХреНрд░рд┐рдпрд╛ред рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ ( рд╕реЗрдВрдЯ, рд╢рдмреНрдж ) ;
- рдЕрдЧрд░ ( рдХрд╛рд░реНрд░рд╡рд╛рдИ )
- рддреНрд░реБрдЯрд┐ ( ) ;
- рд╕реНрд╡рд┐рдЪ ( рдХреНрд░рд┐рдпрд╛ - > рдкреНрд░рдХрд╛рд░ )
- {
- рдорд╛рдорд▓рд╛
- рд╕реНрд╡реАрдХреГрдд = рд╕рддреНрдп ;
- рддреЛрдбрд╝рдирд╛ ;
- рдорд╛рдорд▓рд╛ рдПрдХреНрд╢рдирд╢рд┐рдлреНрдЯ :
- inp_pos ++ ;
- рдвреЗрд░ред рдзрдХреНрдХрд╛ ( рдХреНрд░рд┐рдпрд╛ - > рд░рд╛рдЬреНрдп ( ) ) ;
- рддреЛрдбрд╝рдирд╛ ;
- рдорд╛рдорд▓рд╛ рдХрд╛рд░реНрд░рд╡рд╛рдИ :
- рдирд┐рдпрдо * рдирд┐рдпрдо = рдХреНрд░рд┐рдпрд╛ - > рдирд┐рдпрдо ( ) ;
- рдвреЗрд░ред рдкреЙрдк ( рдирд┐рдпрдо - > рдЖрдХрд╛рд░ ( ) ) ;
- рд░рд╛рдЬреНрдп * transferState = transferTableред рдкреНрд░рд╛рдкреНрдд ( рдвреЗрд░ ) ред рд╢реАрд░реНрд╖ ( ) , рдирд┐рдпрдо - > рд╡рд╛рдо ( ) ) ;
- рдЕрдЧрд░ ( рдЯреНрд░рд╛рдВрд╕рдлрд░рд╕реНрдЯреИрдЯ )
- рддреНрд░реБрдЯрд┐ ( ) ;
- рдвреЗрд░ред рдзрдХреНрдХрд╛ ( transferState ) ;
- рддреЛрдбрд╝рдирд╛ ;
- }
- }
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдореЗрдВ рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдкреВрд░реА рдЯреНрд░рд┐рдХ рдпреЗ рдЯреНрд░рд┐рдХреА рдЯреЗрдмрд▓ рдмрдирд╛рдиреЗ рдХреА рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рдЬрд╛рдиреЗрдВ рдХрд┐ рдкрд╛рд░реНрд╕рд░ рдЕрд╡рд╕реНрдерд╛ рдХреНрдпрд╛ рд╣реИред рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рдЧреИрд░-рддреБрдЪреНрдЫ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдФрд░ рдирд╣реАрдВ, рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдирд╣реАрдВ рд╣реИред рд╣рдореЗрдВ рдХрдИ рдирдИ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рдкреЗрд╢ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпреЗ рдЖрдЗрдЯрдо рд╣реИрдВред рдпрд╣ рдПрдХ рдирдИ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рдпрдо рд╣реИ - рдПрдХ рдорд╛рд░реНрдХрд░ред рдПрдХ рдорд╛рд░реНрдХрд░ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдо рдХрд┐рд╕ рддрддреНрд╡ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣реЗ рд╣реИрдВред рддрджрдиреБрд╕рд╛рд░, рдкреНрд░рддреНрдпреЗрдХ рдирд┐рдпрдо n + 1 рдЯреЛрдХрди рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ n рдирд┐рдпрдо рдХреЗ рджрд╛рдИрдВ рдУрд░ рд╡рд░реНрдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдпрдо 3 рд▓реЗрдВред рд╕рд░реНрдХрд▓ рдореЗрдВ рдкреНрд▓рд╕ рдорд╛рд░реНрдХрд░ рдХреЗ рд╕реНрдерд╛рди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред
рджреВрд╕рд░реЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдореЗрдВ рдорд╛рд░реНрдХрд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╡рд░реНрддрдорд╛рди рдЪрд░рд┐рддреНрд░ рдХреЗ рд╕рд╛рде рдорд╛рдЗрдирд╕ рд╕рд╛рдЗрди рджреЗрдЦрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВред рдХрдИ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдорд┐рд▓рд╛рдирд╛ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИред рджрд░рдЕрд╕рд▓, рд░рд╛рдЬреНрдп рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдПрдХ рд╕рд╛рде рдЗрдХрдЯреНрдареЗ рдХрд┐рдП рдЧрдП рдЖрдЗрдЯрдореЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИред
рд▓реЗрдХрд┐рди рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗрдЯ рдХреЛ рдмрдВрдж рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рдкреВрд░реНрдг рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╢рд╛рдЦрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣реА рд╣реИ, рдЕрдЧрд░ рд╕реЗрдЯ рдореЗрдВ рдПрдХ рдмрд┐рдВрджреБ рд╣реИ рдЬрд╣рд╛рдВ рдорд╛рд░реНрдХрд░ рдПрдХ рдиреЙрдирдЯрд░реНрдорд┐рдирд▓ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ (рдФрд░ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рднреА рдиреЙрдирдЯрд░реНрдорд┐рдирд▓ рдмрд╛рдПрдВ рд╣рд┐рд╕реНрд╕реЗ рд╣реИрдВ), рддреЛ рдЖрдкрдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рдиреЙрдирдЯрд░реНрдорд┐рдирд▓ рдХреЛ "рддреИрдирд╛рдд" рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдЙрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рдмрд╛рдпреЗрдВ рд╣рд┐рд╕реНрд╕реЗ рдЗрд╕ рдЕрдкрд░рдВрдкрд░рд╛рдЧрдд рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдорд╛рд░реНрдХрд░ рдкрд╣рд▓реЗ рд╡рд░реНрдг рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЕрдкрдиреЗ рдЖрдк рд╕реЗ, рд╣рдо рдЗрд╕реЗ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░реВрдк рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдпрджрд┐ рдирдП рдЬреЛрдбрд╝реЗ рдЧрдП рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдореЗрдВ рдкрд╣рд▓рд╛ рдЪрд░рд┐рддреНрд░ рдПрдХ рдЧреИрд░-рдЯрд░реНрдорд┐рдирд▓ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ рднреА рдмрдВрдж рдХрд░ рджреЗрддреЗ рд╣реИрдВред рдЬрдм рддрдХ рд╣рдореЗрдВ рдкреВрд░рд╛ рд╕реЗрдЯ рдирд╣реАрдВ рдорд┐рд▓ рдЬрд╛рддрд╛ред рдЙрд╕ рд╕реЗрдЯ рдХреЛ рдмрдВрдж рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдмрд┐рдВрджреБ рд╣реИ (рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдирдВрдмрд░ 3):
рдПрдл рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рд╕реЗ, рд╣рдореЗрдВ рдЕрдВрдХ 2, 3, 4 рдорд┐рд▓рддрд╛ рд╣реИред 3 рдФрд░ 4 рдореЗрдВ, рд╣рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдПрдл рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХреА рдЬрд╛рддреА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реЗрдЯ рдореЗрдВ рдпреЗ рдирд┐рдпрдо рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЯреА рддреИрдирд╛рдд рдирд╣реАрдВ рд╣реИ, рдРрд╕рд╛ рдХрд░рдиреЗ рдкрд░, рд╣рдореЗрдВ 5 рдФрд░ 6. рд╕рдм рдХреБрдЫ рдорд┐рд▓рддрд╛ рд╣реИ, рдХреНрд▓реЛрдЬрд░ рддреИрдпрд╛рд░ рд╣реИред
- рдХреЗ рд▓рд┐рдП (рдмрдВрдж рдЖрдЗрдЯрдо рдореЗрдВ )
- {
- рдЕрдЧрд░ ( shut_itemред isClose )
- рдЬрд╛рд░реА рд░рдЦреЗрдВ ;
- рддрддреНрд╡ рдорд╛рд░реНрдХрд░ = рдмрдВрдж_рдЖрдЗрдЯрдоред рдорд╛рд░реНрдХрд░ ( ) ;
- рдпрджрд┐ ( рдорд╛рд░реНрдХрд░ рдкреНрд░рдХрд╛рд░ ред ) ! = ElementNonTerm )
- {
- closed_itemред isClose = true ;
- рдЬрд╛рд░реА рд░рдЦреЗрдВ ;
- }
- рдиреЙрдирдЯрд░реНрдорд┐рдирд▓ рдиреЙрдирдЯрд░реНрдо = рдорд╛рд░реНрдХрд░ред рдиреЙрдирдЯрд░реНрдо ( ) ;
- рдЖрдЗрдЯрдо = рдЕрдиреБрдкреНрд░рд╛рд╕ - > рдкрд╣рд▓рд╛ ( 0 , рдиреЙрдирдЯрд░реНрдо ) ;
- рдЬрдмрдХрд┐ ( рдЖрдЗрдЯрдоред рдЖрдЗрдЯрдо ) ( )
- {
- рдЕрдЧрд░ ( рдЖрдЗрдЯрдорд╕реЗрдЯ рдореМрдЬреВрдж рд╣реИ ) ( рдЖрдЗрдЯрдо )
- itemsetред рдЬреЛрдбрд╝реЗрдВ ( рдЖрдЗрдЯрдо ) ;
- рдЖрдЗрдЯрдоред рдЕрдЧрд▓рд╛ ( 0 , рдиреЙрдирдЯрд░реНрдо ) ;
- }
- closed_itemред isClose = true ;
- }
рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐ рд░рд╛рдЬреНрдп рдХреНрдпрд╛ рд╣реИрдВ, рд╣рдо рдЙрдирдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдПрдХ рдирдпрд╛ рдирд┐рдпрдо рдкреЗрд╢ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдЖрдзрд╛рд░ рд╣реИ рдФрд░ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЕрдВрдд рдореЗрдВ рдЖрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдкрд╣рд▓рд╛ рд░рд╛рдЬреНрдп, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЗрд╕ рдирд┐рдпрдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдЖрдЗрдЯрдо рдХрд╛ рд╕рдорд╛рдкрди рд╣реЛрдЧрд╛ рдФрд░ рдИ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдорд╛рд░реНрдХрд░ рдХреЗ рд╕рд╛рдеред рдЕрдм рд╣рдо рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдкрд░рд┐рдорд┐рдд рд░рд╛рдЬреНрдп рдорд╢реАрди рдХреА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╕рдВрдХреНрд░рдордг рдФрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рд╣рдо рд░рд╛рдЬреНрдп рдХреЛ рдкреНрд░рддреАрдХреЛрдВ рдХреА рдХрд╕реМрдЯреА рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рддреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬрд┐рд╕рд╕реЗ рдорд╛рд░реНрдХрд░ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 4 рд╕рдореВрд╣ рд╣реЛрдВрдЧреЗ- рдПрдл-рд╕рдореВрд╣, рдЯреА-рд╕рдореВрд╣, 0-рд╕рдореВрд╣ рдФрд░ 1-рд╕рдореВрд╣ред рдкреНрд░рддреНрдпреЗрдХ рд╕рдореВрд╣ рдПрдХ рдирдП рд░рд╛рдЬреНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреНрд░рдордг рд╣реИред рд╕рдВрдХреНрд░рдордг рд╕реЗ рдкрд╣рд▓рд╛ рд╕реВрдЪрдХрд╛рдВрдХ рд╡рд╣ рдкреНрд░рддреАрдХ рд╣реИ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдореВрд╣ (рдПрдл, рдЯреА, 0, 1)ред рджреВрд╕рд░рд╛ рд╕реВрдЪрдХрд╛рдВрдХ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рд╣реИред рдФрд░ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдореВрд▓реНрдп рд╡рд╣ рд╕реНрдерд┐рддрд┐ рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╣рдо рдкрд╛рд╕ рд╣реЛрдВрдЧреЗред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдореЗрдВ 4 рдирдП рд░рд╛рдЬреНрдп рдорд┐рд▓рддреЗ рд╣реИрдВред рдЙрдирдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ - рд╕рдореВрд╣ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдмрд┐рдВрджреБ рдкрд░ рд╣рдо рдорд╛рд░реНрдХрд░ рдХреЛ рдУрдВрдб рд╕реНрдерд┐рддрд┐ рдкрд░ рджрд╛рдИрдВ рдУрд░ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдореА рд╕реЗрдЯ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдирдпрд╛ рд░рд╛рдЬреНрдп рд╣реЛрдЧрд╛ред
- firstStateред рдЬреЛрдбрд╝реЗрдВ ( рдЖрдЗрдЯрдоред рдкрд╣рд▓реЗ ) ( ) ;
- firstStateред рдореЗрдХ рдХреНрд▓реЛрдЬрд░ ( ) ;
- рд░рд╛рдЬреНрдпреЛрдВред add ( firstState ) ;
- size_t state_idx = 0 ;
- рдЬрдмрдХрд┐ ( state_idx < рд░рд╛рдЬреНрдпреЛрдВ рдХрд╛ рдЖрдХрд╛рд░ ред )
- {
- рд░рд╛рдЬреНрдп * st = рд╕реНрдЯреЗрдЯреНрд╕ [ state_idx ] ;
- рд╕рдореВрд╣реАрдХреГрдд рд╕рдореВрд╣ = рд╕реЗрдВрдЯ - > рд╕рдореВрд╣ ( ) ;
- for ( group_class in group )
- {
- рдЕрдЧрд░ ( group_class - > рдкрд╣рд▓рд╛ред рдкреНрд░рдХрд╛рд░ ) ( = = ElementEnd )
- рдЬрд╛рд░реА рд░рдЦреЗрдВ ;
- рд╕реНрдЯреЗрдЯ рдиреНрдпреВрд╕реНрдЯреЗрдЯ ( рдФрд░ рдЖрдЗрдЯрдо, рд╕реНрдЯреЗрдЯреНрд╕ред рд╕рд╛рдЗрдЬ ( ) ) ;
- for ( group_item in group_class )
- newStateред рдЬреЛрдбрд╝реЗрдВ ( group_item, group_itemред MarkerInt ( ) + 1 ) ;
- newStateред рдореЗрдХ рдХреНрд▓реЛрдЬрд░ ( ) ;
- рд╕реНрдЯреЗрдЯ рдУрд▓реНрдбрд╕реНрдЯреЗрдЯ = рд╕реНрдЯреЗрдЯреНрд╕ред рдЦреЛрдЬреЗрдВ ( newState )
- рдЕрдЧрд░ ( рдкреБрд░рд╛рдирд╛ рд╣реИ )
- {
- рд░рд╛рдЬреНрдпреЛрдВред add ( newState ) ;
- fsmTableред рдЬреЛрдбрд╝реЗрдВ ( рд╕реЗрдВрдЯ, group_class - > рдкрд╣рд▓реЗ, newState ) ;
- }
- рдЕрдиреНрдпрдерд╛
- fsmTableред рдЬреЛрдбрд╝реЗрдВ ( рд╕реЗрдВрдЯ, group_class - > рдкрд╣рд▓реЗ, рдкреБрд░рд╛рдиреЗрд╕реНрдЯреЗрдЯ ) ;
- }
- State_idx ++ ;
- }
рд╕рдВрдХреНрд░рдордг рддрд╛рд▓рд┐рдХрд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рд╣реИ - рд╣рдо рд╕реНрддрдВрднреЛрдВ рдХреЛ рдПрдлрдПрд╕рдПрдо рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рд╕реВрдЪрдХ рдЧреИрд░-рдЯрд░реНрдорд┐рдирд▓ рд╣реИрдВред
рдПрдХреНрд╢рди рдЯреЗрдмрд▓ рдереЛрдбрд╝рд╛ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рдПрдлрдПрд╕рдПрдо рд╕реЗ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рднреА рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрджрд▓реЗ рдореЗрдВ, рдЯрд░реНрдорд┐рдирд▓ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХреЙрд▓рдо, рдЬрдмрдХрд┐ рд░рд╛рдЬреНрдп рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдкрд╛рд░реА рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдЬреЛ рдореВрд▓ рдЕрдВрддрд░рд┐рдХреНрд╖ рдпрд╛рди рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рджрд░реНрдЬ рдХреА рдЧрдИ рдереА, рддрд╛рд▓рд┐рдХрд╛ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд┐рд░ рд╣рдо рдПрдХ рдирдпрд╛ рдХреЙрд▓рдо '$' рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЬреЛ рдЗрдирдкреБрдЯ рд▓рд╛рдЗрди рдХреЗ рдЕрдВрдд рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдХреЙрд▓рдо рдореЗрдВ рд╣рдо рд╕реНрд╡реАрдХреГрдд рдШрдЯрдирд╛ рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЗрдВрдбреЗрдХреНрд╕-рд╕реНрдЯреЗрдЯ рдореЗрдВ рдЖрдЗрдЯрдо рд╣реИ
ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕рдлрд▓рддрд╛, рдкреНрд░рд╛рдердорд┐рдХ рдирд┐рдпрдо рдореЗрдВ рдмрджрд▓ рдЧрдИ рдФрд░ рдЙрд╕реА рд╕рдордп рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдЦрддреНрдо рд╣реЛ рдЧрдИред рдЗрд╕рдХреЗ рдмрд╛рдж рджреЛрд╖реА рдкрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╣реЛрддреА рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд░рд╛рдЬреНрдп рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдЖрдЗрдЯрдо рд╣реИ
, рдЬрд╣рд╛рдВ рдбрдмреНрд▓реНрдпреВ рдЯрд░реНрдорд┐рдирд▓реЛрдВ рдФрд░ рдЧреИрд░-рдЯрд░реНрдорд┐рдирд▓реЛрдВ рдХрд╛ рдХреЛрдИ рд╕рдВрдпреЛрдЬрди рд╣реИ, рд╣рдо рдкреВрд░реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ (рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╣рдорд╛рд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рдирд┐: рд╢реБрд▓реНрдХ рдХреЛрд╢рд┐рдХрд╛рдПрдВ рдЬреЛ рдЕрдиреНрдп рдЖрджреЗрд╢реЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрдмреНрдЬрд╛ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИрдВ) рдХрдо рдЖрджреЗрд╢, рдЙрд╕ рдЖрдЗрдЯрдо рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд┐рдпрдо рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рдеред
- fsmTableред FeedTransferTable ( рдЯреНрд░рд╛рдВрд╕рдлрд░рдЯреЗрдмрд▓ ) ;
- fsmTableред рдлреАрдбрдПрд╢рдирдЯреЗрдмрд▓ ( рдПрдХреНрд╢рдирдЯреЗрдмрд▓ ) ;
- рдордж рдЕрдВрдд рдЗрддрд┐рдореН = рдЖрдЗрдЯрдоред рдЧреЗрдЯ рдЗрдЯреЗрдо ( 1 , 'рдПрд╕' , рдПрд▓рд┐рдореЗрдВрдЯреНрд╕ ( "рдИ" , рдиреЙрдирдЯрд░реНрдо ) ) ;
- рдХреЗ рд▓рд┐рдП ( рд░рд╛рдЬреНрдпреЛрдВ рдореЗрдВ рд╕реЗрдВрдЯ )
- рдЕрдЧрд░ ( рд╕реЗрдВрдЯ рд╣реИред рдЗрдЯреЗрдо ( рдПрдВрдб рдЗрдЯреЗрдо ) )
- actionTableред рдЬреЛрдбрд╝реЗрдВ ( рд╕реЗрдВрдЯ, '$' , рдирдпрд╛ рдПрдХреНрд╢рди ( ) ) ;
- рдХреЗ рд▓рд┐рдП ( рд░рд╛рдЬреНрдпреЛрдВ рдореЗрдВ рд╕реЗрдВрдЯ )
- {
- рдЖрдЗрдЯрдо рд╕реВрдЪреА = рд╕реЗрдВрдЯред GetReducable ( ) ;
- рдХреЗ рд▓рд┐рдП ( рд╕реВрдЪреА рдореЗрдВ рд╕реВрдЪреА )
- actionTableред рдЬреЛрдбрд╝реЗрдВ ( рд╕реЗрдВрдЯ, рдирдИ рдХрд╛рд░реНрд░рд╡рд╛рдИ ( listItemред GetRule ( ) ) ) ;
- }
рд╕рд╛рд╣рд┐рддреНрдп
рдХрдореНрдкрд╛рдЗрд▓рд░: рд╕рд┐рджреНрдзрд╛рдВрдд, рддрдХрдиреАрдХ рдФрд░ рдЙрдкрдХрд░рдг, 1986, рдЕрд▓реНрдлреНрд░реЗрдб рд╡реАред рдЕрд╣реЛ, рд░рд╡рд┐ рд╕реЗрдареА, рдЬреЗрдлрд░реА рдбреАред рдЙрд▓реНрдореИрди