Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

Разбор выражений с помощью языка Си

Лекция



Привет, сегодня поговорим про разбор выражений с помощью языка си, обещаю рассказать все что знаю. Для того чтобы лучше понимать что такое разбор выражений с помощью языка си , настоятельно рекомендую прочитать все из категории Алгоритмы и теория алгоритмов.

Существуют различные способы синтаксического разбора и вычисления выражений. При работе с рекурсивным нисходящим синтаксическим анализатором можно представлять себе выражения в виде рекурсивных структур данных, т.е. определение выражения рекурсивно. Иными словами, понятие выражения определяется через понятие выражения. Например, если принять, что в выражениях можно использовать только +, -, *, / и скобки, то все выражения можно определить следующими правилами:

выражение -> слагаемое [+ слагаемое] [- слагаемое]
слагаемое -> множитель [* множитель] [/ множитель]
множитель -> переменная, число или (выражение)

Квадратные скобки означают необязательный элемент, а символ -> означает "порождает". Подобные правила обычно называются порождающими правилами, или продукциями. Поэтому в качестве определения слагаемого можно привести следующее: "Слагаемое порождает множитель, умноженный на множитель, или множитель, деленный на множитель". Об этом говорит сайт https://intellect.icu . Обратите внимание на то, что приоритет операций заложен в определении выражения.

Давайте рассмотрим пример. Выражение 10 + 5 * B состоит из двух слагаемых: 10 и 5 * В. Второе слагаемое состоит из двух множителей: 5 и B. Эти множители представляют собой одно число и одну переменную.

С другой стороны, выражение 14 * (7 - С) содержит два множителя: 14 и (7 - С). Эти множители представляют собой одно число и одно выражение в скобках. Выражение в скобках состоит из двух слагаемых: числа и переменной.

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

9 / 3 - (100 + 56)

Если выражение разобрано корректно, разбор происходил в следующем порядке:

  1. Получить первое слагаемое, 9 / 3.
  2. Получить каждый множитель и выполнить деление чисел. В результате получилось число 3.
  3. Получить второе слагаемое, (100 + 56). В этот момент начинается рекурсивная обработка данного подвыражения.
  4. Получить оба слагаемых и выполнить сложение. В результате получилось число 156.
  5. Вернуться из рекурсивного вызова и вычесть 156 из 3. Окончательным ответом является -153.

Если вас это несколько сбило с толку, не расстраивайтесь. Синтаксический разбор выражений — довольно сложное занятие, к которому нужно привыкнуть. Необходимо помнить о двух основных моментах, когда речь идет о таком рекурсивном представлении выражений. Во-первых, приоритет операций неявно закладывается в порождающие правила. Во-вторых, этот метод разбора и вычисления выражений очень похож на тот способ, которым люди вычисляют математические выражения.

 

Надеюсь, эта статья про разбор выражений с помощью языка си, была вам полезна, счастья и удачи в ваших начинаниях! Надеюсь, что теперь ты понял что такое разбор выражений с помощью языка си и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Алгоритмы и теория алгоритмов

Из статьи мы узнали кратко, но содержательно про разбор выражений с помощью языка си
создано: 2014-12-22
обновлено: 2021-03-13
253



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Алгоритмы и теория алгоритмов

Термины: Алгоритмы и теория алгоритмов