Разница между компиляторами и парсерами?
По понятию/функции/реализации, каковы различия между компиляторами и парсерами?
Ответы
Ответ 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 и не требуют, чтобы сначала необходимо скомпилировать код.