Статья: Парсер на РНР - это возможно
$this->column=0;
}
$word="";
break;
case -1: // слово готово, пора возвращать
if (strlen($word)) return $word;
break;
case 1: // получили символ, надо копить пока это символ
$word.=$this->data[$this->pos];
break;
case 2: // получили предопределенное слово из одного символа
$word=$this->data[$this->pos];
break;
}
$this->pos++;
$this->column++;
if ($this->pos==$this->length && strlen($word)) return $word;
}
return false;
}
/**********************************************************************
* Парсер *
**********************************************************************/
function Parse() {
// Переменная $first равна нулю, если функция разбора была вызвана первый раз
$first=$this->pos;
// Циклсостояний
while(1) {
// Получаем слово от сканнера