при вводе код конвертируется препроцессором написанным на javascript, меняйте на здоровье
#preprocessor "please_make_this_dll.dll" // пример // локальные переменные $x и $y - имена поменять sub(fn1, $x, $y) // возвращаемое значение - имя поменять $ret = $x * $x + $y * $y end_sub for ($x = 0, $x < 5) for ($y = 0, $y < 5) // вызов функции - сохранить возвращаемое // значение во временную переменную $s = $s + fn1($x, $y) end_cyc end_cyc // пример 2 sub(fn2, $i) // возвращаемой значение - имя всегда $ret $ret = $i * ($i + 1) end_sub // развёртка функций должна поддерживать многократную // вложенность $v1 = fn2(1) + fn2(fn2(fn2(fn2(1)))) // встроенные функции не должны развёртываться $v2 = fn2(cos(sin(fn2(1)))) // мой старый говнокод, содержащий функции, в качестве примера $x = 662 $y = 388 logclear() getscreen colormode(6) sub(clid, $c) $ret = $c if ($c = 4145087) $ret = 1 end_if if ($c = 16760703) $ret = 2 end_if if ($c = 8388415) $ret = 3 end_if if ($c = 12582911) $ret = 4 end_if if ($c = 4194303) $ret = 7 end_if if ($c = 8372223) $ret = 8 end_if if ($c = 16777215) $ret = 5 end_if end_sub for($i=0,$i<200) $arr[$i] = 0 end_cyc $rowlen = 12 $firstnum = $rowlen*2 + 2 for($j=0,$j<8) $s = "" for($i=0,$i<8) clid(pxl($x+40*$i,$y+40*$j)) $c = $_clid_ret //print($i, " ", $j," ", $c) //move($x+40*$i,$y+40*$j) $arr[$j+$rowlen*$i+$firstnum] = $c $s = strconcat($s, $c) //wait(2) end_cyc print($s) end_cyc sub(at, $i, $j) $ret = $arr[26 + 12 * $i + $j] end_sub sub(dirh, $i, $j, $c) $ret = 0 if (at($i, $j) ! $c) $v1 = (at($i-1, $j)=$c) * (1 + (at($i-2, $j)=$c)) $v2 = (at($i+1, $j)=$c) * (1 + (at($i+2, $j)=$c)) $v3 = (at($i, $j-1)=$c) + (at($i, $j+1)=$c) $ret = ($v3 > 0) + $v1 + $v2 - ($v3 = 0)*($v1+$v2=4) end_if end_sub sub(dirv, $i, $j, $c) $ret = 0 if (at($i, $j) ! $c) $v1 = (at($i, $j+1)=$c) * (1 + (at($i, $j+2)=$c)) $v2 = (at($i, $j-1)=$c) * (1 + (at($i, $j-2)=$c)) $v3 = (at($i+1, $j)=$c) + (at($i-1, $j)=$c) $ret = ($v3 > 0) + $v1 + $v2 - ($v3 = 0)*($v1+$v2=4) end_if end_sub print() for($j=0,$j<8) $s = "" for($i=0,$i<8) $s = strconcat($s, at($i, $j)) //wait(2) end_cyc print($s) end_cyc print() for($j=0,$j<8) $s = "" for($i=0,$i<8) $mx = 0 $c = 0 for($m=1,$m<9) $v = dirh($i,$j, $m) if ($v > $mx) $mx = $v $c = $m end_if $v = dirv($i,$j, $m) if ($v > $mx) $mx = $v $c = $m end_if end_cyc $v = $mx $s = strconcat($s, ($v>2)*$c ) //wait(2) end_cyc print($s) end_cyc print() halt