Телефон: 8-800-350-22-65
WhatsApp: 8-800-350-22-65
Telegram: sibac
Прием заявок круглосуточно
График работы офиса: с 9.00 до 18.00 Нск (5.00 - 14.00 Мск)

Статья опубликована в рамках: LXXIX Международной научно-практической конференции «Научное сообщество студентов XXI столетия. ТЕХНИЧЕСКИЕ НАУКИ» (Россия, г. Новосибирск, 11 июля 2019 г.)

Наука: Информационные технологии

Скачать книгу(-и): Сборник статей конференции

Библиографическое описание:
Игнатьев Р.П. ПАРСИНГ И ВЫЧИСЛЕНИЕ АРИФМЕТИЧЕСКОГО ВЫРАЖЕНИЯ НА ЯЗЫКЕ PHP // Научное сообщество студентов XXI столетия. ТЕХНИЧЕСКИЕ НАУКИ: сб. ст. по мат. LXXIX междунар. студ. науч.-практ. конф. № 7(78). URL: https://sibac.info/archive/technic/7(78).pdf (дата обращения: 17.04.2024)
Проголосовать за статью
Конференция завершена
Эта статья набрала 0 голосов
Дипломы участников
У данной статьи нет
дипломов

ПАРСИНГ И ВЫЧИСЛЕНИЕ АРИФМЕТИЧЕСКОГО ВЫРАЖЕНИЯ НА ЯЗЫКЕ PHP

Игнатьев Рудольф Петрович

студент 3 курса, кафедра информационных систем в экономике ПГТУ,

РФ, г. Йошкар-Ола

В данной работе парсинг и вычисление арифметического выражения будут рассмотрены на практическом примере, для решения которого будет применено программирование. Инструментом для создания формы — элемента интерфейса — послужит язык гипертекстовой разметки HTML. А в качестве инструмента реализации программы будет использован язык программирования PHP. Также будет описан сам алгоритм программной реализации на языке PHP.

Парсинг (синтаксический анализ) — профессиональный термин, используемый в информационных технологиях программирования. В ходе этого процесса начальное выражение, принятое на входе, расщепляется на более простые. Таким образом, на выходе получается результат в виде дерева лексем. «Синтаксический анализатор (парсер) — это программа или часть программы, выполняющая синтаксический анализ» [3].

Приступим к формулировке задачи. Начальное выражение имеет следующий вид:

                                                     (1)

 — первый неизвестный параметр;

 — второй неизвестный параметр;

 — третий неизвестный параметр;

Условия корректности входного выражения при соблюдении арифметической грамматики, принятой в языке PHP с учётом заданных входных данных: разделение десятичной дроби на целую и дробную части при помощи точки; равенство количества открывающих скобок количеству закрывающих; применение базовых операторов (^, *, /, +, -); задавать значения можно только для существующих параметров — x, y, z.

Также раскроем основной принцип работы алгоритма программы в рамках работы кода — сначала программа строит дерево лексем внутри определённой функции. Затем значения параметров, если они внесены на форму пользователем, передаются методу, который осуществит расчёт полученного на выходы выражения.

Уточним, что любая лексема по своей сути является объектом, который, в свою очередь, имеет привязанное к нему поле данных. В нашем случае существут поля следующих типов: поле с уникальным именем; поле с массивом лексем; поле для хранения числового значения параметра. В случае с данной задачей, поведение каждого из представленных объектов описывается одним методом — функцией calc(), которая по-разному обрабатывает входные данные. Иными словами, в том случае, если объект описывает оператор, метод возвращает результат применения оператора ко двум соседним численным значениям (рисунок 1).

 

Рисунок 1. Описание операторов функцией calc()

 

Если же объект описывает параметр (или число), метод возвращает только сам параметр или само число (рисунок 2).

 

Рисунок 2. Описание параметра и числа функцией calc()

 

Для каждой из лексем создан свой собственный класс, являющийся наследником абстрактного класса Term() и от которого зависит определённое поведение абстрактной функции calc() (рисунок 3).

 

Рисунок 3. Абстрактный класс Term()

 

Обратим внимание на поля childrenLeft, childrenRight и parent. Они служат для строительства дерева лексем: первое поле содержит левый элемент расщепления определённого объекта, второе — правый элемент расщепления объекта, а третье — элемент объекта, не подвергшийся расщеплению.

Приступим к решению задачи. Зададим для параметров числа, запишем выражение и запустим программу, получив решение (рисунок 4).

 

Рисунок 4. Решение задачи с построенным деревом лексем

 

Таким образом, была создана программа-парсер, способная не только на синтаксический анализ входного арифметического выражения, но и на его вычисление. Также был выведен массив лексем, позволяющий наглядно убедиться в том, что программа действительно способна разобрать входное выражение на его составляющие.

 

Список литературы:

  1. Локхарт Д. Современный PHP. Новые возможности и передовой опыт [Текст] / Джош Локхарт ; пер. с англ. Рагимов Р. Н. - Москва: ДМК Пресс, 2016. - 304 с.
  2. PHP 7 [Текст]: [наиболее полное руководство: нововведения PHP 7, объектно-ориентированное программирование, компоненты PHP и Composer, стандарты PSR, PHP-FPM и nginx, исходные коды на GitHub] / Дмитрий Котеров, Игорь Симдянов. - Санкт-Петербург : БХВ-Петербург, 2017. - 1087 с.
  3. Словари и энциклопедии на Академике [Электронный ресурс] – Режим доступа: https://dic.academic.ru (дата обращения 08.07.2019)
Проголосовать за статью
Конференция завершена
Эта статья набрала 0 голосов
Дипломы участников
У данной статьи нет
дипломов

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

Форма обратной связи о взаимодействии с сайтом
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.