** Не следует ли интерпретация следовать фазе компиляции во время извлечения pgm? ** просто, что происходит, когда мы запускаем программу? Если это разные вещи, то что будет выполнять проверку синтаксиса перед интерпретацией. read python - интерпретируемый язык, а затем проверка утверждений, сделанных тем, что?Связь между компилятором и интерпретатором
ответ
У вас есть два варианта:
- Составитель языки
- интерпретируемых языков
В скомпилированный язык, вам нужен компилятор, который получает исходный код в качестве входных данных и генерирует двоичный как вывод, который может работать на заданной целевой платформе. Например, C, C++ или Java являются скомпилированными языками. После того как компилятор генерирует двоичный файл , вы выполняете это двоичный код на целевой платформе. Основными этапами процесса компиляции для генерации двоичного кода являются лексический, синтаксический и семантический анализ и генерация кода.
Компилятор - это программа (двоичная), которая запускается на собственной платформе и генерирует код для данной целевой платформы. У вас есть два варианта:
* target_platform == native_platform (native-compiler)
* target_platform != native_platform (cross-compiler).
Если у вас есть x86_64 настольного ПК, ваш компилятор работает на x86_64 и генерирует код, который работает на x86_64, ваш есть родной компилятор. В этом случае компилятор генерирует собственный машинный код.
Если у вас есть настольный ПК x86_64, ваш компилятор работает на x86_64 и генерирует код, который выполняется на другой платформе (например, JVM), у вас есть кросс-компилятор. Вы должны понимать, что язык Java использует кросс-компилятор, который получает java-язык в качестве входных данных и генерирует байт-код, который запускается на JVM (а не на машине x86_64) в качестве вывода.
Другие кросс-компиляторы, такие как arm-linux-gcc, mips-linux-gcc, ppc-linux-gcc и другие, получают исходный код C в качестве входных данных и генерируют двоичные файлы для запуска на целевой целевой платформе (ARM, MIPS, PPC).
В текстовом редакторе вам не нужен компилятор для генерации кода, поэтому двоичный код не создается в конце процесса. bash и python - интерпретируемые языки. Интерпретатор языка (двоичный файл, установленный на вашем ПК, такой как/bin/bash или/usr/bin/python) получает исходный исходный код, интерпретирует его и выполняет его для генерации вывода. Шаги, выполняемые для интерпретации исходного кода, точно совпадают с последующим компилятором, за исключением того, что интерпретатор не генерирует код, просто выполняет его после анализа.
Я написал статью некоторое время назад, объясняя, как вы можете написать интерпретатор настраиваемого языка с использованием python. Эта статья написана на испанском языке, но весь процесс объясняется шаг за шагом, поэтому вы можете многому научиться, если вы заинтересованы в этом. В конце статьи вы можете найти исходный код для загрузки и тестирования. Исходный код доступен в github. Статья доступна по этому адресу link
Надеюсь, это поможет! :)
Что это значит для этого бинарного? Это байт-код? Так что интерпретатор, который будет проверять синтаксис? Если мы напишем неверный синтаксис, он будет показывать некоторые ошибки правильно? – user104853
Ссылка не работает – user104853
Проверьте связь еще раз, это работает для меня.Я отредактировал свой ответ, чтобы добавить дополнительную информацию. Надеюсь, это поможет вам! – aicastell