Описание тега compiler-construction

Тэг compiler-construction следует применять к вопросам, касающимся программирования компиляторов, или к вопросам о детальной внутренней работе компиляторов. НЕ ИСПОЛЬЗУЙТЕ для вопросов об * использовании * определенных компиляторов или ошибках компиляции.

Компилятор - это программа, переводящая один язык на другой. Построение компилятора - это процесс создания компилятора.

Тэг compiler-construction следует применять к вопросам, касающимся программирования компиляторов, или к вопросам о детальной внутренней работе компиляторов.

С одного языка на другой? Я думал, они сделали исполняемые файлы!

Немногие компиляторы делают именно это:

  • В основном они переводят понятный человеку язык программирования (например, Fortran, Cobol, Algol, PL/1, Pascal, C, C++, C# и т. Д.) В файл объектного кода, который впоследствии необходимо связать.

  • Многие компиляторы реального мира переводят язык высокого уровня в ассемблерный код, который впоследствии собирается отдельной программой и затем связывается.

  • Стандартный компилятор Java переводит код Java в байт-код JVM, который должен запускаться специальной программой (JVM), которая может включать в себя компилятор Just In Time (JIT) или HotSpot, который на лету переводит байт-код в собственные машинные инструкции.
  • Ранние версии Unix поставлялись с компилятором Fortran-to-C.
  • Самые ранние версии языка, который стал C++, были скомпилированы в C программой под названием cfront.
  • Существует множество других примеров компиляторов "исходный код".
  • Некоторые языки, такие как JavaScript и многие другие языки сценариев, вообще не имеют компиляторов, но выполняются непосредственно из исходного кода.

Большой список ресурсов: