рд╡рд┐рд╖рдп рдХреНрд╖реЗрддреНрд░ рдХреА рднрд╛рд╖рд╛ред рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдпреЛрдЬрди рднрд╛рд╖рд╛ рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЕрддрд┐рднрд╛рд░рд┐рдд рдирд╣реАрдВред рдЙрд╕реА рд╕рдордп, рдпрд╣ рдЖрдкрдХреЛ рдХреБрдЫ рд╣реА рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рддрд░реНрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рд╕рдм рдбреАрдПрд╕рдПрд▓ рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХ рдбреАрдПрд╕рдПрд▓ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдпреЛрдЧреНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдирд┐рдпрдорд┐рдд рдЙрдкрдпреЛрдЧ рджреВрд╕рд░реА рднрд╛рд╖рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рджрд┐рдирдЪрд░реНрдпрд╛ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред рд╕рдорд╛рдзрд╛рди рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдЙрдкрдХрд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛ рд╕рдХрддрд╛ рд╣реИ - рдПрдХ рдЗрдВрдЬрди рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрдЧрд╛ рдФрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо C # рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╡рд┐рдХрд╕рд┐рдд рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА рд╕рд╛рде рдХрд╛рдлреА рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рднрд╛рд╖рд╛ рдЗрдВрдЬрди, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкрд░рд┐рдЪрдп
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ: рдЗрд╕реЗ рдЗрддрдирд╛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЗрд╕рдХреА рдХреЛрдИ рдХрдореА рдирд╣реАрдВ рд╣реИ, рдпрд╛ рдЗрд╕реЗ рдЗрддрдирд╛ рдЬрдЯрд┐рд▓ рдмрдирд╛рдирд╛ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдХрдорд┐рдпрд╛рдВ рди рд╣реЛрдВред рд╕реАред рдИред рдЖрд░ред рд╣реЛрд░ (рдХрд╛рд░ рд╣реЛрд░реЗ)
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдПрдХ рдУрд░ рд╡рд┐рдХрд╛рд╕ рддрдХрдиреАрдХреЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рдореБрдЭреЗ рдФрд░ рдореЗрд░реА рдЯреАрдо рдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдПрдХ рддрд░рдл рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рд╕реЗ рдирд┐рдкрдЯрддрд╛ рд╣реИред рдФрд░ рджреВрд╕рд░реЗ рдкрд░ - рдпрд╣ рдЖрдкрдХреЛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рд▓рдЧрддрд╛ рд╣реИред рддреЛ рдпрд╣ рд╣реИ, рдЕрдЧрд░ рд╣рдо рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдЙрдкрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рд▓рдХреНрд╖реНрдп рдПрдХ рд╕рдВрдХреАрд░реНрдг рд╡рд┐рд╖рдп рдХреНрд╖реЗрддреНрд░ рдХреЛ рдХрд╡рд░ рдХрд░рдирд╛ рд╣реИ, рддреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рднрд╛рд╖рд╛ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдЕрдХреНрд╕рд░ рдЦреБрдж рдХреЛ рд╕рд╣реА рдард╣рд░рд╛рддрд╛ рд╣реИред
рдПрдХ рдмрд╛рд░ рдЬрдм рдореБрдЭреЗ рдЧреНрд░рд╛рд╣рдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрджреНрдпреЛрдЧрд┐рдХ рднрд╛рд╖рд╛ (рдЖрдИрдИрд╕реА 61131-3) рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдЗрд╕ рдХрд╛рдо рдХреЗ рджреМрд░рд╛рди, рдореБрдЭреЗ рджреБрднрд╛рд╖рд┐рдпрд╛-рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╡рд┐рд╖рдп рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реЛ рдЧрдИ рдФрд░ рддрдм рд╕реЗ рдореИрдВрдиреЗ рдЧреВрдврд╝ рд╡реНрдпрдХреНрддрд┐ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рд╣реИ, рди рдХрд┐ рдмрд╣реБрдд рд╕реА рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдПрдХ рд╢реМрдХ рдХреЗ рд░реВрдк рдореЗрдВред рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рд░реЛрдЬрдорд░реНрд░рд╛ рдХреА рдЬрд┐рдВрджрдЧреА рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡-рд▓рд┐рдЦрд┐рдд рджреБрднрд╛рд╖рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рд╕рдордЭ рдореЗрдВ рдЖрдпрд╛ред

рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдореБрдЦреНрдп рд▓рдХреНрд╖реНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдкрдврд╝рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдирд╛ рд╣реИред рдорд╢реАрди рдХреЛрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ asm рдореЗрдВ рд▓рд┐рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИ, C рдореЗрдВ рд▓рд┐рдЦрдирд╛ asm рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЖрд╕рд╛рди рд╣реИ, C # рдореЗрдВ рднреА рд╕рд░рд▓ рд╣реИ рдФрд░ рдЗрд╕реА рддрд░рд╣ред
рдпрд╣ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдиреНрдпреВрдирддрд╛рд╡рд╛рдж рдХреА рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╡рд┐рдзрд┐ рдХреЗ рдХрд╛рд░рдг рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ рд╣реИ - рдПрдХ рдЬрдЯрд┐рд▓ рдХрд╛рд░реНрдп рдХреЛ рд╕рд░рд▓ рдФрд░ рдкрд╣рдЪрд╛рдирдиреЗ рдпреЛрдЧреНрдп рдШрдЯрдХреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ - рдЙрдирдХреА рдмрд╛рддрдЪреАрдд рдФрд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдорд╛рдирдХреАрдХрд░рдгред
рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдореЗрдВ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдореВрд▓ рд░реВрдк рд╕реЗ рднрд╛рд╖рд╛, рдкреНрд░рд╛рдердорд┐рдХ рднрд╡рди рдмреНрд▓реЙрдХреЛрдВ рдФрд░ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдЖрдзрд╛рд░ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рд▓реЗрдЦрди рдХреЗ рддрд░реАрдХреЗ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рднреАред рд╡рд╛рдХреНрдп-рд░рдЪрдирд╛ рдХреЗ рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкреНрд░рд╛рдердорд┐рдХ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреЛ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдпрджрд┐ рдУрдУрдкреА рд╣реИ), рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╡реЗ, рдмрджрд▓реЗ рдореЗрдВ, рдкреИрдХреЗрдЬ рдореЗрдВред рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдореБрдЦреНрдпрдзрд╛рд░рд╛ рдХреА рднрд╛рд╖рд╛ рд╣реИред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпреЗ рддрдХрдиреАрдХ рдЕрдзрд┐рдХрд╛рдВрд╢ рд░реЛрдЬрдорд░реНрд░рд╛ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рд╕реАрдорд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдПрдХ рдХрджрдо рдФрд░ рдЖрдЧреЗ рд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ - рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХреА рдЕрдореВрд░реНрддрддрд╛ рдХреЗ рд▓рд┐рдП, рдФрд░ рдЖрдкрдХреЛ рдореИрдХреНрд░реЛрдЬрд╝ рдХреЗ рд░реВрдк рдореЗрдВ рдореЗрдЯрд╛рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рдиреЗ рд╡рд╛рд▓реА рднрд╛рд╖рд╛ рдХреА рд╕реАрдорд╛ рд╕реЗ рдкрд░реЗ рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛ред

