Написание компилятора - PullRequest
       31

Написание компилятора

1 голос
/ 17 марта 2011

Мне нужно сделать компилятор для файлов bibtex, чтобы можно было запрашивать заданную базу данных bibtex.Теперь я знаком с некоторыми аспектами теории, такими как автоматы, грамматики, SLR, LR (1) и анализ LALR.Тем не менее, я все еще нахожу все это теоретическое и абстрактное, поскольку я никогда не применял его.Было бы очень полезно, если бы кто-то смог наметить твердые шаги, необходимые для сборки компилятора.Я буду использовать flex и bison / yacc, вероятно, поэтому, если бы вы могли дать мне знать, как именно идет процесс проектирования, какие файлы генерируются на каком этапе, каковы выходные данные на каждом этапе, и в целом, как все связывается,Возможно, я смогу получить более практичное представление о том, как все делается ...

Спасибо!

Ответы [ 2 ]

1 голос
/ 17 марта 2011

Вы уверены, что хотите скомпилировать базу данных bibtex в нечто исполняемое?Если запрос - это единственное, что вам нужно, то будет более разумно перевести базу данных bibtex в реляционную и запросить ее с помощью SQL.Конечно, вам все равно придется сначала проанализировать bibtex и сгенерировать из него код SQL, а некоторые назовут его «компиляцией», но это гораздо менее сложно, чем то, что уже упоминалось в «Книге драконов».Синтаксис Bibtex чрезвычайно тривиален, поэтому вы можете выбрать любой подход к синтаксическому анализу.Я бы даже не стал использовать генераторы синтаксического анализатора для такой тривиальной грамматики, и вместо этого буду использовать синтаксический анализатор с рекурсивным спуском.В зависимости от выбранного вами языка это может быть очень просто (например, если вы используете Haskell с Parsec или даже C #).

Если ваша дополнительная цель - изучить устаревшие инструменты, такие как Bison иflex, тогда, конечно, они тоже сделают эту работу, но это перебор.

Edit : лучшее практическое чтение по классическому подходу lex / yacc - http://en.wikipedia.org/wiki/The_Unix_Programming_Environment

1 голос
/ 17 марта 2011

Я не эксперт по компилятору, но я знаю, что эта книга на самом деле считается необходимым чтением для всех, кто хочет написать компилятор.Да, обложка устарела, но из того, что я прочитал, все еще есть много хороших шаблонов, имеющих отношение к компиляции кода:

http://www.amazon.com/Compilers-Principles-Techniques-Alfred-Aho/dp/0201100886

...