@denisramus

Можно ли написать компилятор в машиный код на языке очень высокого уровня?

Можно ли написать компилятор в машиный код на языке очень высокого уровня?
  • Вопрос задан
  • 790 просмотров
Решения вопроса 2
globuzer
@globuzer
gezgrouvingus progreszive ombusgrander greyderzux
Очень легко и удобно такое реализовать на языке Си (ну может быть и Си++).
Но на Си очень эффективно такое реализовать.
В тех.вузах, где преподают теорию компиляции и есть специализированные дисциплины по грамматикам языков и т.п. студентам дают задания написать компилятор и реализовать свой алфавит.
Грамматики и компиляторы на самом деле очень большая наука.
Даже на Си можно реализовать сложнейший и мощный компилятор.
Очень легко к этой задачи он подходит.
Ответ написан
Комментировать
saboteur_kiev
@saboteur_kiev
software engineer
Конечно можно. Собственно так и делают.
Чаще всего используют С/С++ как язык, широко использующийся в системном программировании, но на ЛЮБОМ языке, даже на скриптовом, можно написать компилятор.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 5
@dzavalishin
1. Поверьте человеку, который пишет на Си с 1985 года (30 лет, вроде бы?) - НИКОГДА не пишите на Си ничего, если только к вашему виску не приставили пистолет. Исключение одно - ядро ОС. Да и то...

2. Что угодно можно написать на чём угодно. Вопрос удобства.

3. Писать компилятор надо на языке с развитыми средствами поддержки жизни проекта. Таких два - Java и C#. Можно (а если Вам это комфортно, то и нужно) использовать функциональные расширения соответствующих платформ. Scala/F#.

4. На говноязыках серьёзные вещи писать не нужно. Ключевое свойство говноязыка - обсуждение вокруг него о том, как бедные программеры перетрудились явно прописывать руками типы всех переменных. На таких ЯП можно писать затычки и примочки.

5. Не применяйте генераторы лексических и грамматических анализаторов, пока не научитесь писать компилятор руками. Ключевое слово - парсинг рекурсивным спуском. Это реально просто, если грамматика языка - LR1. Для начала надо взять простой язык. Очень простой.

6. Базовый компилятор с кодогенерацией для стековой машины нужно уметь писать за два дня. Если вы хотите это уметь.

7. Бекэнды (реальную кодогенерацию) писать НЕ НУЖНО. Вообще. Вы её хорошо не напишете ни-ко-гда. Проще генерировать на выходе Си и докомпилировать приличным си-компилятором.
Ответ написан
Комментировать
Daniro_San
@Daniro_San
Программист
Можно.
Но лучше использовать Си.
Вообще, написание компиляторов - можно сказать отдельная наука.
Ответ написан
opium
@opium
Просто люблю качественно работать
Можно компилятору все равно на чем его напишут
Ответ написан
Комментировать
Rou1997
@Rou1997
Главное в компиляторе - разбор кода, который на входе. А разбору строк, ИМХО, уж всяко легче учиться на ЯВУ. А тема это (если изучать на уровне компилятора) очень и очень большая.
Ну и технически, конечно, тоже можно почти на чем угодно, всего-то прочитать текстовый файл, разобрать его (вот тут проблемка - регулярки нужны) и записать бинарный файл.
Ответ написан
@beduin01
Посмотрите исходники https://github.com/SDC-Developers/SDC
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы