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


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

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

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

Парсер на РНР - это возможно! Антон Калмыков
    В данной коротенькой статье я хочу продемонстрировать, что РНР может очень хорошо справляться с функцией синтаксического разбора выражений. Для тех, кто никогда не касался данной тематики, я думаю, статья будет так же интересна, поскольку в ней мы рассмотрим метод программирования в виде конечных автоматов.
    Начну с утверждения, что метод программирования с применением конечных автоматов очень прост, поскольку большая часть программы содержится внутри автомата, который вы готовите заранее в виде матрицы и используете в своей программе.
    Что же такое автомат?
    Представьте себе дискретную функцию от двух аргументов 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. ............




Нет комментариев.



Оставить комментарий:

Ваше Имя:
Email:
Антибот:  
Ваш комментарий:  



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

Название:Синтез керуючих автоматів
Просмотров:109
Описание: ВСТУП Принцип мікропрограмного керування припускає, що цифровий пристрій складається з двох частин: операційний автомат (ОА) і керуючий автомат (КА). ОА виконує найпростіші операції (мікрооперації) типу зсув,

Название:Функции сравнительного правоведения
Просмотров:83
Описание: МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫКУРСОВАЯ РАБОТА на тему Функции сравнительного правоведения по дисциплине Сравнительное правоведениеКИЕВ 2011   СОДЕРЖАНИЕ Введение 1. Научная функц

Название:Функции государства в их многообразии и развитии
Просмотров:69
Описание: Содержание Введение Глава 1. Функции государства 1.1. Понятие и признаки функций государства 1.2 Классификация функций государства 1.3 Глобальные проблемы и функции государства 1.4. Эволюция функций госуд

Название:Булевы функции
Просмотров:188
Описание: 1.Основные понятия булевой алгебры Технические вопросы, связанные с составлением логических схем ЭВМ, можно решить с помощью математического аппарата, объектом исследования которого являются функции, приним

Название:Предмет и функции философии
Просмотров:134
Описание: Содержание Введение 1. Предмет философии. Место философии в системе наук и культуре 2. Основные разделы философии 3. Мировоззренческая, методологическая, рефлексивно–критическая и интегративная функция

 
     

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