А ещё бывает дампинг кода.
По мотивам - Консольная запускалка скриптов
Код скриптовой машины "дампит сам себя".
https://bitbucket.org/lulinalex/mindstream/commits/d6480ce3c175e60138deccb73c6ec221248d920b
Результат:
По мотивам - Консольная запускалка скриптов
@ DumpCode '*.ms.script' '.' ProcessFilesWithMask
Код скриптовой машины "дампит сам себя".
https://bitbucket.org/lulinalex/mindstream/commits/d6480ce3c175e60138deccb73c6ec221248d920b
Результат:
1 2 + . for [ 1 2 3 4 5 6 7 9 10 ] . VOID Test ForToTest ARRAY OPERATOR to ^@ IN aFrom ^ IN aTo @ ( OBJECT IN aLambda INTEGER VAR I I := ( aFrom DO ) DEC I ( aTo DO I ) - LOOP ( INC I I aLambda DO ) ) FunctorToIterator >>> Result ; // ARRAY OPERATOR to for ( 1 to 10 ) . '' . for ( 1 to 20 ) . '' . for ( 0 to 20 ) . '' . for ( -1 to 20 ) . '' . for ( -1 to 21 ) . '' . 0 for ( 1 to 10 ) + . '' . for ( 1 to 10 Reverted ) . ; // VOID Test ForToTest ForToTest for ( 1 to 20 ) . for ( @ ( IN anItem true ) ( 1 to 20 ) FILTER ) . 0 for ( @ ( IN anItem true ) ( 1 to 20 ) FILTER ) + . for ( @ ( IN anItem anItem 2 MOD 0 == ) ( 1 to 20 ) FILTER ) . for ( @ ( IN anItem anItem 2 MOD 0 != ) ( 1 to 20 ) FILTER ) . BOOLEAN FUNCTION IsEven INTEGER IN aValue aValue 2 MOD 0 == >>> Result ; // BOOLEAN FUNCTION IsEven for ( @ ( IN anItem anItem IsEven ) ( 1 to 20 ) FILTER ) . BOOLEAN FUNCTION IsEven INTEGER IN aValue aValue 2 MOD 0 == >>> Result ; // BOOLEAN FUNCTION IsEven BOOLEAN FUNCTION IsOdd INTEGER IN aValue aValue IsEven ! >>> Result ; // BOOLEAN FUNCTION IsOdd for ( @ ( IN anItem anItem IsOdd ) ( 1 to 20 ) FILTER ) . for ( @ ( IN anItem anItem IsOdd ) ( 1 to 20 ) FILTER ) . 1 2 + Msg for ( @ IsOdd ( 1 to 20 ) FILTER ) . ARRAY FILTER for ( @ IsOdd ( 1 to 20 ) FILTER ) . ARRAY FUNCTION >filter> ^ IN aFunctor ARRAY IN anArray aFunctor anArray FILTER >>> Result ; // ARRAY FUNCTION >filter> ARRAY FILTER for ( ( 1 to 20 ) >filter> IsOdd ) . '-------------------' . for ( ( 1 to 20 ) >filter> IsEven ) . ARRAY FUNCTION >filter> ^ IN aFunctor ^@ IN anArray aFunctor anArray DO FILTER >>> Result ; // ARRAY FUNCTION >filter> ARRAY FILTER for ( ( to >filter> IsOdd ) . '-------------------' . for ( ( to >filter> IsEven ) . for ( ( to >filter> IsOdd ) . '-------------------' . for ( ( to >filter> IsEven ) . REDIFINITION : . >>std::out ; // REDIFINITION : . for ( ( to >filter> IsOdd ) . '-------------------' . for ( ( to >filter> IsEven ) . for ( ( to >filter> IsOdd ) . '-------------------' . for ( ( to >filter> IsEven ) . for ( @ ( IN anItem anItem 1 + ) ( to >filter> IsOdd MAP ) . '-------------------' . for ( @ ( IN anItem anItem 1 + ) ( to >filter> IsEven MAP ) . for ( @ ( 1 + ) ( to >filter> IsOdd MAP ) . '-------------------' . for ( @ ( 1 + ) ( to >filter> IsEven MAP ) . @ ( 1 + ) ( to >filter> IsOdd MAP . '-------------------' . @ ( 1 + ) ( to >filter> IsEven MAP . [ 1 2 3 4 5 ] . ARRAY MAP for ( @ ( 1 + ) ( to >filter> IsOdd MAP ) . '-------------------' . for ( @ ( 1 + ) ( to >filter> IsEven MAP ) . ARRAY FUNCTION >map> ^ IN aFunctor ^@ IN anArray aFunctor anArray DO MAP >>> Result ; // ARRAY FUNCTION >map> ARRAY MAP for ( ( to >filter> IsOdd >map> ( 1 + ) ) . '-------------------' . for ( ( to >filter> IsEven >map> ( 1 + ) ) . for ( ( to >filter> IsOdd >map> ( 1 + ) ) . '-------------------' . for ( ( to >filter> IsEven >map> ( 1 + ) ) . ( to >filter> IsOdd >map> ( 1 + ) . '-------------------' . ( to >filter> IsEven >map> ( 1 + ) . for ( ( to >filter> IsOdd >map> ( 1 + ) Reverted ) . '-------------------' . for ( ( to >filter> IsEven >map> ( 1 + ) Reverted ) . ARRAY Reverted ARRAY Reverted for ( ( to >filter> IsOdd >map> ( 1 + ) Reverted ) . '-------------------' . for ( ( to >filter> IsEven >map> ( 1 + ) Reverted ) . for ( ( to >filter> IsOdd >map> ( 1 + ) Reverted ) . '-------------------' . for ( ( to >filter> IsEven >map> ( 1 + ) Reverted ) . USES for ( ( to >filter> IsOdd >map> ( 1 + ) Reverted ) . '-------------------' . for ( ( to >filter> IsEven >map> ( 1 + ) Reverted ) . USES for ( ( to >filter> IsOdd >map> ( 1 + ) Reverted ) . '-------------------' . for ( ( to >filter> IsEven >map> ( 1 + ) Reverted ) . for ( ( to >filter> IsOdd >map> ( 1 + ) Reverted ) . '-------------------' . for ( ( to >filter> IsEven >map> ( 1 + ) Reverted ) . help for ( ( to >filter> IsOdd >map> Inc1 Reverted ) . '-------------------' . for ( ( to >filter> IsEven >map> Inc1 Reverted ) . for ( ( to >filter> IsOdd >map> Inc1 Reverted ) . '-------------------' . for ( ( to >filter> IsEven >map> Inc1 Reverted ) . for ( ( to >filter> IsOdd >map> Inc1 Reverted ) . '-------------------' . for ( ( to >filter> IsEven >map> Inc1 Reverted ) . for ( ( to >filter> IsOdd >map> Dec1 Reverted ) . '-------------------' . for ( ( to >filter> IsEven >map> Dec1 Reverted ) . for ( ( to >filter> IsOdd >map> Inc1 Reverted ) . '-------------------' . for ( ( to >filter> IsEven >map> Inc1 Reverted ) . for ( ( to >filter> IsOdd >map> Dec1 Reverted ) . '-------------------' . for ( ( to >filter> IsEven >map> Dec1 Reverted ) . for ( ( to >filter> IsOdd >map> Inc1 Reverted ) . '-------------------' . for ( ( to >filter> IsEven >map> Inc1 Reverted ) . for ( ( to >filter> IsOdd >map> Dec1 Reverted ) . '-------------------' . for ( ( to >filter> IsEven >map> Dec1 Reverted ) . for ( ( to >filter> IsOdd >map> Inc1 Reverted ) . '-------------------' . for ( ( to >filter> IsEven >map> Inc1 Reverted ) . for ( ( to >filter> IsOdd >map> Dec1 Reverted ) . '-------------------' . for ( ( to >filter> IsEven >map> Dec1 Reverted ) . for ( ( to >filter> IsOdd >map> Inc1 Reverted ) . '-------------------' . for ( ( to >filter> IsEven >map> Inc1 Reverted ) . for ( ( to >filter> IsOdd >map> Dec1 Reverted ) . '-------------------' . for ( ( to >filter> IsEven >map> Dec1 Reverted ) . for ( ( to >filter> IsOdd >map> Inc1 Reverted ) . '-------------------' . for ( ( to >filter> IsEven >map> Inc1 Reverted ) . for ( ( to >filter> IsOdd >map> Dec1 Reverted ) . '-------------------' . for ( ( to >filter> IsEven >map> Dec1 Reverted ) . for ( ( to >filter> IsOdd >map> Inc1 Reverted ) . '-------------------' . for ( ( to >filter> IsEven >map> Inc1 Reverted ) . for ( ( to >filter> IsOdd >map> Dec1 Reverted ) . '-------------------' . for ( ( to >filter> IsEven >map> Dec1 Reverted ) . for ( ( to >filter> IsOdd >map> Inc1 Reverted ) . '-------------------' . for ( ( to >filter> IsEven >map> Inc1 Reverted ) . for ( ( to >filter> IsOdd >map> Dec1 Reverted ) . '-------------------' . for ( ( to >filter> IsEven >map> Dec1 Reverted ) . @ ( IN anItem true ) [ 1 2 3 4 5 ] FILTER . for ( ( to >filter> IsOdd >map> Inc1 Reverted ) . разделитель for ( ( to >filter> IsEven >map> Inc1 Reverted ) . разделитель for ( ( to >filter> IsOdd >map> Dec1 Reverted ) . разделитель for ( ( to >filter> IsEven >map> Dec1 Reverted ) . for ( ( to >filter> IsOdd >map> Inc1 Reverted ) . разделитель for ( ( to >filter> IsEven >map> Inc1 Reverted ) . разделитель for ( ( to >filter> IsOdd >map> Dec1 Reverted ) . разделитель for ( ( to >filter> IsEven >map> Dec1 Reverted ) . разделитель for числа ( ( to >filter> IsOdd >map> Inc1 Reverted ) . разделитель for числа ( ( to >filter> IsEven >map> Inc1 Reverted ) . разделитель for числа ( ( to >filter> IsOdd >map> Dec1 Reverted ) . разделитель for числа ( ( to >filter> IsEven >map> Dec1 Reverted ) . разделитель for числа ( ( to >filter> IsOdd >map> Inc1 Reverted ) . разделитель for числа ( ( to >filter> IsEven >map> Inc1 Reverted ) . разделитель for числа ( ( to >filter> IsOdd >map> Dec1 Reverted ) . разделитель for числа ( ( to >filter> IsEven >map> Dec1 Reverted ) . разделитель for числа ( ( to >filter> IsOdd >map> Inc1 Reverted ) . разделитель for числа ( ( to >filter> IsEven >map> Inc1 Reverted ) . разделитель for числа ( ( to >filter> IsOdd >map> Dec1 Reverted ) . разделитель for числа ( ( to >filter> IsEven >map> Dec1 Reverted ) . разделитель for числа ( ( to >filter> IsOdd >map> Inc1 Reverted ) . разделитель for числа ( ( to >filter> IsEven >map> Inc1 Reverted ) . разделитель for числа ( ( to >filter> IsOdd >map> Dec1 Reverted ) . разделитель for числа ( ( to >filter> IsEven >map> Dec1 Reverted ) . разделитель for числа ( ( to >filter> IsOdd >map> Inc1 Reverted ) . разделитель for числа ( ( to >filter> IsEven >map> Inc1 Reverted ) . разделитель for числа ( ( to >filter> IsOdd >map> Dec1 Reverted ) . разделитель for числа ( ( to >filter> IsEven >map> Dec1 Reverted ) . разделитель for числа ( ( to >filter> IsOdd >map> Inc1 Reverted ) . разделитель for числа ( ( to >filter> IsEven >map> Inc1 Reverted ) . разделитель for числа ( ( to >filter> IsOdd >map> Dec1 Reverted ) . разделитель for числа ( ( to >filter> IsEven >map> Dec1 Reverted ) . разделитель for числа ( ( to >filter> IsOdd >map> Inc1 Reverted ) . разделитель for числа ( ( to >filter> IsEven >map> Inc1 Reverted ) . разделитель for числа ( ( to >filter> IsOdd >map> Dec1 Reverted ) . разделитель for числа ( ( to >filter> IsEven >map> Dec1 Reverted ) . разделитель числа ( ( to >filter> IsOdd >map> Inc1 Reverted ) . разделитель числа ( ( to >filter> IsEven >map> Inc1 Reverted ) . разделитель числа ( ( to >filter> IsOdd >map> Dec1 Reverted ) . разделитель числа ( ( to >filter> IsEven >map> Dec1 Reverted ) . разделитель @ ( IN anItem true ) [ 1 2 3 4 5 ] FILTER IT . for числа ( ( to >filter> IsOdd >map> IncWith 1 Reverted ) . разделитель for числа ( ( to >filter> IsEven >map> IncWith 1 Reverted ) . разделитель for числа ( ( to >filter> IsOdd >map> Dec1 Reverted ) . разделитель for числа ( ( to >filter> IsEven >map> Dec1 Reverted ) . разделитель for числа ( ( to >filter> IsOdd >map> IncWith 1 Reverted ) . разделитель for числа ( ( to >filter> IsEven >map> IncWith 1 Reverted ) . разделитель for числа ( ( to >filter> IsOdd >map> DecWith 1 Reverted ) . разделитель for числа ( ( to >filter> IsEven >map> DecWith 1 Reverted ) . разделитель 'Size: ' 1024 IntToStr Cat . [ 'Size: ' 1024 IntToStr ' bytes' ] strings:Cat . STRING FUNCTION any:Cat ARRAY IN anArray '' anArray IT ( ToPrintable Cat ) >>> Result ; // STRING FUNCTION any:Cat [ 'Size: ' 1024 ' bytes' ] any:Cat . STRING FUNCTION any:Cat ARRAY IN anArray '' anArray IT string:CatWihAny >>> Result ; // STRING FUNCTION any:Cat STRING FUNCTION string:CatWihAny STRING IN aString IN aValue aString aValue ToPrintable Cat >>> Result ; // STRING FUNCTION string:CatWihAny [ 'Size: ' 1024 ' bytes' ] any:Cat . STRING FUNCTION any:Cat ARRAY IN anArray '' for anArray string:CatWihAny >>> Result ; // STRING FUNCTION any:Cat STRING FUNCTION string:CatWihAny STRING IN aString IN aValue aString aValue ToPrintable Cat >>> Result ; // STRING FUNCTION string:CatWihAny [ 'Size: ' 1024 ' bytes' ] any:Cat . 'Size: ' (+) ( 1024 ToPrintable ) (+) ' bytes' . : (string) ^ IN aValue aValue DO ToPrintable ; // : (string) 'Size: ' (+) (string) 1024 (+) ' bytes' . 'Size: ' (+) (string) 1024 (+) ' bytes' . A . [ 'Size: ' 1024 ' bytes' ] any:Cat . [ 'Size: ' 1024 ' bytes.' ' And it's ' true ] any:Cat . TRY 'Line too long' RAISE EXCEPT current:exception:Message . END TRY 'got here' . EXIT 'not here' . FINALLY 'always here' . END BOOLEAN INTEGER VAR A BOOLEAN INTEGER STRING VAR B STRING VAR C INTEGER VAR D @ A |N . @ A %ST |N . @ A pop:Word:Directives . разделитель @ B |N . @ B %ST |N . @ B pop:Word:Directives . разделитель @ C |N . @ C %ST |N . @ C pop:Word:Directives . разделитель @ D |N . @ D %ST |N . @ D pop:Word:Directives . [ 1 2 3 [ 4 5 [ 6 7 8 ] 9 ] 10 ] . VOID Test CodeDumpTest [ 1 2 3 [ 4 5 [ 6 7 8 ] 9 ] 10 ] . @SELF DumpElement ; // VOID Test CodeDumpTest CodeDumpTest @ [ 1 2 3 [ 4 5 [ 6 7 8 ] 9 ] 10 ] DumpElement @ [ 1 2 3 [ 4 5 [ 6 7 8 ] 9 ] 10 ] DumpElement @ ( 1 2 3 [ 4 5 [ 6 7 8 ] 9 ] 10 ) DumpElement @ [ 1 2 3 [ 4 5 [ 6 7 8 ] 9 ] 10 ] DumpElement @ ( 1 2 3 ( 4 5 [ 6 7 8 ] 9 ) 10 ) DumpElement @ . '*.ms.script' '.' ProcessFilesWithMask @ [ 1 2 3 [ 4 5 [ 6 7 8 ] 9 ] 10 ] DumpElement @ ( 1 2 3 ( 4 5 [ 6 7 8 ] 9 ) 10 ) DumpElement @ ( 1 2 3 ( 4 5 ( 6 7 8 ) 9 ) 10 ) DumpElement @ DumpCode '*.ms.script' '.' ProcessFilesWithMask @ [ 1 2 3 [ 4 5 [ 6 7 8 ] 9 ] 10 ] DumpElement @ ( 1 2 3 ( 4 5 [ 6 7 8 ] 9 ) 10 ) DumpElement @ ( 1 2 3 ( 4 5 ( 6 7 8 ) 9 ) 10 ) DumpElement @ ( VAR X ) DumpElement @ . '*.ms.script.co' '.' ProcessFilesWithMask
Комментариев нет:
Отправить комментарий