Различие между компиляторами и синтаксическими анализаторами?

Понятием/функцией/реализацией, каковы различия между компиляторами и синтаксическими анализаторами?

20
задан Dhana 29 April 2012 в 20:40
поделиться

6 ответов

Компилятор часто состоит из нескольких компонентов, один из которых является синтаксическим анализатором. Обычный набор компонентов в компиляторе:

  • Lexer - разбивает программу на слова.
  • Parser - проверяет правильность синтаксиса предложений.
  • Semantic Analysis - проверяет, что предложения имеют смысл.
  • Оптимизатор - редактируйте предложения для краткости.
  • Генератор кода - выводит что-то с эквивалентным семантическим значением с использованием другого словаря.
    Чтобы добавить немного:

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

Давным-давно я написал компилятор C (на самом деле несколько: семейство Introl-C для микроконтроллеров), который использовал рекурсивную приличность и выполнял синтаксическую и семантическую проверку во время синтаксического анализа и создал древовидное представление программы, из которой был сгенерирован код.

Сегодня я работаю над компилятором , который выполняет исходный -> токены -> AST -> IR -> код, почти как Я описал выше.

46
ответ дан 29 November 2019 в 23:04
поделиться

Парсер является одним из элементов компилятор .

Вы ищете различия между интерпретатором и компилятором?

3
ответ дан 29 November 2019 в 23:04
поделиться

В компиляторе всегда есть парсер. Парсер просто обрабатывает язык и возвращает его древовидное представление, компилятор генерирует что-то из этого дерева, фактические машинные коды или другой язык.

4
ответ дан 29 November 2019 в 23:04
поделиться

Анализатор принимает необработанные данные и анализирует их в древовидной структуре. Это синтаксическое дерево затем передается генератору, который превратит его во все, что он должен генерировать.

Итак, синтаксический анализатор является частью компилятора.

2
ответ дан 29 November 2019 в 23:04
поделиться

Синтаксический анализатор просто считывает текст во внутреннее, более абстрактное представление, часто в дерево или какой-то граф.

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

2
ответ дан 29 November 2019 в 23:04
поделиться

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

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

-2
ответ дан 29 November 2019 в 23:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: