36 lines
895 B
PHP
36 lines
895 B
PHP
<?php
|
|
|
|
function tokenize ($str, &$out) {
|
|
$out = array();
|
|
|
|
while (strlen($str) > 0) {
|
|
if (preg_match('/^\\/\\/.*/', $str, $matches)) {
|
|
$str = substr($str, strlen($matches[0]));
|
|
}
|
|
else if (preg_match('/^\\s+/', $str, $matches)) {
|
|
$str = substr($str, strlen($matches[0]));
|
|
}
|
|
else if (preg_match('/^[0-9]+/', $str, $matches)) {
|
|
$out[] = array('number', $matches[0]);
|
|
$str = substr($str, strlen($matches[0]));
|
|
}
|
|
else if (preg_match('/^[a-zA-Z_][a-zA-Z0-9_]*/', $str, $matches)) {
|
|
$out[] = array('name', $matches[0]);
|
|
$str = substr($str, strlen($matches[0]));
|
|
}
|
|
else {
|
|
return FALSE;
|
|
}
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
function fatal_error ($message)
|
|
{
|
|
fwrite(STDERR, "Fatal error: $message\n");
|
|
|
|
ob_get_clean();
|
|
exit(1);
|
|
}
|