MaterStudiorum.ru - домашняя страничка студента.
Минимум рекламы - максимум информации.


Авиация и космонавтика
Административное право
Арбитражный процесс
Архитектура
Астрология
Астрономия
Банковское дело
Безопасность жизнедеятельности
Биографии
Биология
Биология и химия
Биржевое дело
Ботаника и сельское хоз-во
Бухгалтерский учет и аудит
Валютные отношения
Ветеринария
Военная кафедра
География
Геодезия
Геология
Геополитика
Государство и право
Гражданское право и процесс
Делопроизводство
Деньги и кредит
Естествознание
Журналистика
Зоология
Издательское дело и полиграфия
Инвестиции
Иностранный язык
Информатика
Информатика, программирование
Исторические личности
История
История техники
Кибернетика
Коммуникации и связь
Компьютерные науки
Косметология
Краткое содержание произведений
Криминалистика
Криминология
Криптология
Кулинария
Культура и искусство
Культурология
Литература и русский язык
Литература(зарубежная)
Логика
Логистика
Маркетинг
Математика
Медицина, здоровье
Медицинские науки
Международное публичное право
Международное частное право
Международные отношения
Менеджмент
Металлургия
Москвоведение
Музыка
Муниципальное право
Налоги, налогообложение
Наука и техника
Начертательная геометрия
Новейшая история, политология
Оккультизм и уфология
Остальные рефераты
Педагогика
Полиграфия
Политология
Право
Право, юриспруденция
Предпринимательство
Промышленность, производство
Психология
Психология, педагогика
Радиоэлектроника
Разное
Реклама
Религия и мифология
Риторика
Сексология
Социология
Статистика
Страхование
Строительные науки
Строительство
Схемотехника
Таможенная система
Теория государства и права
Теория организации
Теплотехника
Технология
Товароведение
Транспорт
Трудовое право
Туризм
Уголовное право и процесс
Управление
Управленческие науки
Физика
Физкультура и спорт
Философия
Финансовые науки
Финансы
Фотография
Химия
Хозяйственное право
Цифровые устройства
Экологическое право
Экология
Экономика
Экономико-математическое моделирование
Экономическая география
Экономическая теория
Эргономика
Этика
Юриспруденция
Языковедение
Языкознание, филология
    Начало -> Информатика, программирование -> Парсер на РНР - это возможно!

Название:Парсер на РНР - это возможно!
Просмотров:70
Раздел:Информатика, программирование
Ссылка:none(0 KB)
Описание:В данной коротенькой статье я хочу продемонстрировать, что РНР может очень хорошо справляться с функцией синтаксического разбора выражений.

Университетская электронная библиотека.
www.infoliolib.info

Часть полного текста документа:

