Beispiel #1
0
$TYPE_STRING = 200;
$TYPE_CHARACTER = 300;
$TYPE_FUNCTION = 400;
$TYPE_FLAG = 500;
if (!empty($stack)) {
    echo "<table class='table table-bordered'>";
    $i = 0;
    while ($i <= count($stack)) {
        if ($types[$i] == $TYPE_NUMBER) {
            echo "<tr><td>{$i}</td><td>#" . $stack[$i] . "</td></tr>";
        }
        if ($types[$i] == $TYPE_CHARACTER) {
            echo "<tr><td>{$i}</td><td>\$" . chr($stack[$i]) . "</td></tr>";
        }
        if ($types[$i] == $TYPE_STRING) {
            echo "<tr><td>{$i}</td><td>'" . slice_to_string($stack[$i]) . "'</td></tr>";
        }
        if ($types[$i] == $TYPE_FUNCTION) {
            echo "<tr><td>{$i}</td><td>&amp;" . $stack[$i] . "</td></tr>";
        }
        if ($types[$i] == $TYPE_FLAG) {
            if ($stack[$i] == -1) {
                echo "<tr><td>{$i}</td><td>true</td></tr>";
            }
            if ($stack[$i] == 0) {
                echo "<tr><td>{$i}</td><td>false</td></tr>";
            }
            if ($stack[$i] != 0 && $stack[$i] != -1) {
                echo "<tr><td>{$i}</td><td>malformed flag</td></tr>";
            }
        }
Beispiel #2
0
function stack_change_type($type)
{
    global $TYPE_NUMBER, $TYPE_STRING, $TYPE_CHARACTER, $TYPE_FUNCTION, $TYPE_FLAG;
    global $types;
    if ($type == $TYPE_NUMBER) {
        if (stack_type() == $TYPE_STRING) {
            $a = stack_pop();
            if (is_numeric(slice_to_string($a))) {
                stack_push(floatval(slice_to_string($a)), $TYPE_NUMBER);
            } else {
                stack_push(0, $TYPE_NUMBER);
            }
        } else {
            array_pop($types);
            array_push($types, $TYPE_NUMBER);
        }
    } elseif ($type == $TYPE_STRING) {
        if (stack_type() == $TYPE_NUMBER) {
            stack_push(string_to_slice(strval(stack_pop())), $TYPE_STRING);
        } elseif (stack_type() == $TYPE_CHARACTER) {
            $s = " ";
            $s[0] = chr(stack_pop());
            stack_push(string_to_slice($s), $TYPE_STRING);
        } elseif (stack_type() == $TYPE_FLAG) {
            $s = stack_pop();
            if ($s == -1) {
                stack_push(string_to_slice('true'), $TYPE_STRING);
            } elseif ($s == 0) {
                stack_push(string_to_slice('false'), $TYPE_STRING);
            } else {
                stack_push(string_to_slice('malformed flag'), $TYPE_STRING);
            }
        } elseif (stack_type() == $TYPE_FUNCTION) {
            array_pop($types);
            array_push($types, $TYPE_STRING);
        } else {
            return 0;
        }
    } elseif ($type == $TYPE_CHARACTER) {
        if (stack_type() == $TYPE_STRING) {
            $s = slice_to_string(stack_pop());
            stack_push(ord($s[0]), $TYPE_CHARACTER);
        } else {
            $s = stack_pop();
            stack_push(intval($s), $TYPE_CHARACTER);
        }
    } elseif ($type == $TYPE_FUNCTION) {
        array_pop($types);
        array_push($types, $TYPE_FUNCTION);
    } elseif ($type == $TYPE_FLAG) {
        if (stack_type() == $TYPE_STRING) {
            $s = slice_to_string(stack_pop());
            if ($s == 'true') {
                stack_push(-1, $TYPE_FLAG);
            } elseif ($s == 'false') {
                stack_push(0, $TYPE_FLAG);
            } else {
                stack_push(1, $TYPE_FLAG);
            }
        } else {
            $s = stack_pop();
            stack_push($s, $TYPE_FLAG);
        }
    } else {
        return;
    }
}
Beispiel #3
0
    }
    foreach ($errors as $err) {
        echo "{$err}";
    }
    $errors = array();
}
$TYPE_NUMBER = 100;
$TYPE_STRING = 200;
$TYPE_CHARACTER = 300;
$TYPE_FUNCTION = 400;
$TYPE_FLAG = 500;
$i = 0;
while ($i < count($stack)) {
    if ($types[$i] == $TYPE_NUMBER) {
        echo $i, "\t", ' #', $stack[$i];
    }
    if ($types[$i] == $TYPE_CHARACTER) {
        echo $i, "\t", ' $', chr($stack[$i]);
    }
    if ($types[$i] == $TYPE_STRING) {
        echo $i, "\t", " '", slice_to_string($stack[$i]), "'";
    }
    if ($types[$i] == $TYPE_FUNCTION) {
        echo $i, "\t", ' &', $stack[$i];
    }
    if ($types[$i] == $TYPE_FLAG) {
        echo $i, "\t", ' FLAG: ', $stack[$i];
    }
    echo "\n";
    $i += 1;
}
Beispiel #4
0
    }
    $errors = array();
}
$TYPE_NUMBER = 100;
$TYPE_STRING = 200;
$TYPE_CHARACTER = 300;
$TYPE_FUNCTION = 400;
$TYPE_FLAG = 500;
$i = 0;
while ($i < count($stack)) {
    if ($types[$i] == $TYPE_NUMBER) {
        echo $i, ' #', $stack[$i], '<br>';
    }
    if ($types[$i] == $TYPE_CHARACTER) {
        echo $i, ' $', chr($stack[$i]), '<br>';
    }
    if ($types[$i] == $TYPE_STRING) {
        echo $i, " '", slice_to_string($stack[$i]), "'<br>";
    }
    if ($types[$i] == $TYPE_FUNCTION) {
        echo $i, ' &amp;', $stack[$i], '<br>';
    }
    if ($types[$i] == $TYPE_FLAG) {
        echo $i, ' FLAG: ', $stack[$i], '<br>';
    }
    echo "\n";
    $i += 1;
}
foreach ($dictionary_names as $n) {
    //    echo $n."\n";
}