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

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

Ответы

Ответ 1

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

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

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

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

Сегодня я работаю над компилятором, который делает код source → tokens → AST → IR → , в значительной степени похожим на Я описал выше.

Ответ 2

A parser является одним из элементов compiler.

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

Ответ 3

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

Ответ 4

Парсер просто читает текст во внутреннем, более абстрактном представлении, часто в некотором роде дерево или граф.

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

Ответ 5

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

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

Ответ 6

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

Ответ 7

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

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