рдХреБрдЫ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рдХрд┐рд╕реА рдиреЗ рдореБрдЭрд╕реЗ рдкреВрдЫрд╛ рдХрд┐ рдХреНрдпрд╛ рдкрд╛рдпрдерди рдХреЛ рдПрдХ рдкреАрдИрдЬреА рдкрд╛рд░реНрд╕рд░ (рдпрд╛ рдПрдХ рдкреА рд╡реНрдпрд╛рдХрд░рдг рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ) рдореБрдЭреЗ рдареАрдХ рд╕реЗ рдпрд╛рдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХрдм рдФрд░ рдХрд┐рд╕рдиреЗ рдХрд┐рдпрд╛ рдерд╛)ред рдлрд┐рд░ рдореИрдВрдиреЗ рдЙрд╕рдХреА рддрд░рдл рдереЛрдбрд╝рд╛ рджреЗрдЦрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдХрд┐рд╕реА рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдирд╣реАрдВ рдЖрдпрд╛ рдФрд░ рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЦреВрдВрдЯреА (рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдЧреНрд░рд╛рдорд░, рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдЧреНрд░рд╛рдорд░) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХреА, рдФрд░ рдЕрдм рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрд╡-рд▓рд┐рдЦрд┐рдд рдкрд╛рд░реНрд╕рд░ рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рдХрд▓реНрдк рд╣реИ рдЬреЛ 30 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрдм рдореИрдВ рд╕рд┐рд░реНрдл рдкрд╛рдпрдерди рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдореИрдВрдиреЗ рдЗрд╕реЗ "рдкрдЧреЗрди" рдХрд╣рд╛, рдФрд░ рдпрд╣ рд╕рдВрднрд╡рдд: рдкрд╣рд▓рд╛ рдХреЛрдб рдерд╛ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдкрд╛рдпрдерди рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдерд╛ред
рдкрд╛рдпрдерди рдЦреВрдВрдЯреА рдкрд╛рд░реНрд╕рд░ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕рд╛рдордЧреНрд░реА рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдореИрдВ рдкреАрдИрдЬреА рдкрд╛рд░реНрд╕рд░ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд▓реЗрддрд╛ рд╣реВрдВ рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рдкреИрдЬрди рдХреА рд╕реАрдорд╛рдУрдВ рд╕реЗ рдХреБрдЫ рд╣рдж рддрдХ рдкрд░реЗрд╢рд╛рди рд╣реВрдВред рдпрд╣ рдПрд▓рдПрд▓ (1) рдХреЗ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХрдИ рдзрд╛рд░рдгрд╛рдПрдВ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╡реНрдпрд╛рдХрд░рдг рдХреЗ рдирд┐рдпрдореЛрдВ рдХреЛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬреЛ рдЦрд╛рд▓реА рд▓рд╛рдЗрдиреЗрдВ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рдереЗ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдордирд╛ рдХрд┐рдпрд╛ред рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдЯреЗрдмрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ред рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдИрдмреАрдПрдирдПрдл-рдЬреИрд╕реЗ рд╡реНрдпрд╛рдХрд░рдг рдЕрдВрдХрди рдХрд╛ рднреА рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛, рдЬреЛ рдореБрдЭреЗ рдЕрднреА рднреА рдкрд╕рдВрдж рд╣реИред
рдпрд╣рд╛рдБ pgen рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ рдЬреЛ рдореБрдЭреЗ рдкрд░реЗрд╢рд╛рди рдХрд░рддреА рд╣реИрдВред LL (1) рдирд╛рдо рдореЗрдВ "1" рдХрд╛ рддрд╛рддреНрдкрд░реНрдп рд╣реИ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдЕрдЧрд▓реЗ рдЯреЛрдХрди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЕрдЪреНрдЫреЗ рд╡реНрдпрд╛рдХрд░рдг рдХреЗ рдирд┐рдпрдо рдмрдирд╛рдиреЗ рдХреА рд╣рдорд╛рд░реА рдХреНрд╖рдорддрд╛ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд╛рдпрдерди рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдпрд╛ рдПрдХ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ (рдпрд╛ рдХреБрдЫ рдФрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рд╕рднреА рдПрдХ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдП рдЧрдП рдХреАрд╡рд░реНрдб рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ if
рдпрд╛ def
)ред рдореИрдВ pgen рд╕рдВрдХреЗрддрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдЬреЛ рдкрд╛рдпрдерди рдХрд╛ рд╕рдмрд╕реЗрдЯ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдорддреМрд░ рдкрд░ рднрд╛рд╖рд╛ рдбрд┐рдЬрд╛рдЗрди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╕рдордп рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдЦрд┐рд▓реМрдирд╛ рд╡реНрдпрд╛рдХрд░рдг рд╣реЛрдЧрд╛ рдЬреЛ рдЖрдЧреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдЖрдПрдЧрд╛ред
statement: assignment | expr | if_statement expr: expr '+' term | expr '-' term | term term: term '*' atom | term '/' atom | atom atom: NAME | NUMBER | '(' expr ')' assignment: target '=' expr target: NAME if_statement: 'if' expr ':' statement
рдЕрдВрдХрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрдж: NAME
рдФрд░ NUMBER
рдЯреЛрдХрди рд╣реИрдВ рдФрд░ рд╡реНрдпрд╛рдХрд░рдг рдХреЗ рдмрд╛рд╣рд░ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИрдВред '+'
рдпрд╛ 'if'
рдЯрд╛рдЗрдк рдХреЗ рдЙрджреНрдзреГрдд рддрд╛рд░ рднреА рдЯреЛрдХрди рд╣реИрдВред (рдЖрдЗрдП рдЕрдЧрд▓реА рдмрд╛рд░ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реБрдП рд╕реНрдердЧрд┐рдд рдХрд░реЗрдВ) рд╡реНрдпрд╛рдХрд░рдг рдХреЗ рдирд┐рдпрдо рдирд┐рдпрдо рдХреЗ рдирд╛рдо рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ, рдЙрд╕рдХреЗ рдмрд╛рдж :
рдФрд░ рдлрд┐рд░ рдПрдХ рдпрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╡рд┐рдХрд▓реНрдк, рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ |
ред
рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рд╡реНрдпрд╛рдХрд░рдг рдХрд╛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреИрдЬрди рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдХреБрдЫ рдирд┐рдпрдореЛрдВ ( expr
рдФрд░ term
) рдХреЛ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╡рд╣ рдРрд╕реА рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрдорд╛рд░реНрдЯ рдирд╣реАрдВ рд╣реИред рдЖрдорддреМрд░ рдкрд░ рдпрд╣ рдХреЗрд╡рд▓ рдЗрди рдирд┐рдпрдореЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдиреНрдп рдирд┐рдпрдореЛрдВ рдХреЛ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
expr: term ('+' term | '-' term)* term: atom ('*' atom | '/' atom)*
рдпрд╣ pgen рдореЗрдВ EBNF рдХреА рдХрдИ рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдкреНрд░рдХрдЯ рдХрд░рддрд╛ рд╣реИ: рдЖрдк рдХреЛрд╖реНрдардХ рдореЗрдВ рд╡рд┐рдХрд▓реНрдк рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рддрддреНрд╡ рдХреЗ рдмрд╛рдж *
рд░рдЦрдХрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рддреЛ рдпрд╣рд╛рдБ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдо рдХрд╛ рдЕрд░реНрде рд╣реИ "рдпрд╣ рдПрдХ рд╢рдмреНрдж рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдЕрдиреБрдХреНрд░рдо рдХреЗ рд╢реВрдиреНрдп рдпрд╛ рдЕрдзрд┐рдХ рджреЛрд╣рд░рд╛рд╡ рд╣реИрдВ <рдЕрд╡рдзрд┐ рдкреНрд▓рд╕ рдпрд╛ рд╢реВрдиреНрдп, рдЗрд╕рдХреЗ рдмрд╛рдж рд╢рдмреНрдж>"ред рдпрд╣ рд╡реНрдпрд╛рдХрд░рдг рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рднрд╛рд╖рд╛ рд▓реЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╕реЗ рдпрд╣ рднрд╛рд╖рд╛ рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдЗрд░рд╛рджреЗ рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдпрд╣ рдирд╣реАрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдСрдкрд░реЗрдЯрд░ рдмрд╛рдИрдВ рдУрд░ рдмрдВрдзреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдЬрдм рдЖрдк рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реЛрдВред
рд▓реЗрдХрд┐рди рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдПрдХ рдФрд░ рдХрд╖реНрдЯрдкреНрд░рдж рд╕рдорд╕реНрдпрд╛ рд╣реИ (рдФрд░ рдкрд╛рдпрдерди рдореЗрдВ рднреА)ред рдХреЗрд╡рд▓ рдПрдХ рдЯреЛрдХрди рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдХреНрдпрд╛ рджреЗрдЦ рд░рд╣рд╛ рд╣реИ - рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдпрд╛ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреА рд╢реБрд░реБрдЖрддред рдСрдкрд░реЗрдЯрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдкрд╛рд░реНрд╕рд░ рдХреЛ рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рдЯреЛрдХрди рдкрд░ рдирд┐рд░реНрдгрдп рд▓реЗрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдЗрд╕реЗ рдкрд╛рд░ рдХрд░рддрд╛ рд╣реИред (рдХреНрдпреЛрдВ? рдпрд╣ рдХреИрд╕реЗ pgen рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдкрд╛рд░реНрд╕ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ) рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
answer = 42
рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо рддреАрди рдЯреЛрдХрди рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ: NAME
( answer
рдорд╛рди рдХреЗ рд╕рд╛рде), =
рдФрд░ NUMBER
(рдорд╛рди 42
рд╕рд╛рде)ред рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рд╣рдореЗрдВ рдкрддрд╛ рд╣реИ, рдкрд╣рд▓рд╛ NAME
рдЯреЛрдХрди рд╣реИред рдЬрд┐рд╕ рдирд┐рдпрдо рдХреЛ рд╣рдо рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ statement
(рд╡реНрдпрд╛рдХрд░рдг рдХрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рд┐рддреНрд░) рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рддреАрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: expr
, assignment
рдФрд░ if_statement
ред рд╣рдо рддреБрд░рдВрдд if_statement
рдмрд╛рд╣рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдкрд┐рдЫрд▓реЗ рдЯреЛрдХрди if
рдирд╣реАрдВ if
ред рд▓реЗрдХрд┐рди expr
рдФрд░ assignment
рджреЛрдиреЛрдВ NAME
рдЯреЛрдХрди рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рдХреЗ рдХрд╛рд░рдг, pgen рд╣рдорд╛рд░реЗ рд╡реНрдпрд╛рдХрд░рдг рдХреЛ рдЕрд╕реНрдкрд╖реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣реА рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рд╡реНрдпрд╛рдХрд░рдг рд╕реНрд╡рдпрдВ рдирд╣реАрдВ рд╣реИ; рдореБрдЭреЗ рдПрдХ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд╕реВрддреНрд░реАрдХрд░рдг рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдЗрдП рд╣рдо рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВред рдФрд░ pgen рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ? рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрд╛рдХрд░рдг рдирд┐рдпрдо рдХреЗ рд▓рд┐рдП рдПрдХ FIRST рд╕реЗрдЯ рдирд╛рдордХ рдХреБрдЫ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рд╡реЗ рдкреНрд░рддрд┐рдЪреНрдЫреЗрдж рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддрд╛ рд╣реИред
рддреЛ, рдХреНрдпрд╛ рд╣рдо рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдмрдбрд╝реЗ рджреЗрдЦрдиреЗ рд╡рд╛рд▓реЗ рдмрдлрд░ рдХреЗ рд╕рд╛рде рдкрд╛рд░реНрд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рдХреЗ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рджреВрд╕рд░рд╛ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдЯреЛрдХрди рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рд╡реНрдпрд╛рдХрд░рдг рдореЗрдВ рджреВрд╕рд░рд╛ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдЯреЛрдХрди =
рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдкрд╛рдпрдерди рдЬреИрд╕реА рдЕрдзрд┐рдХ рдпрдерд╛рд░реНрдерд╡рд╛рджреА рднрд╛рд╖рд╛ рдореЗрдВ, рдЖрдкрдХреЛ рдЕрд╕реАрдорд┐рдд рдмрдлрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рд╛рдордЧреНрд░реА рдХреЗ рдмрд╛рдИрдВ рдУрд░ =
рдЯреЛрдХрди =
рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдЬрдЯрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
table[index + 1].name.first = 'Steven'
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ =
рд╣рдорд╛рд░реЗ рдорд┐рд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рджрд╕ рдЯреЛрдХрди рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗред рд▓реЗрдХрд┐рди рдореИрдВ рдЖрдкрдХреЛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВ, рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИред Pgen рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рд╡реНрдпрд╛рдХрд░рдг рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рддрд╛рдХрд┐ рдпрд╣ рдХреБрдЫ рдЧрд▓рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд▓реЗ, рдмрд╛рдж рдХреЗ рдкрд╛рд╕ рдореЗрдВ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЪреЗрдХ рдЬреЛрдбрд╝ рджреЗред рдпрджрд┐ рдпрд╣ рдмрд╛рдИрдВ рдФрд░ рджрд╛рдИрдВ рдУрд░ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛ рд╕рдХрддрд╛ рд╣реИ рддреЛ рдпрд╣ рд╕рд┐рдВрдЯреЗрдХреНрд╕ рдПрд░рд░ рдПрд░рд░ рдлреЗрдВрдХ рджреЗрдЧрд╛ред рд╣рдорд╛рд░реА рдЦрд┐рд▓реМрдирд╛ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрддрд╛ рд╣реИ:
statement: assignment_or_expr | if_statement assignment_or_expr: expr ['=' expr]
рд╡рд░реНрдЧрд╛рдХрд╛рд░ рдХреЛрд╖реНрдардХ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рднрд╛рдЧ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдФрд░ рдлрд┐рд░ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рдЕрдЧрд▓реЗ рдкрд╛рд╕ (рдХрд╣рддреЗ рд╣реИрдВ, рдмрд╛рдЗрдЯ-рдХреЛрдб рдЬрдирд░реЗрд╢рди) рдкрд░, рд╣рдо рдЬрд╛рдБрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рд╣рдо рдЬрд╛рдБрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдмрд╛рдИрдВ рдУрд░ target
рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред
рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рд╣реИред рд╣рдо рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдлрд┐рд░ рд╕реЗ, рдкрд╛рдпрдерди рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд░рд▓реАрдХреГрдд рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ):
call: atom '(' arguments ')' arguments: arg (',' arg) * arg: posarg | kwarg posarg: expr kwarg: NAME '=' expr
рд▓реЗрдХрд┐рди рдПрдХ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЬреЛ рдХреЗрд╡рд▓ рдЕрдЧрд▓реЗ рдЯреЛрдХрди рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ, рдкрд╛рд░реНрд╕рд░ рдХреЛ рдпрд╣ рдирд╣реАрдВ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рддрд░реНрдХреЛрдВ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ posarg
рдХреА рд╢реБрд░реБрдЖрдд рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ posarg
NAME
рд╢реБрд░реВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ) рдпрд╛ kwarg
рдХреА рд╢реБрд░реБрдЖрддред рдлрд┐рд░, рд╡рд░реНрддрдорд╛рди рдкрд╛рдпрдерди рдкрд╛рд░реНрд╕рд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдХреЗ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ:
arg: expr ['=' expr]
рдФрд░ рдлрд┐рд░ рдмрд╛рдж рдХреЗ рд╕рдВрдХрд▓рдХ рдкрд╛рд╕ рдореЗрдВ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред (рд╣рдордиреЗ рднреА рдереЛрдбрд╝реА рд╕реА рдЧрд▓рддреА рдХреА рдФрд░ foo((a) = 1)
рдХреЛ foo(a = 1)
рддрд░рд╣ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ред рдпрд╣ рдХреЗрд╡рд▓ рдкрд╛рдпрдерди 3.8 рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рддреЛ рдПрдХ рдкреАрдИрдЬреА рдкрд╛рд░реНрд╕рд░ рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ? рдПрдХ рдЕрдирдВрдд рдмреИрдХрдЕрдк рдмрдлрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛! рдЗрд╕рдХрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рддрдерд╛рдХрдерд┐рдд рдкреИрдХреНрд░реИрдЯ рдкрд╛рд░реНрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рди рдХреЗрд╡рд▓ рдЗрд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреВрд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рд╡рд╛рдкрд╕ рдЯреЛрдХрди рдХреА рдордирдорд╛рдиреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд░реЛрд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ PEG рд╢рдмреНрдж рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╡реНрдпрд╛рдХрд░рдгрд┐рдХ рд╕рдВрдХреЗрддрди рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ, PEG рд╡реНрдпрд╛рдХрд░рдг рд╕реЗ рдЙрддреНрдкрдиреНрди рдкрд╛рд░реНрд╕рд░ рдЖрдорддреМрд░ рдкрд░ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╡рдВрд╢ рдФрд░ рдЕрд╕реАрдорд┐рдд рд╡рд╛рдкрд╕реА рдХреЗ рд╕рд╛рде рдкрд╛рд░реНрд╕рд░ рд╣реЛрддреЗ рд╣реИрдВред рдкреИрдХрд░рдЯ рдкрд╛рд░реНрд╕рд░ рдЙрди рдирд┐рдпрдореЛрдВ рдХреЛ рдпрд╛рдж рдХрд░рдХреЗ рдХреБрд╢рд▓ рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрджреЛрдВ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рд╣реИрдВред
рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдХреАрдордд рд╣реИ: рдореЗрдореЛрд░реАред рддреАрд╕ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рдореЗрд░реЗ рдкрд╛рд╕ рдПрд▓рдПрд▓ (1) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдХрд╛рд░рдг рдерд╛: рд╕реНрдореГрддрд┐ рдорд╣рдВрдЧреА рдереАред рд╡рд╣ (рдЕрдиреНрдп рддрдХрдиреАрдХреЛрдВ рдЬреИрд╕реЗ рдПрд▓рдПрдПрд▓рдЖрд░ (1), рдЬрд┐рд╕реЗ рд╡рд╛рдИрдПрд╕реАрд╕реА рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕рд┐рджреНрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рдПрдХ рдХреБрд╢рд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкрд╛рд░реНрд╕ рдЯреНрд░реА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рд╛рдЬреНрдп рдорд╢реАрди рдФрд░ рд╕реНрдЯреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рд╕реАрдкреАрдереЙрди рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдореЗрдВ 30 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдореЗрдореЛрд░реА рд╣реИ, рдФрд░ рдкреВрд░реА рдлрд╛рдЗрд▓ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд░рдирд╛ рдЕрдм рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, stdlib рдореЗрдВ рд╕рдмрд╕реЗ рдмрдбрд╝реА рдЧреИрд░-рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рдЬреЛ рдореБрдЭреЗ рдорд┐рд▓ рд╕рдХрддреА рд╣реИ _pydecimal.py
рд╣реИ _pydecimal.py
, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ 223kb рд▓рдЧрддреЗ рд╣реИрдВред рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ, рдпрд╣ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдиреЗ рдореБрдЭреЗ рдкрд╛рд░реНрд╕рд░реНрд╕ рдкрд░ рдПрдХ рдЕрд▓рдЧ рдирдЬрд╝рд░ рдбрд╛рд▓рд╛ред
рд▓реЗрдХрд┐рди рдореМрдЬреВрджрд╛ рд╕реАрдкреАрдереЙрди рдкрд╛рд░реНрд╕рд░ рдореЗрдВ рдПрдХ рдФрд░ рдмрд╛рдд рд╣реИ рдЬреЛ рдореБрдЭреЗ рдкрд░реЗрд╢рд╛рди рдХрд░рддреА рд╣реИред рдХрдВрдкрд╛рдЗрд▓рд░ рдЬрдЯрд┐рд▓ рдЪреАрдЬреЗрдВ рд╣реИрдВ, рдФрд░ рд╕реАрдкреАрдереЙрди рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рд╣реИред рдпрджреНрдпрдкрд┐ рдкреИрдЬреЗрди рдкрд╛рд░реНрд╕рд░ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдПрдХ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдЯреНрд░реА рд╣реИ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реАрдзреЗ рдмрд╛рдпрдЯреЗрдХреЛрдб рдЬрдирд░реЗрдЯрд░ рдХреЗ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдЗрд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╕рд╛рд░ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЯреНрд░реА (рдПрдПрд╕рдЯреА) рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдЗрд╕ рдПрдПрд╕рдЯреА рдХреЛ рдмрд╛рдпрдЯреЗрдХреЛрдб рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдФрд░ рднреА рдЬрдЯрд┐рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдм рд╣рдо рд╡рд┐рд╡рд░рдг рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдПрдВрдЧреЗ)
рдХреНрдпреЛрдВ рдирд╣реАрдВ рддреБрд░рдВрдд рдПрдХ рдкреЗрдбрд╝ рд╕реЗ рд╕рдВрдХрд▓рди? рдареАрдХ рдпрд╣реА рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕рд╛ рдерд╛, рд▓реЗрдХрд┐рди рд▓рдЧрднрдЧ 15 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдХрдВрдкрд╛рдЗрд▓рд░ рдЕрдзреВрд░рд╛ рдерд╛ред рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдПрдПрд╕рдЯреА рдФрд░ рдПрдПрд╕рдЯреА рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдЪрд░рдг рдХреЛ рдкрд╛рд░реНрд╕ рдкреЗрдбрд╝ рд╕реЗ рдЕрд▓рдЧ-рдерд▓рдЧ рдХрд░ рджрд┐рдпрд╛ред рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдкрд╛рдпрдерди рд╡рд┐рдХрд╕рд┐рдд рд╣реБрдЖ, рдПрдПрд╕рдЯреА рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд╕реЗ рдЕрдзрд┐рдХ рд╕реНрдерд┐рд░ рд╣реЛрддрд╛ рдЧрдпрд╛, рдЬрд┐рд╕рд╕реЗ рдХрдВрдкрд╛рдЗрд▓рд░ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрдо рд╣реЛрддреА рдЧрдИред
рдПрдПрд╕рдЯреА рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рднреА рдЖрд╕рд╛рди рд╣реИ рдЬреЛ рдкрд╛рдпрдерди рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ рд▓реЛрдХрдкреНрд░рд┐рдп ast
рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдЦрд░реЛрдВрдЪ рд╕реЗ рдиреЛрдбреНрд╕ рдмрдирд╛рдиреЗ рдФрд░ рдореМрдЬреВрджрд╛ рд╡рд╛рд▓реЗ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рднрд╛рдЧреЛрдВ рдХреЛ рдмрд╛рдпрдЯреЗрдХреЛрдб рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдиреЗ рдкрд╛рдпрдерди рдХреЗ рд▓рд┐рдП рднрд╛рд╖рд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдПрдХ рдкреВрд░реЗ рдЙрджреНрдпреЛрдЧ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рдЕрдиреБрдорддрд┐ рджреАред (рдкрд╛рд░реНрд╕ рдЯреНрд░реА рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рдпрдерди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рднреА рд╕реБрд▓рдн рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИ; рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдЗрддрдирд╛ рд▓реЛрдХрдкреНрд░рд┐рдп рдирд╣реАрдВ рд╣реИ)
рдЕрдм рдореИрдВ рдЗрди рдЪреАрдЬреЛрдВ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдо CPython рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдкрд╛рд░реНрд╕рд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ PEG рдФрд░ рдкреИрдХрд░реИрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реАрдзреЗ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рджреМрд░рд╛рди AST рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рдордзреНрдпрд╡рд░реНрддреА рдкреЗрдбрд╝ рдХреА рдкреАрдврд╝реА рдХреЛ рдЫреЛрдбрд╝рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛, рдЬреЛ рдЯреЛрдХрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдирдВрдд рдмрдлрд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рд╣рдореЗрдВ рд╕реНрдореГрддрд┐ рдХреЛ рдмрдЪрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдЕрднреА рднреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣реВрдБ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╣реИ рдЬреЛ рд╡рд░реНрддрдорд╛рди CPython рдкрд╛рд░реНрд╕рд░ рдХреЗ рд╕рдорд╛рди рдЧрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ AST рдореЗрдВ рдкрд╛рдпрдерди рдХреЗ рд╕рдмрд╕реЗрдЯ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдЕрдзрд┐рдХ рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдмрд╕реЗрдЯ рдХреЛ рдкреВрд░реНрдг рднрд╛рд╖рд╛ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкреАрдИрдЬреА рдкрд╛рд░реНрд╕рд░ рдзреАрдорд╛ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдореИрдВрдиреЗ рдХрд┐рд╕реА рднреА рдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреВрдВрдЧрд╛ред
рдкреАрдИрдЬреА рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХрд╛ рдЕрдВрддрд┐рдо рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рднрд╛рд╖рд╛ рдХреЗ рдЖрдЧреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛рдкрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЕрддреАрдд рдореЗрдВ, рдпрд╣ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдкрдЧреЗрди рдореЗрдВ рдПрд▓рдПрд▓ (1) рдмрд╛рдзрд╛рдУрдВ рдиреЗ рдкрд╛рдпрдерди рд╡реНрдпрд╛рдХрд░рдг рдХреЛ рд╕рд░рд▓ рд░рдЦрд╛ред рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдЪ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рднрд╛рд╖рд╛ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣реИрдВ (рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдкреАрдИрдкреА рдкреНрд░рдХреНрд░рд┐рдпрд╛, рдЬреЛ рдмрд╣реБрдд рд╕рдЦреНрдд рдкрд┐рдЫрдбрд╝реА рд╕рдВрдЧрддрддрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдФрд░ рдПрдХ рдирдИ рдкреНрд░рдмрдВрдзрди рд╕рдВрд░рдЪрдирд╛ рджреНрд╡рд╛рд░рд╛ рдорджрдж рдХреА рдЬрд╛рддреА рд╣реИ)ред рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЗрд╕рдХреА рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рд╣реИред
рдореИрдВ рдкреАрдИрдЬреА рдФрд░ рдореЗрд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдХреЛрдб рд╕рд╛рдл рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдпрд╣ рдЕрдЧрд▓реЗ рдкрджреЛрдВ рдкрд░ рд╣реЛрдЧрд╛ред
рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрд╕реЗрдВрд╕ рдФрд░ рдХреЛрдб рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рджрд┐рдпрд╛: CC BY-NC-SA 4.0