-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
61 lines (44 loc) · 3.84 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
В данном репозитории будет вестить разработка по созданию урезанной версии компилятора для языка Алгол-60. Все необходимые данные по сборке, установке, а также работе с репозиторием просьба описывать здесь.
Все остальное (краткое и не очень описние работы алгоритмов, программ и прочего) писать в Wiki.
Запрещается:
- Заливать в репозиторий бинарники
- Библиотеки, которые необходимы для работы с данным продуктом, но которые никак не редактировались разработчиками
Разрешается:
- Код
- Красивый код
- Много красивого кода
Для присоединения к проекту, надо:
- Зарегистрироваться на github.com
- Пройти курс молодого бойца: http://help.github.com/win-set-up-git/ (возможно под линукс, в таком случае Git for Windows не понадобится, а курс молодого бойца надо будет начинать с "Next: Set Up SSH Keys")
- Прислать мне ник, чтобы я добавил его к репозиторию
Скачивание репозитория:
> git clone [email protected]:username/Spoon-Knife.git
> cd Spoon-Knife
> git remote add upstream git://github.com/octocat/Spoon-Knife.git
> git fetch upstream
Документация (обязательно):
http://gnuu.org/2009/09/18/writing-your-own-toy-compiler/all/1/
Особенности работы под виндой:
- Кракозябы при работе с русским текстом в названиях файлов и в комментариях к коммиту. Посему все комменты и файлы пишем на английском.
Оригинальный синтаксис языка ALGOL-60
- http://www.masswerk.at/algol60/syntax.txt
Классная дока
- http://foja.dcs.fmph.uniba.sk/kompilatory/docs/compiler.pdf
Для запуска Bison:
> bison -vd parser.y
Для запуска flex:
> flex tokens.l
Python замечательнейший язык! У питона есть модули PYL и llvm-py, которые есть не что иное, как lex, yacc и llvm обернутые для Python.
Пример создания простого компилятора для Паскаля:
- https://github.com/alcides/pascal-in-python/
Берем за основу и создаем по образу и подобию.
Предупреждения насчет llvm-py были вполне обоснованы. Начнем с установки:
> sudo apt-get install llvm-2.7 (нужен, так как 0,6 версия llvm-py поддерживает только её)
> sudo apt-get install llvm-py
Все было бы хорошо, но при это не работает. При попытке сделать import llvm.core все падает с ощибкой:
-- .. llvm/_core.so: undefined symbol: ffi_type_sint16
Как это исправить? Гады разработчики никак не исправят этот баг и не выпустят штуку в релиз. Поэтому скачиваем с
- http://www.mdevan.org/llvm-py/download.html исходники
Открываем patch-py3k.patch и наносим эти изменения в папку llvm
После чего вызываем билд в папку со скаченным llvm-py (..\llvm-py-0.6)
> python setup.py install --user --llvm-config=/usr/lib/llvm-2.7/bin/llvm-config