рдордВрдЪреЛрдВ рдкрд░ рдЖрдк "рдореЗрд░реА рдЖрджрд░реНрд╢ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреИрд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ" рд╢реНрд░реЗрдгреА рдХреЗ рд╡рд┐рд╖рдпреЛрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╡реНрдпрд╛рдХрд░рдг рдмрдирд╛рддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрднреА рднреА рдХреЛрдб рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдХрдЯреМрддреА рдХреЗ рддрд╣рдд рдХрдИ рдЦрддрд░реЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдирдИ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп, рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг, рд▓рдЪреАрд▓реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рдбреЗрд╡рд▓рдкрд░ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред
рдЪрд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд╡реНрдпрд╛рдХрд░рдг - рднрд╛рд╖рд╛ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд┐рд╡рд░рдгред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрдЦреНрдпрд╛рдУрдВ рдФрд░ рдкреНрд▓рд╕ рдЪрд┐рд╣реНрди рд╕реЗ рдпреБрдХреНрдд рднрд╛рд╡реЛрдВ рдХрд╛ рд╡реНрдпрд╛рдХрд░рдг:
рд╕реВрдЪреА -> рд╕реВрдЪреА + рдЕрдВрдХ
рд╕реВрдЪреА -> рдЕрдВрдХ
рдЕрдВрдХ -> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9рдЙрджрд╛рд╣рд░рдг: 9 + 5
рдРрд╕рд╛ рд╡реНрдпрд╛рдХрд░рдг рдЕрд╕рдВрджрд┐рдЧреНрдз рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐, рдЗрдирдкреБрдЯ рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ (9 + 5 + 7) рдкрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЗрд╕ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдкрд╛рд░реНрд╕ рдЯреНрд░реА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 9 + 5 + 7 рдХреЛ рдХреЗрд╡рд▓ (9 + 5) + 7 рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ 9 + (5 + 7) рдпрд╛ рдЕрдиреНрдпрдерд╛ рдирд╣реАрдВред рд╡реНрдпрд╛рдХрд░рдг рдореЗрдВ рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреА рдЕрд╕реНрдкрд╖реНрдЯрддрд╛рдПрдБ рд╣реИрдВред
1. рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдФрд░ рд╕рдВрдЧрддрд┐ рдХреА рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ред
рдПрдХ рдЕрд╕реНрдкрд╖реНрдЯ рд╡реНрдпрд╛рдХрд░рдг рдХрд╛ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд▓реЗрдВ:
рдИ -> рдИ + рдИ | рдИ * рдИ | (рдИ) | рдЖрдИрдбреАрдЖрдИрдбреА рд╕рд┐рд░реНрдл рдПрдХ рдирдВрдмрд░ рд╣реИред рдРрд╕рд╛ рд╡реНрдпрд╛рдХрд░рдг рдкреНрд░рдкрддреНрд░ рдХреЗ рднрд╛рд╡реЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ: (реп + рел) * рей рдпрд╛ рей * рек + But. рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдЗрдирдкреБрдЯ рдкрд░ рез + реи * рей рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ? рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ (1 + 2) * 3 = 3 * 3 = 9. рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдирд╛ рд╣реИ:
рдИ -> рдИ + рдЯреА | рдЯреА
рдЯреА -> рдЯреА * рдПрдл | рдПрдл
рдПрдл -> (рдИ) | рдЖрдИрдбреАрд╕рд╣рд╛рдиреБрднреВрддрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕реНрдерд┐рддрд┐ред рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 1 + 2 + 3 + 4 рд▓реЗрдВред
рд╕реВрдЪреА -> рд╕реВрдЪреА + рдЕрдВрдХ рдХреЗ рд╕рд╛рде рдПрдХ рд╡реНрдпрд╛рдХрд░рдг рдХреЗ рд╕рд╛рде
, рд╣рдо рдкрд╛рд░реНрд╕рд┐рдВрдЧ ((1 + 2) + 3) + 4 рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░
рд╕реВрдЪреА рдХреЗ рд╕рд╛рде
-> рдЕрдВрдХ + рд╕реВрдЪреА рд╣рдореЗрдВ 1 + (2 + (3 + 4)) рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИред
2. "рдШреБрдордВрддреВ" рдХреА рдЕрд╕реНрдкрд╖реНрдЯрддрд╛
рдПрдХ рд╡реНрдпрд╛рдХрд░рдг рд╣реИ:
stmt -> рдпрджрд┐ expr рддреЛ stmt рдФрд░ stmt
| рдЕрдЧрд░ expr рддреЛ stmt
| рдЕрдиреНрдпрдпрд╣ рдХреЗрд╡рд▓ рддрддреНрдХрд╛рд▓реАрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╡реНрдпрд╛рдХрд░рдг рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЕрдВрдХрди рд╕рдВрднрд╡ рд╣реИ:
рдЕрдЧрд░ expr1 рддреЛ expr2 рддреЛ smth1 рдФрд░ рдлрд┐рд░ smth2ред
рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдпрд╣ рддрдп рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдкрд╣рд▓реА рд╢рд░реНрдд рдпрд╛ рджреВрд╕рд░реА рд╣реИред рдмреЗрд╢рдХ, рдпрд╣ рдмреНрд░реИрдХреЗрдЯ рд░рдЦрдХрд░ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
рдЕрдЧрд░ expr1 рддреЛ {рдЕрдЧрд░ expr2 рддреЛ smth1 рдФрд░ smth2}
рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдЖрдкрдХреА рднрд╛рд╖рд╛ рдХреЗ рдЕрдиреНрдп рдирд┐рд░реНрдорд╛рдгреЛрдВ рдореЗрдВ рднреА рджрд┐рдЦрд╛рдИ рджреЗ рд╕рдХрддреА рд╣реИред рдпрд╣ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЕрдВрддрд┐рдо рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рд╕рдорд╛рдзрд╛рди:
stmt -> рдорд┐рд▓рд╛рди рдХрд┐рдпрд╛ рд╣реБрдЖ_stmt
| unmathced_stmt
matched_stmt -> рдЕрдЧрд░ expr рддреЛ matched_stmt рдФрд░ рдлрд┐рд░ рдорд┐рд▓рд╛рди рдХрд┐рдпрд╛_stmt
| рдЕрдиреНрдп
unmathced_stmt -> рдпрджрд┐ expr рддреЛ stmt
| рдпрджрд┐ expr рддрдм рдорд┐рд▓рд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛_stmt рдФрд░ рдЕрдирдордереЗрдб_stmt рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИрд╡реНрдпрд╛рдХрд░рдг рдХрд╛ рдЕрд░реНрде рдпрд╣ рд╣реИ рдХрд┐ рддрддреНрдХрд╛рд▓реАрди рдФрд░ рдЕрдиреНрдп рдХреЗ рдмреАрдЪ рдХрд╛ рдирд┐рд░реНрджреЗрд╢ "рдорд┐рд▓рд╛рди" рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрд░реНрдерд╛рддреН, рдпрд╣ рддрддреНрд╕рдордп рдФрд░ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
3. рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЛрдВ рдХреЗ рд╡рд┐рд╢реЗрд╖ рдЙрддреНрдкрд╛рджреЛрдВ рдХреА рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ред
рдПрдХ рдЕрд╕реНрдкрд╖реНрдЯ рд╡реНрдпрд╛рдХрд░рдг рд╣реИ:
рдИ -> рдИ func1 рдИ func2 рдИ
рдИ -> рдИ func1 рдИ
рдИ -> рдИ рдлрдВрдХ 2 рдИ
рдИ -> (рдИ)
рдИ -> рд╕реАc рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд╣реИред рдирддреАрдЬрддрди, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 2 рдлрд╝рдВрдХреНрд╢рди рд╣реИрдВ рдЬреЛ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рдХреЛрд╖реНрдардХ рд▓рдЧрд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рднреА рд╣реИ, рдФрд░ func1 рдФрд░ func2 рдХреА рдХреНрд░рдорд┐рдХ рдЧрдгрдирд╛ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рд╡рд┐рд╢реЗрд╖ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╢рд╛рдпрдж рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ рдирд┐рдпрдо рд╡рд╣рд╛рдВ рдкреНрд░рднрд╛рд╡ рдореЗрдВ рдЖрддреЗ рд╣реИрдВ)ред рд▓рд╛рдЗрди рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╕рдордп рд╕рдВрдШрд░реНрд╖ рдЙрддреНрдкрдиреНрди рд╣реЛрдЧрд╛:
5 func1 7 func2 9
рд╡рд┐рд╢реНрд▓реЗрд╖рдХ
рдИ -> рдИ func1 рдИ func2 рдИ рдФрд░
рдИ -> рдИ func1 рдИ рдХреЗ рдмреАрдЪ рдЪрдпрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдирдВрдмрд░ 7 рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рджред рдЖрдЙрдЯрдкреБрдЯ рдЪрд░рдг 1 рдореЗрдВ рд╕рдорд╛рди рд╣реИред
рдЕрддрд┐рд░рд┐рдХреНрдд рдЪрд░ рджрд░реНрдЬ рдХрд░рдирд╛ рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдЖрдк рдПрдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдмрдбрд╝реА рддрд╛рд▓рд┐рдХрд╛ (рдкрд╛рд╕реНрдХрд▓ рдХреЗ рд▓рд┐рдП, рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ 100,000 рдкрдВрдХреНрддрд┐рдпреЛрдВ рд╕реЗ рдорд┐рд▓рдХрд░ рд▓рдЧрддрд╛ рд╣реИ) рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рдордп рдФрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдореИрдВрдиреЗ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдПрдХ рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╕рдореВрд╣ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рд╣рдорд╛рд░реА рдЕрдкрдиреА рднрд╛рд╖рд╛ рдХрд╛ рд╡реНрдпрд╛рдХрд░рдг рд▓рд┐рдЦрддреЗ рд╕рдордп, рдПрд▓рдПрд▓ рдФрд░ рдПрд▓рдЖрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рд╡рд┐рд╖рдпреЛрдВ рдкрд░ рд╕реНрдкрд░реНрд╢ рдХрд┐рдП рдмрд┐рдирд╛, рдмрд╛рдПрдВ / рджрд╛рдПрдВ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐, рдЖрджрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛрддрд╛
рд╣реИ ред рдмрд╛рдИрдВ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг
рдпрд╣рд╛рдВ рд╣реИ ред
рд╕реВрддреНрд░реЛрдВ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ:
рдЕрд▓реНрдлреНрд░реЗрдб рдЕрд╣реЛ, рд░рд╡рд┐ рд╕реЗрдЯреА, рдЬреЗрдлрд░реА рдЙрд▓реНрдореИрди "рдХрдВрдкрд╛рдЗрд▓рд░реНрд╕: рдкреНрд░рд┐рдВрд╕рд┐рдкрд▓реНрд╕, рдЯреЗрдХреНрдиреЛрд▓реЙрдЬреАрдЬ, рдЯреВрд▓реНрд╕"