Да! Интерес к компиляторам был мой крючок в профессиональную CS (ранее я был на пути к EE и только формально перешел на сторону колледжа), это отличный способ узнать TON о широком спектре вопросов, связанных с информатикой. Вы немного моложе (я учился в старших классах, когда начал дурачиться с синтаксическими анализаторами и переводчиками), но в наши дни в вашем распоряжении еще много информации.
Начало маленького: спроектируйте самый маленький язык, о котором вы можете подумать, - начинайте с простого математического калькулятора, который позволяет назначать переменные и замену. Когда вы начинаете приключений, попробуйте добавить «if» или «loop». Забудьте тайные инструменты, такие как lex и yacc, попробуйте вручную написать простой рекурсивный анализатор спуска, возможно, перейдете на простые байт-коды и напишите для него интерпретатор (избегайте всех жестких частей понимания сборки для конкретной машины, распределения регистров и т. Д.). Вы узнаете огромную сумму только с этим проектом.
Как и другие, я рекомендую книгу Дракона (издание 1986 года, мне не нравится новый, откровенно говоря).
Я добавлю, что для ваших других проектов я рекомендую использовать C или C++, резать PHP, а не потому, что я язык фанатичный, но только потому, что я думаю, что работа через трудности в C/C++ научит вас гораздо больше о проблемах с машинной архитектурой и компилятором.
(Примечание:... Если ты профессионал, то совет будет не создавать новый язык, который почти никогда не является правильным решением Но как проект для изучения и исследования, это фантастика)
Уже большой выбор ресурсов здесь: http://stackoverflow.com/questions/1669/learning-to-write-a-compiler –
Спасибо за этот конструктивный комментарий Пол. – 2010-09-07 20:30:52
@Pierre Здесь, чтобы помочь! –