Если бы я искал, чтобы создать свой собственный язык, есть ли какие-нибудь инструменты, которые помогли бы мне? Я слышал о yacc, но мне интересно, как я буду реализовывать функции, которые я хочу на этом языке.Создание собственного языка
ответ
Первым инструментом, который я бы рекомендовал, является Книга Дракона. Это ссылка для создания компиляторов. Проектирование языка - непростая задача, реализация его еще сложнее. Книга драконов помогает там. В книге даже упоминаются стандартные инструменты unix lex и yacc. Инструменты эквивалентного gnu называются flex и bison. Они оба генерируют лексер и парсер. Существуют также более современные инструменты для генерации лексера и парсера, например. для java есть ANTLR (я также помню javacc и CUP, но я использовал себя только ANTLR). Тот факт, что ANTLR объединяет парсер и лексер и что плагин eclipse доступен, делает его очень удобным для использования. Но чтобы сравнить их, тип парсера, который вам нужен, и знать, что вам нужно, вы должны прочитать книгу Дракона. Есть также другие вещи, которые вы должны учитывать, такие как среда выполнения, парадигма программирования, ...
Если у вас уже есть определенные идеи дизайна и нужна помощь для определенного шага или детализации, то андерсеры могут быть более полезными.
ANTLR - очень хороший генератор синтаксического анализатора, написанный на Java. Также есть terrific book.
Близкие вопросы (все взяты путем поиска по [compiler]
на StackOverflow):
...
И подобные темы (из той же категории):
...
Edit: Я знаю, связанные StackOverflow поиск вопрос не то, что мы хотели бы, чтобы это было, но действительно ли нам нужно п-й итерации этой теме? Мех!
Мне нравится Flex (Fast Lex) [лексический]
и Bison (волосатый Yacc) [Еще один компилятор компиляторов]
Оба свободны и доступны на всех * NIX установок. Для Windows просто установите cygwin.
Но я старой школы.
Используя эти инструменты, вы также можете найти правила lex и yacc-грамматики для множества популярных языков в Интернете.Таким образом, вы получите быстрый способ встать и запустить, а затем вы можете настроить грамматистов по ходу дела.
Пример: Обработка арифметических выражений [порядок приоритета и т. Д. - это проблема, связанная с смертью], вы можете быстро получить этот грамматик для этого из Интернета.
Альтернативой думать является написать внешнее расширение GCC.
Нетривиальный, но если вы хотите скомпилировать язык, это сэкономит много работы в разделе генерации кода (вам все равно нужно знать любовь и понимать flex/bison).
- 1. PHP-анализ текста и/или создание собственного языка?
- 2. Создание собственного собственного пользовательского бара
- 3. Создание моего собственного картографа
- 4. создание собственного расширения файла
- 5. Создание собственного «SeekBar»
- 6. Создание собственного заголовка DICOM
- 7. Android - Создание собственного календаря
- 8. создание собственного метода titleize
- 9. Проблема Создание собственного LinkedList
- 10. Создание собственного класса Ruby
- 11. создание собственного pow()
- 12. Создание собственного метода?
- 13. Создание собственного «типа данных»
- 14. Создание собственного модуля python
- 15. Создание собственного драйвера геймпада?
- 16. Создание собственного POS Tagger
- 17. Создание собственного iTunes Artwork
- 18. Создание собственного слайдера
- 19. Создание собственного события ADDED_TO_STAGE
- 20. Создание собственного Zend_Auth_Adapter
- 21. Создание собственного AsynchronousSocketChannel
- 22. создание собственного класса коллекции
- 23. Создание собственного документа Javascript
- 24. jQuery - Создание собственного слайдера?
- 25. Создание собственного метода myindexof
- 26. Создание собственного intellisense
- 27. Создание собственного сайта analytics
- 28. Создание собственного HRESULT?
- 29. Создание собственного потока MJPEG
- 30. Написание собственного языка Определение для возвышенного текста
Канонический вопрос для этого: http://stackoverflow.com/questions/1669/learning-to-write-a-compiler – dmckee 2010-02-04 14:55:03