Предположим, что я разработал новый язык программирования для одной из управляемых кодовых сред (.NET/JVM). Могу ли я теперь реализовать его , просто написав переводчик, который переводит исходный код этого нового языка на основной язык платформы (C#/Java), а затем позволяет компиляторам платформы и другим инструментам обрабатывать остальную часть процесса? Существуют ли простые, доказательство концепции, примеры такого подхода?Внедрение нового языка программирования
ответ
Да, вы можете это сделать до тех пор, пока карта семантики должным образом (обратите внимание, например, на отображение кода JavaScript на такой язык, как C#, поскольку правила определения области обзора различны).
Это не на управляемой платформе, но вы можете посмотреть Vala. Это C# -подобный язык, который компилируется с C. Eiffel также компилируется в C (и поддерживает компиляцию на Java).
Если вы находитесь на управляемой платформе, вы можете захотеть напрямую использовать байт-код. Байт-код Java не представляет труда, поскольку VM позаботится и предоставляет инструкции для более сложных частей компиляции (таких как управление кадрами стека), а VM устраняет другие волосатые углы, такие как распределение регистров.
Да, вы можете это сделать. Основная проблема, с которой вы столкнетесь, заключается в том, что для вашего языка сложно обеспечить диагностику/отладку на уровне исходного кода.
Это не так сложно, как кажется на первый взгляд. Просто выполните компиляцию режима «debug», который сохраняет исходный номер строки при выполнении нового кода. Тогда вам просто нужно написать простой отладчик, который улавливает исключение верхнего уровня и выводит последний маркер линии. Затем вы можете получить фантазию и позволить пройти через маркеры или трассировать их в файл журнала. Я думаю, что это относительно легко по сравнению с основной задачей разработки нового языка. – JOTN
Несомненно, первый компилятор C++, который я использовал, перевел код на C, а затем использовал системный компилятор и ассемблер для создания исполняемого файла. Я считаю, что это было от Солнца, но это было давно. На самом деле C в сборку делает то же самое.
Я не уверен, если это хороший пример или нет: http://www.mozilla.org/rhino/jsc.html
Я предлагаю 2 этапа:
Во-первых, сделать переводчик или компилятор с вашего языка C# или Java. Во-вторых, сделайте переводчик на .NET-код (CIL или MSIL) или Java-байт-код.
(другой компилятор & программирования дизайн языка hobbyst)
- 1. Внедрение специального языка программирования игрового движка
- 2. Каковы проблемы, требующие создания нового языка программирования?
- 3. примитивы языка программирования
- 4. Идентификатор языка программирования Exe
- 5. Синтаксис языка программирования Java
- 6. Выбор языка программирования
- 7. Создание языка программирования
- 8. относительно языка программирования Java
- 9. Идентификация языка программирования
- 10. сборка проблема языка программирования
- 11. Дерево языка программирования
- 12. Функции языка программирования
- 13. Синтаксис языка программирования Swift
- 14. Изучение понятий языка программирования
- 15. Внедрение языка сценариев в C#
- 16. плагин для нового языка
- 17. AEM6: Добавление нового языка
- 18. грамматика нового языка
- 19. Влияние изучения нового языка на производительность
- 20. Простые упражнения для изучения нового языка
- 21. написание обертки для языка программирования
- 22. Определение языка программирования в PHP
- 23. Ограничения (недостатки) языка Java-программирования?
- 24. Лексический анализ языка программирования Python
- 25. Каковы преимущества языка программирования Kotlin?
- 26. Исключения из языка программирования c
- 27. Какова цель языка программирования Scala?
- 28. UML для языка программирования C
- 29. Встраивание языка программирования в программу
- 30. Методологии проектирования простого языка программирования
Ресурсы для усилий (лексический, синтаксический анализ, построение AST, если вам так хочется, и т.д ...): [Научиться писать компилятор] (HTTP://stackoverflow.com/q/1669/2509). – dmckee