Создание вашего собственного языка

Если бы я хотел создать свой собственный язык, есть ли какие-нибудь инструменты, которые бы помогли мне? Я слышал о yacc, но мне интересно, как бы я реализовал функции, которые я хочу на этом языке.

13.12.2008 19:33:12
Канонический вопрос для этого: stackoverflow.com/questions/1669/learning-to-write-a-compiler
dmckee --- ex-moderator kitten 4.02.2010 14:55:03
4 ОТВЕТА
РЕШЕНИЕ

Первым инструментом, который я бы порекомендовал, является Книга Дракона. Это ссылка для построения компиляторов. Разработка языка - нелегкая задача, реализовать ее еще сложнее. Там помогает книга драконов. В книге даже ссылки на стандартные инструменты unix lex и yacc. Инструменты, эквивалентные GNU, называются flex и bison. Они оба генерируют лексер и парсер. Существуют также более современные инструменты для генерации лексера и парсера, например, для Java есть ANTLR (я также помню javacc и CUP, но я использовал только ANTLR). Тот факт, что ANTLR сочетает в себе парсер и лексер, и этот плагин eclipse доступен, делает его очень удобным в использовании. Но чтобы сравнить их, тип анализатора, который вам нужен, и знать, для чего они вам нужны, вы должны прочитать книгу Dragon. Есть и другие вещи, которые вы должны учитывать, такие как среда выполнения, парадигма программирования, ....

Если у вас уже есть определенные идеи по дизайну и вам нужна помощь для определенного шага или детализации, помощники могут быть более полезными.

9
13.12.2008 19:49:36

ANTLR - очень хороший генератор синтаксических анализаторов, написанный на Java. Также есть потрясающая книга .

4
20.10.2017 20:23:51

Тесно связанные вопросы (все они были найдены при поиске [compiler]в stackoverflow):

И похожие темы (из того же поиска):


Редактировать: я знаю, что поиск вопросов, связанных со стековым потоком, - это не то, что нам хотелось бы, но нужна ли нам n-я итерация этой темы? Мех!

10
23.05.2017 12:19:31

Мне нравятся Flex (Fast Lex) [Лексический сканер]
и Bison (A Hairy Yacc) [Еще один компилятор компилятора]

Оба бесплатны и доступны на всех установках * NIX. Для Windows просто установите Cygwin.
Но я старая школа.

Используя эти инструменты, вы также можете найти правила lex и программы yacc для многих популярных языков в Интернете. Таким образом, вы можете быстро приступить к работе и настроить грамматику по мере необходимости.

Пример: Обработка арифметических выражений [порядок старшинства и т. Д. - задача «до смерти»), вы можете быстро получить грамматику для этого из Интернета.

Альтернативой для размышления является написание внешнего интерфейса для GCC.
Нетривиально, но если вам нужен скомпилированный язык, это сэкономит много работы в разделе генерации кода (вам все равно нужно будет знать любовь и понимать flex / bison).

2
13.12.2008 20:02:43