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

Проверка синтаксиса в рекурсивном нисходящем анализаторе на примере языка Си

Лекция



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

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

10 ** 8
(10 - 5) * 9
/8

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

При изучении кода анализаторов вы, вероятно, заметили функцию serror(), вызываемую в определенных ситуациях. Об этом говорит сайт https://intellect.icu . Эта функция сообщает об ошибках. В отличие от многих других типов анализаторов, рекурсивный спуск облегчает проверку синтаксиса, поскольку в большинстве случаев она происходит в функциях atom()find_var() и eval_exp6(), где выполняется проверка правильной расстановки скобок. Единственная проблема, связанная с выявлением синтаксических ошибок, заключается в том, что при обнаружении ошибки разбор выражения не прекращается. Это может привести к выводу нескольких сообщений об ошибках.

Лучший способ реализации функции serror() — заставить ее выполнять нечто вроде восстановления правильного состояния анализатора. Например, все современные компиляторы поставляются вместе с парой вспомогательных функций setjmp() и longjmp(). Эти функции позволяют осуществить в программе передачу управления из одной функции в другую. Например, функция serror() могла бы выполнять длинный переход с помошью longjmp() в безопасную точку программы за пределами анализатора.

Если вы оставите код анализатора без изменений, могут выводиться сразу несколько сообщений о синтаксических ошибках. Конечно, в одних ситуациях это может мешать, но в других может быть очень полезным, поскольку появляется возможность выявить сразу несколько ошибок. Тем не менее, в общем случае перед тем как использовать анализатор в коммерческих программах, необходимо доработать его блок синтаксического контроля.

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

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



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


Поделиться:

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

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

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

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

Комментарии


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

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

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