Парсер на РНР - это возможно! Антон Калмыков
    В данной коротенькой статье я хочу продемонстрировать, что РНР может очень хорошо справляться с функцией синтаксического разбора выражений. Для тех, кто никогда не касался данной тематики, я думаю, статья будет так же интересна, поскольку в ней мы рассмотрим метод программирования в виде конечных автоматов.
    Начну с утверждения, что метод программирования с применением конечных автоматов очень прост, поскольку большая часть программы содержится внутри автомата, который вы готовите заранее в виде матрицы и используете в своей программе.
    Что же такое автомат?
    Представьте себе дискретную функцию от двух аргументов Ft(d, Ft-1). В качестве первого аргумента мы используем конечное счетное множество (массив данных), которое поступает извне. На каждом шаге в функцию поступает только одно число из данного массива. Вторым аргументом функции является значение функции на предыдущем шаге. Добавлю еще одно условие. Область значений данной функции представляет собой конечное счетное множество.
    В чем прелесть такой функции? Вся прелесть заключается в том, то мы можем представить ее в виде матрицы, где номера строк будут задавать поступающие данные, а номера столбцов будут представлять область значений функции. Тогда, записав в ячейку (строка, столбец) число из множества значений функции, мы получим матрицу, которая описывает зависимость функции от входных данных и всего спектра значений. Будем называть число из множества значений СОСТОЯНИЕМ, а функцию АВТОМАТОМ.
    Если вы не поняли предыдущего абзаца, то не пугайтесь, на практике все выглядит гораздо проще. Давайте рассмотрим простой пример. Допустим, нам надо построить разбор обычного арифметического выражения. Для этого нам придется создать два автомата. Первый будет выделять "слова" из буфера данных (т.е. сканировать его). Второй будет проверять грамматический порядок следования слов в выражении.
    Начнем со сканера. Словами являются знаки операций +, -, *, / и последовательности символов, если они не содержат разделителей, такие как перевод строки, пробел и символ табуляции. Разделители мы будем просто игнорировать. Автомат для сканера, в этом случае, будет следующим.
    // состояния 0, 1, 2
    "0" => array( 0, -1, -1),//разделитель
    "1" => array( 2, -1, -1),//слово из одного символа
    "2" => array( 1, 1, -1),//символ
    Номера строк задают тип символа, поскольку нам надо выделить знаки операций в отдельные слова. Состояния (номера столбцов) будут означать следующее.
    -1 слово готово, пора возвращать
    0 начало сканирования
    1 получили символ, надо копить пока это символ
    2 получили предопределенное слово из одного символа
    в состоянии 1 мы будем копить символы, чтобы вернуть их как слово в состоянии -1. Наш сканер будет вызываться из парсера и завершать свою работу, когда он распознает хотя бы одно "слово", поэтому нет смысла вводить состояние -1 в таблицу автомата. Для парсера автомат будет такой.
    // состояния 0, 1, 2, 3, 4, 5
    "0" => array( 1, -1, 1, 1, 1, 1), // оператор
    "1" => array( 2, 4, -1, 2, -1, -1), // операнд
    "2" => array( 3, 3, -1, 3, -1, -1), // левая скобка
    "3" => array(-1, -1, 5, -1, 5, 5), // правая скобка
    а состояния соответственно
    -1 Ошибка
    0 Начало разбора
    1 Получили оператор, ожидаем правый операнд
    или левую скобку
    2 Получили левый операнд (надо проверить число ли это),
    ждем оператор или правую скобку
    3 Получили левую скобку,
    ожидаем оператор или левую скобку
    4 Получили правый операнд (надо проверить число ли это),
    ожидаем оператор или правую скобку
    5 Получили правую скобку, ожидаем оператор
    Парсер завершит работу, когда сканер вернет FALSE или при возникновении ошибки - состояние -1. ............






Похожие работы:

Название:Мифология. Функции мифа. Мифологические школы
Просмотров:679
Описание: Мифология как мир первообразов и материя духовности Но для создателей мифологии она была не просто достоверной или истинной. У них и вопроса не могло возникнуть об истинности. Для первобытного человека мифология

Название:Общественные функции СМИ. По кн. Введение в журналистику
Просмотров:780
Описание: Цвик В. Л. Для чего существует журналистика? Зачем она нужна отдельному индивиду и обществу в целом? Иными словами, каковы социальные функции СМИ? Сразу условимся, что термин "функции” мы будем понимать как разн

Название:Автоматизация работы маркшейдерских служб предприятий с использованием геоинформационных систем
Просмотров:748
Описание: Компьютерный комплекс для выполнения маркшейдерских задач в геоинформационной системе K-MINE длительное время активно используется на многих горнодобывающих предприятиях, в научно-изыскательских организациях, уч

Название:Понятие, задачи, система и основные функции органов внутренних дел
Просмотров:664
Описание: Органы внутренних дел представляют собой сложную, разветвленную систему, в которую входят в качестве ее функциональных элементов (подсистем) милиция, пожарная охрана, внутренние войска, следственный аппарат и др. О

Название:Автоматическая частотная разгрузка (АЧР)
Просмотров:628
Описание: Для локализации системных аварий и ликвидации аварийного режима работы сетей или энергосистемы, объекты сетевых компаний оснащаются аппаратурой противоаварийной автоматики (ПАА) Одной из основных функций ПАА

 
     

Вечно с вами © MaterStudiorum.ru