рд╕рднреА рдХреЗ рд▓рд┐рдП рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ (рдЖрд░рдИрдПрдлрдП)
рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░
рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореБрдЦреМрдЯрд╛ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реБрдП рд╕рдмреНрд╕рдЯреНрд░рд┐рдВрдЧ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдкреНрд░рдгрд╛рд▓рд┐рдпрд╛рдВ рд╣реИрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╡реЗ рдЕрдкрдиреА рд╢рдХреНрддрд┐ рдЦреЛ рджреЗрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рд╣реА рдХрдИ рдХрд╛рд░рдХреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдбрд┐рдЬрд╛рдЗрди рдмреЛрдЭрд┐рд▓, рдЕрд╕рдВрдЧрдд рдФрд░ рдмрдирд╛рдП рд░рдЦрдиреЗ рдореЗрдВ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред
рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА - рдЖрд░рдИрдПрдлрдПред рд╕рднреА рдХреЗ рд▓рд┐рдП рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ред
рдЙрдирдХрд╛ рд╡рд┐рдЪрд╛рд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИред рдЬреИрд╕реЗ рд╣реА рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдмрдВрдж рд╣реЛ рдЬрд╛рддреА рд╣реИ - рдЗрд╕реЗ рджреЛ рдореЗрдВ рддреЛрдбрд╝ рджреЗрдВред рдЖрд╢рд╛рд╡рд╛рджреА, рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ, рддрдм рднреА рдЗрд╕реЗ рдПрдХ рддрдХ рдХрдо рдХрд░ рджреЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЧрддрд┐ рдореЗрдВ рдХреЛрдИ рдиреБрдХрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдХреЛрдб рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдЖрд╕рд╛рди рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП,
ge.tt/9snPkzG/v/0 (рд╕реНрд╡рд░реВрдк \ .odt)
рдЙрджрд╛рд╣рд░рдг
C ++ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬреЗрдВ
рдбрдореА рд╡рд░реНрдЧ рдХреЗ рд╕рднреА рддрд░реАрдХреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВред
рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рдмрдбрд╝реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЗрдирдкреБрдЯ рд╣реИред рдЖрдк рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╕рдордЭрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
PROGRAM тАЬFindMethodsтАЭ ^name^ = ~\w?[\w|\d]*~ BLOCK тАЬFindClassтАЭ // PUSH BLOCKVAR $regexp = тАЬclass тАЭ+%classname%+тАЭ\s*\{.*\}.*;тАЭ MATCH $regexp CATCH MATCH_FAIL RETURN array() AS $list; RETURN array() AS $result; FINISH BLOCKVAR $class_code = MATCHED INCOMING = $class_code BLOCKVAR $method = ^name^+~\w*~+^name^+~\([\^name\^\w*\^name\^\w*\,?]*\)\w*~ BLOCKVAR $declarations = array(); BLOCKVAR $realisations = array(); TRY WHILE 1 MATCH PASS LIMIT 1 $method IF select(0,1) INCOMING != тАЬ;тАЭ CALL тАЬSearchEndOfFunctionтАЭ REMAINED $realisations ADD (MATCHED + RESULT $body) ELSE $declarations ADD MATCHED ENDIF END ON MATCH_FAIL OR END_OF_STRING RETURN $declarations AS $list RETURN $realisations AS $result FINISH POP ENDBLOCK BLOCK тАЬSearchEndOfFunctionтАЭ BLOCKVAR UINT $level = 0 MATCH ~[\{|\}]~ FOREACH ALL_MATCHED AS $t IF $t == тАЬ{} $level++; ELSE $level--; ENDIF IF $level == 0 BLOCKVAR STRING $ret = select(ALL_MATCHED[0], ALL_MATCHED[ITERATION]) INCOMING_BLOCK RETURN $ret AS $body ENDIF END ENDBLOCK BLOCK тАЬAddClassNameтАЭ MATCH PASS LIMIT 1 ^name^+тАЭ\w*тАЭ BLOCKVAR $ret = MATCHED $ret += тАЬ[\^name\^\w*::\w*]*тАЭ+%classname%+тАЭ\w*::\w*тАЭ $ret += REMAIN RETURN $ret ENDBLOCK BLOCK тАЬSearchDeclaredFunctionsтАЭ BLOCKVAR $dec = %declared% IMPLODE ($dec, тАЬ|тАЭ) $string $string = тАЬ[тАЬ+$string+тАЭ]тАЭ MATCH $string BLOCVAR $realistaions = array() FOREACH ALL_TILES as $tile IF ITERATION % 2 == 1 IF select(0,1) INCOMING != тАЬ;тАЭ CALL тАЬSearchEndOfFunctionтАЭ ALL_TILES[ITERATION + 1] $realisations ADD (ALL_TILES[ITERATION] + RESULT $body) ENDIF ENDIF END RETURN $realisations AS $result ENDBLOCK // BLOCKVAR $classname = $arg1 CALL тАЬFindClassтАЭ BLOCKVAR $ret = RESULT $result BLOCKVAR $declared = RESULT $list CALL тАЬSearchDeclaredFunctionsтАЭ $ret ADD RESULT $result RETURN $ret ENDPROGRAM
рдХрд╛рд░реНрдпрдХреНрд░рдо рдмрд╣реБрдд рдЫреЛрдЯрд╛ рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рдЕрдзрд┐рдХ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдерд╛ред рдЗрд╕реА рдХреЗ рд╕рдорд╛рди рдПрдХ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ ... рдореИрдВ рд╕рд▓рд╛рд╣ рдирд╣реАрдВ рджреЗрддрд╛ред
рдкреНрд░рд▓реЗрдЦрди
рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░
INT
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░рдХрд╛рд░ред рдкреВрд░реНрдгрд╛рдВрдХред рд░реЗрдВрдЬ .2 ^ 31 рд╕реЗ + 2 ^ 31-1ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди 0 рд╣реИред
рд▓рдВрдмреА
рдкреВрд░реНрдгрд╛рдВрдХред рд░реЗрдВрдЬ .2 ^ 63 рд╕реЗ + 2 ^ 63-1ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди 0 рд╣реИред
uint
ULONG
STRING
рд╕реНрдЯреНрд░рд┐рдВрдЧред UINT рдХреА рдЕрдзрд┐рдХрддрдо рд▓рдВрдмрд╛рдИред рдирд┐рдЬреА рдХреНрд╖реЗрддреНрд░ START рдФрд░ COUNTред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ рдФрд░ рдЕрдкрд╡рд╛рдж рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред
рдЯрд╛рдЗрд▓
рддрд╛рд░ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ред рдирд┐рдЬреА рдХреНрд╖реЗрддреНрд░ START, END, COUNT, PARENT_STRINGред
рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЪрд░
рдЗрдирдХрдорд┐рдВрдЧ
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреНрд░рд┐рдВрдЧред рдпрджрд┐ рдХреЛрдИ рдЪрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рддред
рдЧреНрд░реЗрдЯрд░рд┐рдВрдЧ INCOMING_CURRENT рдХрд╛ рдПрдХ рдкрд░реНрдпрд╛рдп рд╣реИ
- INCOMING_PROGRAM - рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдЖрдПрдВ
- INCOMING_BLOCK - рдмреНрд▓реЙрдХ рдореЗрдВ рдЖрдпрд╛ рдерд╛
- INCOMING_CURRENT - рд╡рд░реНрддрдорд╛рди рдкрдВрдХреНрддрд┐
- INCOMING_LAST - рдЕрдВрддрд┐рдо рдкрд░рд┐рд╡рд░реНрддрди рддрдХ
рдорд┐рд▓рд╛рди
рдкрд╣рд▓рд╛ рдореИрдЪ рдЖрдЦрд┐рд░реА рдореИрдЪ рдореЗрдВ рдЖрдпрд╛ред
ALL_MATCHED
рдЕрдВрддрд┐рдо рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рднреА рдореИрдЪреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреАред
рдЬрд╕
MATCHED рдХреЗ рдмрд╛рдж рдкрд╣рд▓рд╛ рдХрд┐рд░рджрд╛рд░
ALL_REMAINED
ALL_MATCHED рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдг рдХреЗ рдмрд╛рдж рдкрд╣рд▓реЗ рдЕрдХреНрд╖рд░
ALL_TILES
рд╕рднреА рд╡рд┐рд╖рдо рд╣реИ ALL_MATCHEDред рдмрд╛рдХреА рдЧрд╛рдпрдм рд▓рд╛рдЗрдиреЗрдВ рд╣реИрдВ, рд▓рд╛рдЗрди рдХреЗ рд╕рд╣реА рдХреНрд░рдо рдореЗрдВред
рдпрд╛рддреНрд░рд╛
рд╡рд░реНрддрдорд╛рди рд▓реВрдк рдореЗрдВ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕рдВрдЦреНрдпрд╛ред рдмрд╛рд╣рд░реА рдореЗрдВ рдкреБрдирд░рд╛рд╡реГрддрд┐ рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рдЪрд░ рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВред
CALLSTACK
рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдХреЙрд▓ рд╕реНрдЯреИрдХ
QUERY_LOG
рдЖрджреЗрд╢реЛрдВ рдХрд╛ рд▓реЙрдЧ рдЬреЛ рдПрдХ рддрд░рд╣ рд╕реЗ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдореЗрдВ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╛рдж рд░рдЦрдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдирдХрд▓ рд▓рд╛рдЗрдиреЗрдВ (рдЕрдЪрд╛рдирдХ рдмрд╛рдж рдореЗрдВ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдерд╛)ред рдЖрдиреЗ рд╡рд╛рд▓реА рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рд╣реА рдХреЙрдкреА рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд░реЗрдВред
EXCEPTION_STRING
рддреНрд░реБрдЯрд┐ рдХрд╛ рд╕рд╛рд░ рд╕рдордЭрд╛рдиреЗ рд╡рд╛рд▓реА рдПрдХ рдкрдВрдХреНрддрд┐ред рдШрдЯрдирд╛ рдХрд╛ рд╕реНрдерд╛рди, рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░, рдкрд░рд┐рдгрд╛рдоред
рдиреНрдпреВрдирддрдо рд╕реЗрдЯ
рд╕рд░рд▓ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ
рдореИрдЪ
MATCH [IGNORE {ign_count | FIRST}] [рдкрд╛рд╕] [рд╕реАрдорд╛ {рд╕реАрдорд╛_рдХрд╛рдЙрдВрдЯ}] reg_exp [processing_string]
Reg_exp рдЪреЗрдХ рдХрд░реЗрдВ, MATCHED (рдбрд┐рдлрд╝реЙрд▓реНрдЯ) рдореЗрдВ START_ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ_string рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ
IGNORE - рдкрд╣рд▓реЗ рдХреБрдЫ рдореИрдЪреЛрдВ рдХреЛ рдЫреЛрдбрд╝реЗрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ IGNORE 0
PASS - ALL_REMAINED рдХреЛ рдЕрдВрддрд┐рдо рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ
рд▓рд┐рдорд┐рдЯ - рдореИрдЪ рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╕рдмрд░реВрдЯреАрди рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, LIMIT 0 рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рддрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
reg_exp - ~ рдХреЗ рдмреАрдЪ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдПрдХ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдПрдХ рдЪрд░ рд╣реЛ рд╕рдХрддреА рд╣реИред
рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг_рд╕реНрдЯреНрд░рд┐рдВрдЧ - рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧред рдбрд┐рдлрд╝реЙрд▓реНрдЯ INCOMING
рдЧреВрдВрдЬ
рдИрд╕реАрдПрдЪрдУ рд╕реНрдЯреНрд░рд┐рдВрдЧ
рдкрд░рд┐рдгрд╛рдо рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЖрдЙрдЯрдкреБрдЯред
рдПрдХ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рдЬрдЧрд╣ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИ:
MATCH PASS ~ some_regexp ~
$ рдЯрд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ FOR_TACH ALL_TILES
рдпрджрд┐ ITERATION% 2
// рд╕рднреА рдорд┐рд▓рд╛рди рд╡рд╛рд▓реЗ рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдмрджрд▓реЗрдВ
ECHO "REPLACED"
рд╡рд░рдирд╛
// рд╣рдо рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╕рдВрдпреЛрдЧ рдХреЗ рдмреАрдЪ рд╕рднреА рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдВрдЧреЗ
ECHO $ тАЛтАЛрдЯрд╛рдЗрд▓
endif
рдЕрдВрдд
рдЕрдЧрд░ ELSE ENDIF
рдпрджрд┐ expr рддреЛ [ELSE рд╡рд░рдирд╛] ENDIF
рдпрджрд┐ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рд╢реВрдиреНрдп рдХреЗ рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рд╣реИ, рддреЛ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛, рдЕрдиреНрдпрдерд╛
рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╕реЗрдЯ
рдХрд╛рд░реНрдпрдХреНрд░рдо
рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдЖрджреЗрд╢реЛрдВ рдХрд╛ рдПрдХ рдкрд░рдорд╛рдгреБ рд╕рдореВрд╣ рд╣реИ рдЬреЛ рдПрдХ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ "рдбрд┐рдлрд╝реЙрд▓реНрдЯ" рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рдкреИрд░рд╛рдореАрдЯрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ (рдпрд╛ рдзрд╛рдЧрд╛) рд╣реЛ рд╕рдХрддреА рд╣реИ рдФрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдЪрд▓ рд╕рдХрддреА рд╣реИред рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕реЗ рджреВрд╕рд░реЗ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЖрдк рдкрдбрд╝реЛрд╕реА рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рддрд░реАрдХреЛрдВ (рдпрджрд┐ рд╡реЗ рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВред
рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕рднреА рдмреНрд▓реЙрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреБрдВрдЬрд╛рдЗрд╢ рд╣реИред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╕рднреА рдЖрджреЗрд╢ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдПрдХ рдЕрд╢рдХреНрдд рдирд╛рдо рдХреЗ рд╕рд╛рде рд╕рдВрд▓рдЧреНрди рд╣реИрдВ (рдЗрд╕реЗ рдЕрдиреНрдп рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рд╕реЗ рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)
рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдирд╛рдо arg0 [arg1 arg2 ...] рдХреЛрдб ENDPROGRAM
рдирд╛рдо - рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдирд╛рдо
arg0 рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИред INCOMING_PROGRAM рдмрди рдЬрд╛рддрд╛ рд╣реИ
рдХреЛрдб - рдШреЛрд╖рдгрд╛рдУрдВ рд╕рд╣рд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛрдбред
рдХреЛрдб рдмреНрд▓реЙрдХ рдПрдХ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╣реБрдБрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред
program_name :: block_nameред
рдмреНрд▓реЙрдХ
рдмреНрд▓реЙрдХ рдирд╛рдо [рд╕реНрдЯреНрд░рд┐рдВрдЧ]
рдХреЛрдб рдХрд╛ рдЧреИрд░-рд╕реНрд╡-рдирд┐рд╣рд┐рдд рдЯреБрдХрдбрд╝рд╛ред рджреЛ рдЧреЛрдЯреЛ рдЬрдореНрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдиред рдпрджрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреА рдЬрд╛рддреА рд╣реИ - рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд░рд┐рдЯрд░реНрди рдХреЗ рдмрд╛рдж рдЗрд╕реА INCOMING рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддрд╛ рд╣реИред
PUSH POP
PUSH [var1 var2]
рд╕рд┐рд╕реНрдЯрдо рдЪрд░ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рд╣реЗрдЬреЗрдВред рдЖрдк рд╕реНрдерд╛рдиреАрдп рдЪрд░ (рд╕рдВрдЪрдп рджреНрд╡рд╛рд░рд╛) рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╡рд░ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдХреБрдЫ рд╕рд┐рд╕реНрдЯрдо рдЪрд░ рдХреЛ рдмрд╛рд╣рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ!
рдкреАрдУрдкреА - PUSH рд╕реЗ рдкрд╣рд▓реЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ
BLOCKVAR
рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдЪрд░ рдХреЗрд╡рд▓ рд╡рд░реНрддрдорд╛рди рджрд╛рдпрд░реЗ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ, рдФрд░ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдкрд░ рдирд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
RETURN рдкрд░рд┐рдгрд╛рдо
рдПрдХ рдмреНрд▓реЙрдХ / рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕реЗ рдЕрд╕реНрдерд╛рдпреА рдЪрд░ рдХреЗ рдореВрд▓реНрдп рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред
RETURN рдирд╛рдо
рдХреЙрд▓рд┐рдВрдЧ рдХрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рдореЗрдВ рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, RESULT рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдЕрдЧрд▓рд╛ рдмреНрд▓реЙрдХ рдХрд╣реЗ рдЬрд╛рдиреЗ рддрдХ рдорд╛рди рдорд╛рдиреНрдп рд╣реИред
рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдореЗрдВ рддреНрд░реБрдЯрд┐
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди, рд╡рд┐рднрд┐рдиреНрди рдЕрд╕рд╛рдзрд╛рд░рдг рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╕рдВрднрд╡ рд╣реИрдВ рдЬреЛ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдкрд╛рдареНрдпрдХреНрд░рдо рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдкрд╡рд╛рдж рдкреНрд░рдгрд╛рд▓реА рд╣реИред
рдЕрдкрд╡рд╛рдж: рдЕрдкрд╡рд╛рдж_рдирд╛рдо [рдпрд╛ рдЕрдкрд╡рд╛рдж_рдирд╛рдо ...]
CATCH рдЦрддреНрдо
CATCH рдЕрдкрд╡рд╛рдж рдХреЛрдб [CATCH рдЕрдкрд╡рд╛рдж рдХреЛрдб ...] рдЕрдВрддрд┐рдо
рдкрд╣рд▓реЗ CATCH рдмреНрд▓реЙрдХ рдХреА рд▓рд╛рдЗрди рдкрд░ рд╣реБрдИ рддреНрд░реБрдЯрд┐ рдХреЛ рдкрдХрдбрд╝рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдпрд╣ рдЙрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрджрд┐ рдЗрд╕ рдЦрдВрдб рдореЗрдВ рдПрдХ рдЕрд╕рд╛рдзрд╛рд░рдг рд╕реНрдерд┐рддрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред
рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ
рдЕрдкрд╡рд╛рдж рдХреЛрдб рдкрд░ TRY рдХреЛрдб [рдЕрдкрд╡рд╛рдж рдХреЛрдб рдкрд░ ...] рдЕрдВрддрд┐рдо
рдлреЗрдВрдХреЛ
рдЕрдкрд╡рд╛рдж рд╣реИ
рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ
рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░
- MATCH_FAIL - regexp рдХреА рдХреЛрдИ рднреА рдШрдЯрдирд╛ рдирд╣реАрдВ рдЦреЛрдЬ рд╕рдХрд╛
- END_OF_STRING - рдХреБрдЫ рдкрд╛рдП рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдВрдд рддрдХ рдкрд╣реБрдБрдЪ рдЧрдпрд╛ рдерд╛ (рддрд╛рддреНрдкрд░реНрдп MATCH_FAIL)
- WRONG_REGEXP - regex рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓
- VARIABLE_OVERFLOW - рдЪрд░ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣
- UNSIGNED_NEGATIVE - рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЛрдгрд╛рддреНрдордХ рдорд╛рди рдЬреЛрдбрд╝рдирд╛
- WRONG_STRING_INDEXES - рдкрдВрдХреНрддрд┐ рдХреА рд╕реАрдорд╛рдУрдВ рд╕реЗ рдкрд░реЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдПрдХ рдкрдВрдХреНрддрд┐ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕
- OUT_OF_ARRAY - рдЧреИрд░-рдореМрдЬреВрдж рд╕рд░рдгреА рддрддреНрд╡реЛрдВ (рдмрд╛рд╣рд░) рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕
рд╡рд┐рд╢реЗрд╖ рдбрд┐рдЬрд╛рдЗрди
~ рд░реЗрдЧреЗрдХреНрд╕рдкреА ~
рд╕рд╛рдордЧреНрд░реА - рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐
% рдирд╛рдо%
рд░рди рд╕рдордп рдкрд░, рдЗрд╕реЗ $ рдирд╛рдо рдЪрд░ рдХреЗ рдореВрд▓реНрдп рдХреА рдкреНрд░рддрд┐ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред (рд╕реНрдЯреИрдХ рдкрд░ рдирд┐рдХрдЯрддрдо)
# рдирд╛рдо #
рдПрдирд╛рд▓реЙрдЧ рдкрд░рд┐рднрд╛рд╖рд┐рдд
^ рдирд╛рдо ^
рд░реЗрдЧреЗрдХреНрд╕ рд╕рдВрджрд░реНрдн ~~ рдЬреИрд╕реЗ \ _ рдХреЗ рдЕрдВрджрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
^ рд╣реИрд▓реЛ ^ = ~ рд╣реЗрд▓ {2} рдУ ~
~ \ _ рд╣реИрд▓реЛ \ _ рджреБрдирд┐рдпрд╛ ~
рддрд╛рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ
рд╕рд░рдгреА {рдЯрд╛рдЗрд▓} SPLIT (рдкрд░рд┐рдзрд┐) [рд╕реНрдЯреНрд░рд┐рдВрдЧ]
рдЯрд╛рдЗрд▓ рдХрд╛ рдЪрдпрди (рд╢реБрд░реВ, рдЕрдВрдд) [рд╕реНрдЯреНрд░рд┐рдВрдЧ]
рдкрд╛рд╕ (рдЧрд┐рдирддреА) [рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ]
рдХрдЯ (рдЧрд┐рдирддреА) [рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ]
CUT_AFTER (рд╕реВрдЪрдХрд╛рдВрдХ) [рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ]
рдкреНрд░рднрд╛рд╡ (рд╕рд░рдгреА [, delimeter]) рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