рдЖрдЬрдХрд▓, рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдШрдЯрдХреЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рдФрд░ рдПрдХ рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рдХреЗ рд╕реНрд╡-рд▓рд┐рдЦрд┐рдд рднрд╛рдЧ рдХреЗ рд▓рд┐рдП рдЙрдмрд╛рд▓рддреА рд╣реИрдВред рдШрдЯрдХреЛрдВ рдХрд╛ рд╕рдВрдпреЛрдЬрди рдЖрдорддреМрд░ рдкрд░ рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ - C #, рдЬрд╛рд╡рд╛, рдкрд╛рдпрдерди рдФрд░ рдЕрдиреНрдп рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдпреЗ рднрд╛рд╖рд╛рдПрдБ рдЙрдЪреНрдЪ-рд╕реНрддрд░ рдХреА рд╣реИрдВ, рдлрд┐рд░ рднреА рд╡реЗ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╣реИрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдирд┐рдореНрди-рд╕реНрддрд░ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдирд┐рд░реНрдорд╛рдг рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ, рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг, рдХрдХреНрд╖рд╛рдПрдВ, рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдФрд░ рдмрд╣реБрдд рдХреБрдЫред рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ, рдХрд╛рд░реНрдп "рдПрдХ рдмрд╛рд░ рдХрд░реЛ, рджреЛ рдХрд░реЛ, рддреАрди рдХрд░реЛ" рд╕рд┐рдВрдЯреИрдХреНрдЯрд┐рдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рдХреЗ рджреНрд░рд╡реНрдпрдорд╛рди рдХреЗ рд╕рд╛рде рдмрдврд╝рддрд╛ рд╣реИ рдФрд░ рдХреЛрдб рдХреА рд╕реИрдХрдбрд╝реЛрдВ рд▓рд╛рдЗрдиреЛрдВ рдФрд░ рдЕрдзрд┐рдХ рддрдХ рд╕реВрдЬ рд╕рдХрддрд╛ рд╣реИред
рдЖрдк рдШрдЯрдХреЛрдВ рдХреЗ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЛ рд╕рд░рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдЖрдк рдиреНрдпреВрдирддрд╛рд╡рд╛рдж рдХреА рддрдХрдиреАрдХ рдХреЛ рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрди рдШрдЯрдХреЛрдВ рдХреЛред рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖ рднрд╛рд╖рд╛ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╕рд░рд▓ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЗрди рдШрдЯрдХреЛрдВ рдХреА рдмрд╛рддрдЪреАрдд рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ YaOP (рднрд╛рд╖рд╛-рдЙрдиреНрдореБрдЦ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рднрд╛рд╖рд╛рдУрдВ рдХреЛ DSL (рдбреЛрдореЗрди-рд╡рд┐рд╢рд┐рд╖реНрдЯ рднрд╛рд╖рд╛ - рдПрдХ рдбреЛрдореЗрди-рд╡рд┐рд╢рд┐рд╖реНрдЯ рднрд╛рд╖рд╛) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдирд┐рд░рд░реНрдердХ рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг, рдбреАрдПрд╕рдПрд▓ рдкрд░ рдХреЗрд╡рд▓ рдХреБрдЫ рд▓рд╛рдЗрдиреЗрдВ рдЬрдЯрд┐рд▓ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреА рд╣реИрдВ, рдЬреЛ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкрд░рд┐рдгрд╛рдо рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддреА рд╣реИрдВ: рд╡рд┐рдХрд╛рд╕ рдХреА рдЧрддрд┐ рдмрдврд╝ рдЬрд╛рддреА рд╣реИ, рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдкрд░реАрдХреНрд╖рдг рд╕рд░рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдпрджрд┐ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рдХреЙрдореНрдкреИрдХреНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдХрд╛рд░рдг рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЙрддреНрдкрд╛рдж рдХреЗ рд▓рдЪреАрд▓реЗрдкрди рдХреЛ рдХрд╛рдлреА рдмрдврд╝рд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП рдХрдИ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рд╡реНрдпрд╛рдкрдХрддрд╛ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ DSL рд╣рд░ рдЬрдЧрд╣ рд╣реИред рдЖрдо HTML рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╡рд┐рд╡рд░рдг рднрд╛рд╖рд╛ рд╣реИ, SQL рдПрдХ рд╕рдВрд░рдЪрд┐рдд рдХреНрд╡реЗрд░реА рднрд╛рд╖рд╛ рд╣реИ, JSON рдПрдХ рд╕рдВрд░рдЪрд┐рдд рдбреЗрдЯрд╛ рд╡рд┐рд╡рд░рдг рднрд╛рд╖рд╛, XAML, рдкреЛрд╕реНрдЯрд╕реНрдХреНрд░рд┐рдкреНрдЯ, Emacs рд▓рд┐рд╕реНрдк, nnCron рдФрд░ рдХрдИ рдЕрдиреНрдп рд╣реИред

рд╕рднреА рдлрд╛рдпрджреЛрдВ рдХреЗ рд╕рд╛рде, рд╕рд┐рд╕реНрдЯрдо рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП DSL рдХреА рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрдореА рд╣реИ - рдЙрдЪреНрдЪ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВред
рдкреНрд░рддреНрдпреЗрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдПрдХ рдЖрджрд┐рдо рднрд╛рд╖рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рднреА рдЬреНрдЮрд╛рди рдФрд░ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рдХреА рдПрдХ рдЫреЛрдЯреА рд╕рдВрдЦреНрдпрд╛ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рд▓рдЪреАрд▓реА рдФрд░ рдЙрддреНрдкрд╛рджрдХ рднрд╛рд╖рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИред рдЕрдиреНрдп рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореВрд▓ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдмрд┐рдВрджреБ рдкрд░, рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдпрд╛ рдУрдУрдкреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ред рдФрд░ рдЬрд╣рд╛рдВ рдХрд╛рд░реНрдп рд╣реЛрддреЗ рд╣реИрдВ, рдкреВрдВрдЫ-рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдЕрдиреБрдХреВрд▓рди рдХреЛ рдЫреЛрд░реЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдЙрд╕реА рд╕рдордп, рдкрд┐рдЫрдбрд╝реА рд╕рдВрдЧрддрддрд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд▓рд┐рдЦреА рдЧрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗред
рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЧрдИ рднрд╛рд╖рд╛ рджреВрд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдкрдпреБрдХреНрдд рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рдЦрд░реЛрдВрдЪ рд╕реЗ рдПрдХ рдирдпрд╛ рдбреАрдПрд╕рдПрд▓ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдирдИ рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдПрдХ рджрд┐рдирдЪрд░реНрдпрд╛ рдмрди рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдлрд┐рд░ рд╕реЗ рд░рдЦрд░рдЦрд╛рд╡ рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдХреЛрдб рдХреЗ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╡рд┐рднрд┐рдиреНрди DSL рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ DSL рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП DSL рдмрдирд╛рдирд╛ рд╣реИред рдпрд╣рд╛рдВ рдореЗрд░рд╛ рдорддрд▓рдм рдЖрд░рдмреАрдПрдирдПрдл рд╕реЗ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдРрд╕реА рднрд╛рд╖рд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╡рд┐рд╖рдп рдХреНрд╖реЗрддреНрд░ рдХреА рднрд╛рд╖рд╛ рдореЗрдВ рдмрд┐рд▓реНрдЯ-рдЗрди рдорд╛рдзреНрдпрдо рд╕реЗ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рд▓рдЪреАрд▓реА рдФрд░ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рднрд╛рд╖рд╛ рдмрдирд╛рдиреЗ рдореЗрдВ рдореБрдЦреНрдп рдмрд╛рдзрд╛ рдПрдХ рдХрдареЛрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдФрд░ рдкреНрд░рдХрд╛рд░ рдкреНрд░рдгрд╛рд▓реА рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╣реИред рдХрдВрдкреНрдпреВрдЯрд░ рдЙрджреНрдпреЛрдЧ рдХреЗ рд╕рдВрдкреВрд░реНрдг рд╡рд┐рдХрд╛рд╕ рдХреА рдЕрд╡рдзрд┐ рдореЗрдВ, рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рдмрд┐рдирд╛ рдХрдИ рд▓рдЪреАрд▓реА рднрд╛рд╖рд╛рдПрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХреА рдЧрдИ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдЖрдЬ рддрдХ рдмрдЪ рдЧрдП рд╣реИрдВ рдФрд░ рдлреЛрд░реНрде рдФрд░ рд▓рд┐рд╕реНрдк рднрд╛рд╖рд╛рдУрдВ рдХреЛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдЬрд╛рд░реА рд╣реИред рдЗрди рднрд╛рд╖рд╛рдУрдВ рдХреА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╣ рд╣реИ рдХрд┐, рдЙрдирдХреА рд╕рдВрд░рдЪрдирд╛ рдФрд░ рд╣реЛрдореЛ-рдЖрдЗрдХреЛрдирд┐рдХрддрд╛ рдХреЗ рдХрд╛рд░рдг, рд╡реЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рд╛рдзрдиреЛрдВ рдХреЗ рдХрд╛рд░рдг, рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдкрд╛рд░реНрд╕ рд╕рд┐рдВрдереИрдЯрд┐рдХ рдирд┐рд░реНрдорд╛рдг рдЬреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рдереЗред
рдлреЛрд░реНрде рдХреЗ рд╕рдорд╛рдзрд╛рди рдЗрд╕рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ C рдпрд╛ рд╕реНрдХреАрдо рддрдХ рдкрд╣реБрдВрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВред "рдХрд┐рд▓реЗ" рдХреЛ рдЕрдХреНрд╕рд░ рддрд░реНрдХ рдФрд░ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдЕрд╕рд╛рдорд╛рдиреНрдп рдЙрдкрд╕рд░реНрдЧ рдЕрдиреБрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдЖрд▓реЛрдЪрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рдЬреЛ рддрд░реНрдХреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреИрдХ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, "рдХрд┐рд▓реЗ" рдореЗрдВ рдПрдХ рдЯреЗрдХреНрд╕реНрдЯ рджреБрднрд╛рд╖рд┐рдпрд╛ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ, рдпрд╣ рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдиреЗ рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рд░рд┐рд╡рд░реНрд╕ рд░рд┐рдХреЙрд░реНрдб рдЫрд┐рдкрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдФрд░, рдЖрдЦрд┐рд░рдХрд╛рд░, рдпрд╣ рдЖрджрдд рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ, рдФрд░ рдпрд╣ рдмрд╣реБрдд рдЬрд▓реНрджреА рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрддрд╛ рд╣реИред
рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рд▓рд┐рд╕реНрдк рдкрд░рд┐рд╡рд╛рд░ рдореИрдХреНрд░реЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдиреЗ рдкрд░ рдбреАрдПрд╕рдПрд▓ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдФрд░ рджреБрднрд╛рд╖рд┐рдпрд╛ рдФрд░ рдкрд╛рдардХ рддрдХ рдкрд╣реБрдВрдЪ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╡реНрдпрд╛рдЦреНрдпрд╛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдореЗрдЯрд╛рд╕рд╛рдЗрдХреНрд▓рд┐рдХ рджреБрднрд╛рд╖рд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдпреЛрдЧрджрд╛рди рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдХреАрдо рд▓рд┐рд╕реНрдк рд░реИрдХреЗрдЯ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╡рд┐рдХрд╛рд╕рд╢реАрд▓ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдмрдирд╛рдиреЗ, рдЬреАрдпреВрдЖрдИ рдЗрдВрдЯрд░рдлреЗрд╕ рдмрдирд╛рдиреЗ, рдЗрдВрдЯреНрд░реЗрдВрд╕ рд▓реИрдВрдЧреНрд╡реЗрдЬ рдФрд░ рдЕрдиреНрдп рдХреЗ рд▓рд┐рдП рдмреЙрдХреНрд╕ рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рдмрд╛рд╣рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЗрд╕ рддрд░рд╣ рдХреА рд▓рдЪреАрд▓рд╛рдкрди рдЗрди рднрд╛рд╖рд╛рдУрдВ рдХреЛ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдбреАрдПрд╕рдПрд▓ рдЗрдВрдЬрди рдХреА рднреВрдорд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рдЙрдореНрдореАрджрд╡рд╛рд░ рдмрдирд╛рддреА рд╣реИред
"рдХрд┐рд▓рд╛" рдФрд░ рд▓рд┐рд╕реНрдк рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп-рдкреНрд░рдпреЛрдЬрди рдХреА рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрд▓рд╛ рд▓реЛрдЧ рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк - рд╡реЗ рдЦреБрдж рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ DSL рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдирд┐рд░рд░реНрдердХ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╡реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реАрдорд┐рдд рд╕рдВрд╕реНрдХрд░рдг рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЖрдкрдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдЫреЛрдЯреЗ рд╕рдВрд╢реЛрдзрдиреЛрдВ (рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ - рдмрд┐рдирд╛) рдХреЗ рд╕рд╛рде рдРрд╕реА рднрд╛рд╖рд╛ рдХреЗ рдореВрд▓ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред
рдореИрдВ рдпрд╣ рднреА рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпреЗ рднрд╛рд╖рд╛рдПрдВ рди рдХреЗрд╡рд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд▓реНрдХрд┐ REPL рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП рднреА рдмрд╣реБрдд рдЕрдЪреНрдЫреА рд╣реИрдВред рдЬреЛ, рдПрдХ рддрд░рдл, рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░реА рддрд░рдл, рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рд╕реБрд▓рдн рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдкрд╛рда рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рд╡рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡реА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рд╣реИ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдкрд╛рда рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЙрджрд╛рд╣рд░рдг рдмреИрд╢ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдЕрдЧрд░ рднрд╛рд╖рд╛ рд╣реЛрдореЛ-рдЖрдЗрдХреЙрдирд┐рдХ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЬрдирд░реЗрдЯ рдФрд░ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЖрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдиреНрдпреВрдирддрдо рдкреНрд░рдпрд╛рд╕ рдХреЗ рд╕рд╛рде рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХ рднрд╛рд╖рд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реИ - рдпрд╣ рддрдм рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рд▓рдХреНрд╖реНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕реЗ рджреВрд░ рд╣реЛред
рдЖрдЬрдХрд▓, XML рдФрд░ JSON рдбреЗрдЯрд╛ рд╡рд┐рд╡рд░рдг рднрд╛рд╖рд╛рдУрдВ рдХреЛ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП DSL рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдпрд╣ рдПрдХ рдорд╣рд╛рди рдЕрднреНрдпрд╛рд╕ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЕрдХреЗрд▓реЗ рдбреЗрдЯрд╛ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрди рдкрд░ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ, рдореИрдВ рдлреЛрд░реНрдЯ рднрд╛рд╖рд╛ рдХрд╛ рдПрдХ рд╕рд░рд▓ рджреБрднрд╛рд╖рд┐рдпрд╛ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рджрд┐рдЦрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдХреИрд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред
рдХрд┐рд▓реЗ рдХреА рднрд╛рд╖рд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛, рдЬрдмрдХрд┐ рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ DSL рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдерд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рднрд╛рд╖рд╛ рдХрд╛ рджрд┐рд▓ рдПрдбреНрд░реЗрд╕ рджреБрднрд╛рд╖рд┐рдпрд╛ рд╣реИ, рдЬреЛ рдЕрд╕реЗрдВрдмрд▓рд░ рдореЗрдВ рднреА рдХреЗрд╡рд▓ рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд▓реЗрддрд╛ рд╣реИ, рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдереЛрдХ рдЖрджрд┐рдо рдкрд░ рдЧрд┐рд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ, рддреЗрдЬ рдФрд░ рд▓рдЪреАрд▓рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рднрд╛рд╖рд╛ рдХрд╛ рдПрдХ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рдкрд╛рда рджреБрднрд╛рд╖рд┐рдпрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдкрддрд╛ рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдкрддрд╛ рджреБрднрд╛рд╖рд┐рдпрд╛
рдХрд┐рд▓реЗ рдХреА рднрд╛рд╖рд╛ рдХрд╛ рдореВрд▓ рддрддреНрд╡ рдПрдХ рд╢рдмреНрдж рд╣реИ рдЬрд┐рд╕реЗ рдЕрдиреНрдп рд╢рдмреНрджреЛрдВ рдФрд░ рдкрд░рдорд╛рдгреБрдУрдВ (рд╕рдВрдЦреНрдпрд╛рдУрдВ) рд╕реЗ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди, рд░реЗрдЦрд╛ рдХреЗ рдЕрдВрдд рдФрд░ рдЯреИрдм рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдПрдХ рд╢рдмреНрдж рдХрд╛ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рдЕрд░реНрде рдФрд░ рдЧреБрдг рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕реАред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╡рд╛рдпрд░реНрдб рд╢рдмреНрдж, рдЕрд░реНрдерд╛рддреН, рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рдХреЗ рд╕рдорд╛рди рд╕рд╛рдзрдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд, рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рд╕рдорд╛рди рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХрд┐рд╕реА рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдореЗрдВ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рднрд╛рд╖рд╛ рдФрд░ рдбреЗрдЯрд╛ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реА рдЬреИрд╕реА рднрд╛рд╖рд╛рдПрдВ рд▓реЗрдЦрди рдСрдкрд░реЗрдЯрд░реЛрдВ рдХрд╛ рдПрдХ рдЕрд▓рдЧ рддрд░реАрдХрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИрдВ, рдЬреЛ рднрд╛рд╖рд╛ рдХреЗ рд╡рд╛рдХреНрдп рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИрдВред рдЬреНрдпрд╛рджрд╛рддрд░ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ, рдмрдпрд╛рдиреЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рдЖрдорддреМрд░ рдкрд░ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдПрдХ рдмрдпрд╛рди рдореЗрдВ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдпрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓ рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВред
рдХрд┐рд▓реЗ рдХреА рднрд╛рд╖рд╛ рдореЗрдВ, рд╕рднреА рдСрдкрд░реЗрдЯрд░реЛрдВ рдФрд░ рдЙрдирдХреЗ рд╕рдВрдпреЛрдЬрди (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╢рдмреНрдж) рдореЗрдВ рдПрдХ рд╣реА рд▓реЗрдЦрди рд╡рд┐рдзрд┐ рд╣реИред рдХрд┐рд▓реЗ рдХреЗ рд╢рдмреНрдж рдЖрджрд┐рдо рдФрд░ рд░рд┐рд╡рд╛рдЬ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИрдВред рдЖрдк рдПрдХ рд╢рдмреНрдж рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐ рдЖрджрд┐рдо рдХреЛ рдЕрдзрд┐рднрд╛рд░рд┐рдд рдХрд░реЗрдЧрд╛, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЖрджрд┐рдо рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓ рджреЗрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреБрдирд░реНрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╢рдмреНрдж рдХреЛ рд╢реБрд░реВ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, C # рдореЗрдВ рдХрд╛рд░реНрдп рдЖрджрд┐рдо рд╣реЛрдЧрд╛ред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╢рдмреНрдж рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╢рдмреНрджреЛрдВ рдХреЗ рдкрддреЗ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реЛрддреА рд╣реИред рдЪреВрдВрдХрд┐ рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╢рдмреНрдж рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЛ рдЙрдирдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрджрд┐рдо рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╢рдмреНрджреЛрдВ рдХрд╛ рдкреГрдердХреНрдХрд░рдг рдПрдХ рд╣реА рдЖрджрд┐рдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╢рдмреНрдж рдПрдХ DoList рдСрдкрд░реЗрд╢рди рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдПрдХ Exit рдСрдкрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред
рдпрд╣ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╡рд░реНрдгрди рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдЕрд▓рдЧрд╛рд╡ рдХреИрд╕реЗ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрдВрдЯрд░рдкреНрд░рд┐рдЯреЗрд╢рди рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдЖрджреЗрд╢ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдХреЗ рдЗрд╕реЗ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдиреНрдпреВрдирддрдо рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрджрдо рд╕реЗ рдХрджрдо рд╣реЛрдЧрд╛ред

рд╣рдорд╛рд░реЗ рдХрд┐рд▓реЗ рдХреА рдорд╢реАрди рдореЗрдВ рд▓реАрдирд┐рдпрд░ рдореЗрдореЛрд░реА, рдбреЗрдЯрд╛ рд╕реНрдЯреИрдХ, рд░рд┐рдЯрд░реНрди рд╕реНрдЯреИрдХ, рдЗрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рдкреЙрдЗрдВрдЯрд░, рд╡рд░реНрдб рдкреЙрдЗрдВрдЯрд░ рд╣реЛрддреЗ рд╣реИрдВред рдЖрджрд┐рдореЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЕрд▓рдЧ рд╕реНрдерд╛рди рд╣реЛрдЧрд╛ред
public object[] Mem;
рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд╛ рд╕рд╛рд░ рд╕реНрдореГрддрд┐ рдореЗрдВ рдкрддреЗ рдкрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдирд╛ рдФрд░ рд╡рд╣рд╛рдВ рдмрддрд╛рдП рдЧрдП рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реИред рдкреВрд░рд╛ рдкрддрд╛ рджреБрднрд╛рд╖рд┐рдпрд╛ - рднрд╛рд╖рд╛ рдХрд╛ рджрд┐рд▓ - рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЕрдЧрд▓рд╛ ()ред
public void Next() { while (true) { if (IP == 0) return; WP = (int)Mem[IP++]; Core[(int)Mem[WP]](); } }
рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╢рдмреНрдж рдПрдХ DoList рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдХрд╛рд░реНрдп рд╕реНрдЯреИрдХ рдкрд░ рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╛рдЦреНрдпрд╛ рдкрддреЗ рдХреЛ рд╕рд╣реЗрдЬрдирд╛ рд╣реИ рдФрд░ рдЕрдЧрд▓реЗ рд╢рдмреНрдж рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдкрддреЗ рдХреЛ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реИред
public void DoList() { RS.Push(IP); IP = WP + 1; }
рд╢рдмреНрдж рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХреНрдЬрд┐рдЯ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЬреЛ рд░рд┐рдЯрд░реНрди рд╕реНрдЯреИрдХ рд╕реЗ рдкрддреЗ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред
public void Exit() { IP = RS.Pop(); }
рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдПрдХ рджреГрд╢реНрдп рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдХрдорд╛рдВрдб рдкреЗрд╢ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдЙрдкрдпреЛрдЧреА рдХрд╛рдо рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░реЗрдЧрд╛ред рдЪрд▓реЛ рдЗрд╕реЗ рд╣реИрд▓реЛ рдХрд╣рддреЗ рд╣реИрдВ ()ред
public void Hello() { Console.WriteLine("Hello"); }
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдорд╢реАрди рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдФрд░ рджреБрднрд╛рд╖рд┐рдП рдХреЗ рд▓рд┐рдП рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдЗрдорд┐рдЯрд┐рд╡реНрд╕ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реИред рдЖрдкрдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдореЛрд░реА рдореЗрдВ рдкреНрд░рд┐рдорд┐рдЯрд┐рд╡ рдХреЗ рдкрддреЗ рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗред
Mem = new Object[1024]; RS = new Stack<int>(); DS = new Stack<object>(); Core = new List<CoreCall>(); Core.Add(Next); Core.Add(DoList); Core.Add(Exit); Core.Add(Hello); const int opNext = 0; const int opDoList = 1; const int opExit = 2; const int opHello = 3;
рдЕрдм рд╣рдо рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛрдб рдкрддрд╛ 4 рдкрд░ рд╢реБрд░реВ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕рдореЗрдВ рджреЛ рдЙрдкрдкреНрд░реЛрдЧреНрд░рд╛рдо рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗред рдкрд╣рд▓реА рджрд┐рдирдЪрд░реНрдпрд╛ рдкрддрд╛ 7 рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ рдФрд░ рджреВрд╕рд░реЗ рдХреЛ рдХреЙрд▓ рдХрд░рддреА рд╣реИ, рдЬреЛ рдкрддрд╛ 4 рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ рдФрд░ рд╣реИрд▓реЛ рд╢рдмреНрдж рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреА рд╣реИред
рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд░рд┐рдЯрд░реНрди рд╕реНрдЯреИрдХ рдкрд░ рдорд╛рди 0 рдХреЛ рд╕рд╣реЗрдЬрдирд╛ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдкрддрд╛ рджреБрднрд╛рд╖рд┐рдпрд╛ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЪрдХреНрд░ рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░реЗрдЧрд╛, рдФрд░ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рд╕реЗрдЯ рдХрд░реЗрдЧрд╛, рдФрд░ рдлрд┐рд░ рджреБрднрд╛рд╖рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░реЗрдЧрд╛ред
var entryPoint = 7;
рдЬреИрд╕рд╛ рдХрд┐ рд╡рд░реНрдгрд┐рдд рд╣реИ, рдЗрд╕ рджреБрднрд╛рд╖рд┐рдпрд╛ рдореЗрдВ рдкреНрд░рд╛рдЗрдореЗрдЯрд┐рд╡реНрд╕ рдХреЛ рдЕрд▓рдЧ рдореЗрдореЛрд░реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдмреЗрд╢рдХ, рдЗрд╕реЗ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛: рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдореЛрд░реА рдореЗрдВ, рдСрдкрд░реЗрдЯрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдПрдХ рддрд░рдл, рдЗрд╕ рддрд░рд╣ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рджреВрд╕рд░реА рддрд░рдл, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдзреАрдорд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдк рдЪреЗрдХрд┐рдВрдЧ, рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдФрд░ рдЕрдзрд┐рдХ рд╕рдВрдЪрд╛рд▓рди рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рд╣рдорд╛рд░реЗ рджреБрднрд╛рд╖рд┐рдпрд╛ рдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╢рдмреНрдж DoList рдЖрджрд┐рдо рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдХрд╛рд░реНрдп рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЗ рд╡рд░реНрддрдорд╛рди рдкрддреЗ рдХреЛ рд╕рд╣реЗрдЬрдирд╛ рдФрд░ рдЕрдЧрд▓реЗ рдкрддреЗ рдкрд░ рдЬрд╛рдирд╛ рд╣реИред рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рдСрдкрд░реЗрд╢рди рджреНрд╡рд╛рд░рд╛ рд╕рдмрд░реВрдЯреАрди рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддрд╛ рд╣реИ, рдЬреЛ рдЖрдЧреЗ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рд░рд┐рдЯрд░реНрди рд╕реНрдЯреИрдХ рд╕реЗ рдкрддреЗ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдордиреЗ рдкреВрд░реЗ рдкрддреЗ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реИред рдордирдорд╛рдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рдЕрдВрдЬрд╛рдо рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЖрджрд┐рдо рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдПрдХ рдкрд╛рда рджреБрднрд╛рд╖рд┐рдпрд╛ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ, рдЬреЛ рдкрддрд╛ рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЛ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдкрд╛рда рджреБрднрд╛рд╖рд┐рдпрд╛
рдлреЛрд░реНрдЯ рд▓реИрдВрдЧреНрд╡реЗрдЬ рдХрд╛ рдХреЛрдИ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реНрдкреЗрд╕, рдЯреИрдм рдпрд╛ рд▓рд╛рдЗрди рдПрдВрдб рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдП рдЧрдП рд╢рдмреНрдж рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдкрд╛рда рджреБрднрд╛рд╖рд┐рдпрд╛ рдХрд╛ рдХрд╛рд░реНрдп рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдХреЛ рд╢рдмреНрджреЛрдВ (рдЯреЛрдХрди) рдореЗрдВ рддреЛрдбрд╝рдирд╛ рд╣реИ, рдЙрдирдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдвреВрдВрдвреЗрдВ, рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдпрд╛ рдореЗрдореЛрд░реА рдореЗрдВ рд▓рд┐рдЦреЗрдВред рд▓реЗрдХрд┐рди рд╕рднреА рдЯреЛрдХрди рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдЕрдзреАрди рдирд╣реАрдВ рд╣реИрдВред рдпрджрд┐ рджреБрднрд╛рд╖рд┐рдпрд╛ рд╢рдмреНрдж рдирд╣реАрдВ рдкрд╛рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдЗрд╕реЗ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЯреЗрдХреНрд╕реНрдЯ рджреБрднрд╛рд╖рд┐рдпрд╛ рдореЗрдВ рджреЛ рдореЛрдб рд╣реИрдВ: рд╡реНрдпрд╛рдЦреНрдпрд╛ рдореЛрдб рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЛрдбред рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЛрдб рдореЗрдВ, рд╢рдмреНрдж рдкрддреЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕реНрдореГрддрд┐ рдореЗрдВ рд▓рд┐рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдирдП рд╢рдмреНрдж рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред
"рдХрд┐рд▓реЗ" рдХреЗ рдХреИрдиреЛрдирд┐рдХрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЖрдорддреМрд░ рдкрд░ рдПрдХ рд╢рдмреНрджрдХреЛрд╢ (рдбрд┐рдХреНрд╢рдирд░реА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐) рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдореЛрд░реА рдХреЛ рдорд┐рд▓рд╛рддреЗ рд╣реИрдВ, рдПрдХ рдХреЛрдб рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХреЗрд╡рд▓ рдХрдиреЗрдХреНрдЯ рдХреА рдЧрдИ рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдХреЗрд╡рд▓ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЛрдб рд╕реНрдореГрддрд┐ рдореЗрдВ рд╣реЛрдЧрд╛, рдФрд░ рд╢рдмреНрджреЛрдВ рдХреЗ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдПрдХ рдЕрд▓рдЧ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ - рдПрдХ рд╢рдмреНрджрдХреЛрд╢ред
public Dictionary<string, List<WordHeader>> Entries;
рдпрд╣ рд╢рдмреНрджрдХреЛрд╢ рдПрдХ рд╢рдмреНрдж рдХреЗ рдкрддреНрд░рд╛рдЪрд╛рд░ рдХреЛ рдХрдИ рд╢реАрд░реНрд╖рдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдПрдХ рд╣реА рдирд╛рдо рдХреЗ рд╕рд╛рде рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЗрд╕ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреБрд░рд╛рдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмрдЪрд╛ рд╣реБрдЖ рдкреБрд░рд╛рдирд╛ рдкрддрд╛ рдЖрдкрдХреЛ рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдПрдХ рд╢рдмреНрдж рдХрд╛ рдирд╛рдо рдЦреЛрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ, рдЬреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдпрд╛ рдореЗрдореЛрд░реА рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред WordHeader рдПрдХ рд╡рд░реНрдЧ рд╣реИ рдЬреЛ рдПрдХ рд╕рдмрд░реВрдЯреАрди рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдкрддреЗ рдФрд░ рдПрдХ рддрддреНрдХрд╛рд▓ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдзреНрд╡рдЬ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред
public class WordHeader { public int Address; public bool Immediate; }
рддрддреНрдХрд╛рд▓ рдзреНрд╡рдЬ рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЛ рдирд┐рд░реНрджреЗрд╢ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╢рдмреНрдж рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЛрдб рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдореЗрдореЛрд░реА рдореЗрдВ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпреЛрдЬрдирд╛рдмрджреНрдз рд░реВрдк рд╕реЗ, рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЗ рддрд░реНрдХ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рджрд╛рдпрд╛рдВ рд╣рд╛рде рд╣рд╛рдВ рд╣реИ, рдмрд╛рдпрд╛рдВ рдирд╣реАрдВ рд╣реИред
рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП TextReader рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░реАрдо, рдФрд░ TextWriter рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗред
public TextReader Input; public TextWriter Output;
рдЙрдкрд░реЛрдХреНрдд рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рджреБрднрд╛рд╖рд┐рдпрд╛ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдПрдХ рдХрд╛рд░реНрдп рдореЗрдВ рд╣реЛрдЧрд╛ рджреБрднрд╛рд╖рд┐рдпрд╛ ()ред
void Interpreter() { while (true) { var word = ReadWord(Input); if (string.IsNullOrWhiteSpace(word)) return;
рд╡реНрдпрд╛рдЦреНрдпрд╛ рдПрдХ рд▓реВрдк рдореЗрдВ рдХреА рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░реАрдо (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЕрдВрдд) рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд░реАрдбрд╡реЙрд░реНрдб рдлрд╝рдВрдХреНрд╢рди рдПрдХ рд░рд┐рдХреНрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рдПрдЧрд╛ред ReadWord рдХрд╛ рдХрд╛рд░реНрдп рдЕрдЧрд▓реЗ рд╢рдмреНрдж рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рд╣реИред
static string ReadWord(TextReader sr) { var sb = new StringBuilder(); var code = sr.Read(); while (IsWhite((char)code) && code > 0) { code = sr.Read(); } while (!IsWhite((char)code) && code > 0) { sb.Append((char)code); code = sr.Read(); } return sb.ToString(); } static bool IsWhite(char c) { return " \n\r\t".Any(ch => ch == c); }
рд╢рдмреНрдж рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕реЗ рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдЦреЛрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рд╕рдлрд▓, рд╢рдмреНрдж рдХрд╛ рд╢реАрд░реНрд╖рдХ рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛, рдЕрд╢рдХреНрддред
public WordHeader LookUp(string word) { if (Entries.ContainsKey(word)) { return Entries[word].Last(); } return null; }
рдЖрдк рдпрд╣ рдЬрд╛рдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдорд╛рди рдкрд╣рд▓реЗ рджреЛ рд╡рд░реНрдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдпрджрд┐ рдкрд╣рд▓рд╛ рд╡рд░реНрдг рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд╣реИ, рддреЛ рд╣рдо рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд╣реИред рдпрджрд┐ рдкрд╣рд▓рд╛ рд╡рд░реНрдг "+" рдпрд╛ "-" рдЪрд┐рдиреНрд╣ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдПрдХ рдЕрдВрдХ рд╣реИ, рддреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рднреА рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд╣реИред
static bool IsConstant(string word) { return IsDigit(word[0]) || (word.Length >= 2 && (word[0] == '+' || word[0] == '-') && IsDigit(word[1])); }
рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдорд╛рдирдХ рд╡рд┐рдзрд┐рдпреЛрдВ Int32.TryParse рдФрд░ Double.TryParse рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╡реЗ рдХрдИ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдЧрддрд┐ рдореЗрдВ рднрд┐рдиреНрди рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдПрдХ рдХрд╕реНрдЯрдо рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред
static object ParseNumber(string str) { var factor = 1.0; var sign = 1; if (str[0] == '-') { sign = -1; str = str.Remove(0, 1); } else if (str[0] == '+') { str = str.Remove(0, 1); } for (var i = str.Length - 1; i >= 0; i--) { if (str[i] == '.') { str = str.Remove(i, 1); return IntParseFast(str) * factor * sign; } factor *= 0.1; } return IntParseFast(str) * sign; } static int IntParseFast(string value) {
ParseNumber рд╡рд┐рдзрд┐ рдкреВрд░реНрдгрд╛рдВрдХ рдорд╛рди рдФрд░ рдлрд╝реНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рд╕рдВрдЦреНрдпрд╛ рджреЛрдиреЛрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "1.618"ред
рд╢рдмреНрдж рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдЙрд╕реА рддрд░рд╣ рд╕реЗ рд╣реЛрддрд╛ рд╣реИ рдЬреИрд╕реЗ рд╣рдо рдПрдбреНрд░реЗрд╕ рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рдереЗред рдЕрдкрд╡рд╛рдж рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдПрдбреНрд░реЗрд╕ рджреБрднрд╛рд╖рд┐рдпрд╛ рдХрд╛ рдПрдХ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдореБрджреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
public void Execute(int address) { try { if (address < Core.Count) {
рдЬрдм рджреБрднрд╛рд╖рд┐рдпрд╛ рд╕рдВрдХрд▓рди рдореЛрдб рдореЗрдВ рд╣реИ рдФрд░ рд╢рдмреНрдж рддрддреНрдХрд╛рд▓ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЪрд┐рд╣реНрдирд┐рдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдкрддрд╛ рд╕реНрдореГрддрд┐ рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
public void AddOp(object op) { Mem[Here++] = op; }
рдпрд╣рд╛рдБ рдЪрд░ рдЕрдЧрд▓реЗ рдореБрдлреНрдд рд╕реЗрд▓ рдХрд╛ рдкрддрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдпрд╣ рдЪрд░ рдлреЛрд░реНрдЯ рднрд╛рд╖рд╛ рдХреЗ рдПрдХ рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд░рдирдЯрд╛рдЗрдо рд╡рд╛рддрд╛рд╡рд░рдг рд╕реЗ рд╕реБрд▓рдн рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдпрд╣рд╛рдВ рджрд┐рдП рдЧрдП рдореВрд▓реНрдп рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдореЛрд░реА рдореЗрдВ рдПрдХ рдСрдлрд╕реЗрдЯ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
public int _hereShift; public int Here { get => (int)Mem[_hereShift]; set => Mem[_hereShift] = value; }
рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЗ рджреМрд░рд╛рди рдПрдХ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдирд┐рд░рдВрддрд░ рдФрд░ рдПрдХ рд╢рдмреНрдж рдкрддреЗ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдВрдХрд▓рди рдХреЗ рджреМрд░рд╛рди рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд░рдВрддрд░ рд╕реЗ рдкрд╣рд▓реЗ doLit рд╢рдмреНрдж рдХрд╛ рд╕рдВрдХрд▓рди рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдореЗрдореЛрд░реА рдореЗрдВ рдЕрдЧрд▓реЗ рдореВрд▓реНрдп рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдбреЗрдЯрд╛ рд╕реНрдЯреИрдХ рдкрд░ рд░рдЦрддрд╛ рд╣реИред
public void DoLit() { DS.Push(Mem[IP++]); }
рд╣рдордиреЗ рдкрддрд╛ рдФрд░ рдкрд╛рда рджреБрднрд╛рд╖рд┐рдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реИ, рдЖрдЧреЗ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдкрд░рдорд╛рдгреБрдУрдВ рдХреЗ рд╕рд╛рде рдирд╛рднрд┐рдХ рдХреЛ рднрд░рдирд╛ рд╣реИред "рдлреЛрд░реНрдЯ" рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдореВрд▓ рд╢рдмреНрджреЛрдВ рдХрд╛ рдПрдХ рдЕрд▓рдЧ рд╕реЗрдЯ рд╣реИ, рд╕рдмрд╕реЗ рдиреНрдпреВрдирддрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реЛрдЧрд╛, рд╢рд╛рдпрдж, рдИрдлреЛрд░реНрде, рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ 31 рдкреНрд░рд╛рдЗрдореЗрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдХреНрдпреЛрдВрдХрд┐ рдпреМрдЧрд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╢рдмреНрджреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЖрджрд┐рдо рддреЗрдЬреА рд╕реЗ рдЪрд▓рддрд╛ рд╣реИ, рдиреНрдпреВрдирддрдо рдлреЛрд░реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЖрдорддреМрд░ рдкрд░ рдХреНрд░рд┐рдпрд╛ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдзреАрдорд╛ рд╣реЛрддреЗ рд╣реИрдВред рд╡реНрдпрд╛рдЦреНрдпрд╛рдХрд╛рд░реЛрдВ рдХреЗ рдХрдИ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╢рдмреНрдж рд╕реЗрдЯ рдХреА рддреБрд▓рдирд╛
рдпрд╣рд╛рдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА
рд╣реИ ред
рдпрд╣рд╛рдБ рд╡рд░реНрдгрд┐рдд рджреБрднрд╛рд╖рд┐рдпрд╛ рдореЗрдВ, рдореИрдВрдиреЗ рдореВрд▓ рд╢рдмреНрджреЛрдВ рдХреЗ рд╢рдмреНрджрдХреЛрд╢ рдХреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдмрдврд╝рд╛рдиреЗ рдХрд╛ рднреА рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди .net рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЧрдгрд┐рдд, рдмреБрд▓рд┐рдпрди рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрджрд┐рдо рдХреЗ рд╕реЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рддрд┐рдмрд┐рдВрдмред рдЗрд╕реА рд╕рдордп, рдХрд┐рд▓реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдкреНрд░рд╛рдпрдГ рдХреБрдЫ рд╢рдмреНрдж рдЬреЛ рдЖрджрд┐рдо рд╣реИрдВ, рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЕрд░реНрде рдХрд░рддреЗ рд╣реБрдП, рдпрд╣рд╛рдВ рдЧрд╛рдпрдм рд╣реИрдВред
рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рдореВрд▓ рд╕реЗрдЯ 68 рд╢рдмреНрдж рд╣реИред рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╢рдмреНрджреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рджреЛ рдХрд░реНрдиреЗрд▓ рд╢рдмреНрджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: ":" рдФрд░ ";"ред рд╢рдмреНрдж ":" рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рд╕реЗ рдПрдХ рдирдП рд╢рдмреНрдж рдХрд╛ рдирд╛рдо рдкрдврд╝рддрд╛ рд╣реИ, рдЗрд╕ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдПрдХ рд╣реЗрдбрд░ рдмрдирд╛рддрд╛ рд╣реИ, рдмреЗрд╕ рд╢рдмреНрдж doList рдХрд╛ рдкрддрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдореЛрд░реА рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЛ рд╕рдВрдХрд▓рди рдореЛрдб рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж рдХреЗ рд╕рднреА рд╢рдмреНрджреЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рдиреНрд╣реЗрдВ рддрддреНрдХрд╛рд▓ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
public void BeginDefWord() { AddHeader(ReadWord(Input)); AddOp(LookUp("doList").Address); IsEvalMode = false; }
рд╕рдВрдХрд▓рди рд╢рдмреНрдж "?" рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдореЛрд░реА рдореЗрдВ "рдирд┐рдХрд╛рд╕" рд╢рдмреНрдж рдХрд╛ рдкрддрд╛ рд▓рд┐рдЦрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдореЛрдб рдореЗрдВ рдбрд╛рд▓рддрд╛ рд╣реИред рдЕрдм рдЖрдк рдХрд╕реНрдЯрдо рд╢рдмреНрджреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓реВрдкреНрд╕, рдПрдХ рд╕рд╢рд░реНрдд рдмрдпрд╛рди рдФрд░ рдЕрдиреНрдпред
Eval(": ? @ . ;"); Eval(": allot here @ + here ! ;"); Eval(": if immediate doLit [ ' 0branch , ] , here @ 0 , ;"); Eval(": then immediate dup here @ swap - swap ! ;"); Eval(": else immediate [ ' branch , ] , here @ 0 , swap dup here @ swap - swap ! ;"); Eval(": begin immediate here @ ;"); Eval(": until immediate doLit [ ' 0branch , ] , here @ - , ;"); Eval(": again immediate doLit [ ' branch , ] , here @ - , ;"); Eval(": while immediate doLit [ ' 0branch , ] , here @ 0 , ;"); Eval(": repeat immediate doLit [ ' branch , ] , swap here @ - , dup here @ swap - swap ! ;"); Eval(": // immediate [ ' \\ , ] ;");
рдореИрдВ рдпрд╣рд╛рдВ рдмрд╛рдХреА рдорд╛рдирдХ рд╢рдмреНрджреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ - рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рд╖рдпрдЧрдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдкрд░ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рд╣реИред рдордВрдЪ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ 9 рд╢рдмреНрджреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛:
- "рдирд▓" - рд╕реНрдЯреИрдХ рдкрд░ рдирд▓ рдХреЛ рдзрдХреНрдХрд╛ рджреЗрддрд╛ рд╣реИ;
- "рдЯрд╛рдЗрдк" - "TrueForth.MyClass рдкреНрд░рдХрд╛рд░" рд╢рдмреНрдж рдХреЗ рдвреЗрд░ рдкрд░ рд╡рд░реНрдЧ рдкреНрд░рдХрд╛рд░ рдХреЛ рдзрдХреНрдХрд╛ рджреЗрддрд╛ рд╣реИ;
- "рдирдпрд╛" - рд╕реНрдЯреИрдХ рд╕реЗ рдкреНрд░рдХрд╛рд░ рд▓реЗрддрд╛ рд╣реИ, рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕реНрдЯреИрдХ рдкрд░ рд░рдЦрддрд╛ рд╣реИ, рдирд┐рд░реНрдорд╛рддрд╛ рддрд░реНрдХ рджреЗрддрд╛ рд╣реИ, рдпрджрд┐ рдХреЛрдИ рд╣реЛ, рддреЛ рд╕реНрдЯреИрдХ рдкрд░ рднреА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП "рд╢рдмреНрдж TrueForth.MyClass рдЯрд╛рдЗрдк рдирдпрд╛";
- "рдПрдо!" - рд╕реНрдЯреИрдХ рд╕реЗ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ, рдлрд╝реАрд▓реНрдб рдирд╛рдо, рдорд╛рди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдлрд╝реАрд▓реНрдб рдкрд░ рдПрдХ рдорд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ;
- "рдПрдо @" - рд╕реНрдЯреИрдХ рд╕реЗ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЙрдард╛рддрд╛ рд╣реИ, рдлрд╝реАрд▓реНрдб рдирд╛рдо рдФрд░ рд╕реНрдЯреИрдХ рд╕реЗ рдлрд╝реАрд▓реНрдб рдХрд╛ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИ;
- "рд╕реБрд╢реНрд░реА" рдФрд░ "рдПрдордПрд╕ @" - рдкрд┐рдЫрд▓реЗ рд╡рд╛рд▓реЗ рдХреЗ рд╕рдорд╛рди, рд▓реЗрдХрд┐рди рд╕реНрдерд┐рд░ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрдЬрд╛рдп, рд╕реНрдЯреИрдХ рдкрд░ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП;
- "рд▓реЛрдб-рдЕрд╕реЗрдВрдмрд▓реА" - рд╕реНрдЯреИрдХ рд╕реЗ рд▓реЗрддрд╛ рд╣реИ, рдЗрд╕реЗ рдЕрд╕реЗрдВрдмрд▓реА рдореЗрдВ рдЬрд╛рдиреЗ рджреЗрддрд╛ рд╣реИ рдФрд░ рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ;
- "Invk" - рд╕реНрдЯреИрдХ рд╕реЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐, рддрд░реНрдХ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХрд╣рддрд╛ рд╣реИ "1133 рд╢рдмреНрдж SomeMethod рд╢рдмреНрдж TrueForth.MyClass рдкреНрд░рдХрд╛рд░ рдирдпрд╛ m @ invk"ред
рдореИрдВрдиреЗ рдлреЛрд░реНрдЯ рднрд╛рд╖рд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдореБрдЦреНрдп рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реИ, рдпрд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдПрдПрдирдПрд╕рдЖрдИ рдорд╛рдирдХреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдХрд╛рд░реНрдп рдбреАрдПрд╕рдПрд▓ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЬрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реИ, рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдпреЛрдЬрди рдХреА рднрд╛рд╖рд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдирд╣реАрдВ рд╣реИред рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╡рд┐рдХрд╕рд┐рдд рджреБрднрд╛рд╖рд┐рдпрд╛ рд╡рд┐рд╖рдп рдХреНрд╖реЗрддреНрд░ рдХреА рдПрдХ рд╕рд░рд▓ рднрд╛рд╖рд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
рдЙрдкрд░реЛрдХреНрдд рджреБрднрд╛рд╖рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рджреБрднрд╛рд╖рд┐рдпрд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдмрдорд┐рдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╢рдмреНрдж рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрд╛рдж рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрддред
public static bool Init4Th() { Interpreter = new OForth(); if (File.Exists(InitFile)) { Interpreter.Eval(File.ReadAllText(InitFile)); return true; } else { Console.WriteLine($" {InitFile} !"); return false; } }
рд╡рд┐рддрд░рдг рдкреНрд░рдгрд╛рд▓реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЙрджрд╛рд╣рд░рдг рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдВ
( ***** ***** ) word GetFReporter word ReportProvider.FlexReports.FReporterEntry type new m@ invk constant fr // : word ReportProvider.FlexReports.FDailyReport type new ; // : word AddReport fr m@ invk ; // : [ ' word , ] ; // : [ ' word , ] ; // : [ ' s" , ] ; // , " : ; // : dup [ ' word , ] swap word MailSql swap m! ; : dup [ ' word , ] swap word XlsSql swap m! ; ( ***** ***** ) cr s" " . cr cr " 08:00 mail@tinkoff.ru seizure.sql , " 08:00 mail@tinkoff.ru fixed-errors-top.sql fixed-errors.sql WO" 08:00 mail@tinkoff.ru wo-wait-complect-dates.sql " 07:30 mail@tinkoff.ru top-previous-input-errors.sql previous-input-errors.sql " 10:00 mail@tinkoff.ru collection-report.sql BPM " 08:00 mail@tinkoff.ru bpm-inbox-report.sql ScanDoc3 7 " 07:50 mail@tinkoff.ru new-sd3-complects-prevew.sql new-sd3-complects.sql ( ******************************** ) cr s" " . cr
рдЖрдк рдЕрдиреНрдпрдерд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдбреЗрдЯрд╛ рд╕реНрдЯреИрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рдХреЗ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдирдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреА рд╕реНрдХреИрди, рдПрдХ рд╕реНрдХреИрдирд░, рдПрдХ рд╡реЗрдм рдХреИрдорд░рд╛ рдпрд╛ рд╡рд░реНрдЪреБрдЕрд▓ рдбрд┐рд╡рд╛рдЗрд╕ (рдбреАрдмрдЧрд┐рдВрдЧ рдпрд╛ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП) рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреИрд░рд╛рдореАрдЯрд░, рд╕реЗрдЯрд┐рдВрдЧреНрд╕, рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдЖрд░рдВрднреАрдХрд░рдг рдХреНрд░рдо рдмрд╣реБрдд рдЕрд▓рдЧ рдФрд░ рддреБрдЪреНрдЫ рд░реВрдк рд╕реЗ рдХрд┐рд▓реЗ-рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
var interpreter = new OForth(); interpreter.DS.Push(this);
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдирд┐рдХрд▓рддрд╛ рд╣реИ:
s" @device:pnp:\\?\usb#vid_2b16&pid_6689&mi_00#6&1ef84f63&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global" s" Doccamera" word Scanning.Devices.PhotoScanner.PhotoScannerDevice type new dup s" 3264x2448, FPS:20, BIT:24" swap word SetSnapshotMode swap m@ invk dup s" 1280x720, FPS:30, BIT:24" swap word SetPreviewMode swap m@ invk word SetActiveDevice arctium m@ invk
рд╡реИрд╕реЗ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ * .ps рдФрд░ * .pdf рдПрдХ рд╕рдорд╛рди рддрд░реАрдХреЗ рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдкреЛрд╕реНрдЯрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдкреАрдПрдлрдбреА рджреЛрдиреЛрдВ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ "рдХрд┐рд▓реЗ" рдХрд╛ рдПрдХ рд╕рдмрд╕реЗрдЯ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕реНрдХреНрд░реАрди рдпрд╛ рдкреНрд░рд┐рдВрдЯрд░ рдкрд░ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣ рд╕рд╛рдВрддреНрд╡рдирд╛ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдореЛрдб рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдФрд░ рди рдХреЗрд╡рд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рдиред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рддреИрдпрд╛рд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдлрд┐рд░ рдЗрдВрдЯрд░рдкреНрд░рд┐рдЯрд░ рдХреЛ рд╕реНрдЯреИрдВрдбрд░реНрдб рдЗрдирдкреБрдЯ STIN рдкрд░ рд╕реЗрдЯ рдХрд░рдХреЗ рд╡реНрдпрд╛рдЦреНрдпрд╛ рд╢реБрд░реВ рдХрд░рдиреА рд╣реЛрдЧреАред
var interpreter = new OForth(); const string InitFile = "Init.4th"; if (File.Exists(InitFile)) { interpreter.Eval(File.ReadAllText(InitFile)); } else { Console.WriteLine($" {InitFile} !"); } interpreter.Eval(Console.In);
рдЖрд░рдВрднрд┐рдХ рд▓рд┐рдкрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛ рд╕рдХрддреА рд╣реИ:
( ***** ***** ) word ComplectBuilder.Program type constant main // : mode! [ ' word , ] word Mode main ms! ; // : init word Init main ms@ invk ; // : load [ ' word , ] word LoadFile main ms@ invk ; // : start word StartProcess main ms@ invk ; // : count word Count main ms@ invk ; // : all count ; // ( ***** ***** ) init cr cr s" , help" . cr cr ( ***** ***** ) : help s" :" . cr s" load scandoc_test.csv 0 all start" . cr bl bl s" load scandoc_test.csv -- " . cr bl bl s" 0 all start -- , 0 all " . cr cr s" DEV TEST PROD:" . cr s" mode! DEV init" . cr s" :" . cr s" word Mode main ms@ . cr" . cr ;
рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ, UI рдХреЗ рд╕рд╛рде рдЯреЗрдХреНрд╕реНрдЯрдмреЙрдХреНрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рди рдХреЗрд╡рд▓ рдПрдХ рдХрдВрд╕реЛрд▓ рдпрд╛ рдЯреЗрдХреНрд╕реНрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рд╕рд░рд▓ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕реЗрд╡рд╛, рдШрдЯрдХреЛрдВ рдХреЛ рд░реЛрдХрдирд╛ред рдЗрд╕ рддрд░рд╣ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рдбреЗрд╡рд▓рдкрд░ рдХреА рдХрд▓реНрдкрдирд╛ рдФрд░ рд╣рд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдп рддрдХ рд╕реАрдорд┐рдд рд╣реИрдВред , UI - .
. , , .
, :
public void Callback(string word, MulticastDelegate action) { if (string.IsNullOrWhiteSpace(word) || word.Any(c => " \n\r\t".Any(cw => cw == c))) { throw new Exception("invalid format of word"); } DS.Push(action); Eval($": {word} [ ' doLit , , ] invk ;"); }
DS.Push(action), . , , [ ], , . ' Tick , doLit, , . Comma ┬л,┬╗ doLit, .
, . , :
public class WoConfItem { public string ComplectType; public string Route; public string Deal; public bool IsStampQuery; }
тАФ , :
public class WoConfig { private OForth VM; private List<WoConfItem> _conf; public WoConfig(string confFile) { _conf = new List<WoConfItem>(); VM = new OForth();
:
\ WO passport configuration new-conf \ Config rules \ { -- begin config item, } -- end config item, * -- match any values \ Example: \ { complect-type * route offer deal 100500 is-stamp-query true } \ ***** offer ***** { complect-type offer route offer is-stamp-query false deal 5c18e87bfeed2b0b883fd4df } { complect-type KVK route offer is-stamp-query true deal 5d03a8a1edf8af0001876df0 } { complect-type offer-cred route offer is-stamp-query true deal 5d03a8a1edf8af0001876df0 } { complect-type offer-dep route offer is-stamp-query true deal 5d03a8a1edf8af0001876df0 } { complect-type quick-meeting route offer is-stamp-query true deal 5d03a8a1edf8af0001876df0 } { complect-type exica route offer is-stamp-query true deal 5d03a894e2f5850001435492 } { complect-type reissue route offer is-stamp-query true deal 5d03a894e2f5850001435492 } \ ***** offer-flow ***** { complect-type KVK route offer-flow is-stamp-query true deal 5d03a8a1edf8af0001876df0 } { complect-type offer-cred route offer-flow is-stamp-query true deal 5d03a8a1edf8af0001876df0 } { complect-type offer-dep route offer-flow is-stamp-query true deal 5d03a8a1edf8af0001876df0 } { complect-type reissue route offer-flow is-stamp-query true deal 5d03a894e2f5850001435492 }
, , DSL тАФ .
, ┬л┬╗. DSL.
, , тАФ , , , , тАФ . , .
тАФ , . тАФ , тАФ !
, .
- .
рд╕реМрднрд╛рдЧреНрдп рд╣реИ