Статья: Парсер на РНР - это возможно

$this->brackets++;

// Удобно использовать рекурсию, т.к. данные в скобках

// можно рассматривать как самоcтоятельные выражения.

// Мы вернемся из функции в случае ошибки, конца данных или

// послеполучениязакрытойскобки

if (!$this->Parse()) return false;

break;

case 4: // Получили правый операнд (надо проверить число ли это), ожидаем оператор

//или правую скобку

// Проверяем число ли это?

if (!preg_match("/^[0-9]+(.[0-9]+)?$/",$word)) {

$this->errorstr="Ошибкавстроке: $this->line, колонка: $this->column<br>";

return false;

}

break;

case 5: // Получили правую скобку, ожидаем оператор

// Уменьшаем кол-во открытых скобок на 1

$this->brackets--;

return true;

} // end switch

// Запоминаем текущее состояние для следующего шага цикла

$this->prevstate=$this->state;

} // end while

// Так как у нас отсутствует состояние конца разбора, то надо

// Проверить в каком состоянии мы завершили разбор

// Это надо делать только один раз в самом первом вызове

// функции разбора. Это первый вызов, если $first==0

// Итак, мы должны вернуть ошибку, если у нас есть лишние скобки,

// или если мы не получили правого операнда или правой скобки,

К-во Просмотров: 421
Бесплатно скачать Статья: Парсер на РНР - это возможно