Возможно мой выбор покажется не самым лучшим, если кто-то так считает, то высказывайтесь.
Вот, что я выбрал: загрузчик - grub формат - ELF язык - Си
Т.е. пишу виртуальную машину на Си, компилирую в формат ELF и загружаю с помощью grub. Почему Си, почему не Лисп? Потому что на голом железе не запустится. Хотя нет, запустится, но для этого придется написать свой компилятор. Например, Losak - компилятор из Лиспа в Си. Но меня чета не прет писать компилятор, а использовать losak тоже не хочу. В общем, пока буду писать на Си, а там посмотрим, может и компилятор напишу.
Теперь, подробнее про реализацию виртуальной машины. Я не буду использовать struct, как некоторые делают, когда пишут интерпретатор лиспа на Си, а просто буду работать со строками (char*). Какая от этого польза? Память экономиться, скорость выше (хотя это спорно), читать исходник легче (парадокс, но это действительно так), парсер в 10 строчек, кода меньше выходит.
Т.е. я читаю выражение с консоли как строку и работаю только с этой строкой, никаких структур (типа пара, список, атом), постепенно преобразуя ее в другую строку - значение этого выражения, и вывожу ее обратно на консоль.
ЗЫ. продолжение следует...
|