компилятор
- From
- Vladimir Chizhov (2:5030/1359.13)
- To
- Nick Kovaliov
- Date
- 2002-11-01T10:19:03Z
- Area
- RU.ALGORITHMS
``` Это Вам не это! Это из "CARBON.COPIES".
Приветствую, Nick!
Отвечаю на письмо, написанное тобой к Vladimir Chizhov:
>> Есть у кого-нить исходники
>> грамотно (!) написанного компилятора.
NK> GNU C ;-)
Логично... Сам не догадался.
>> В общем интересует примерное соотношение
>> объема работ по различным этапам
NK> Что ты такое пишешь ? ...
Курсовик =0)
NK> Может, тебе проще YACC или BISON юзать ? ...
Дык нет, мне хочется ручками, чтобы скилл рос.
>> (лексический, синтаксический, семантический анализы,
>> создание внутреннего представления программы,
>> генерация ассемблерного кода).
NK> Лексический, если хоть раз писал, пишется за час максимум.
Не писал. Но сложность понятна.
NK> Синтаксический, в общем, почти так же,
NK> но данные для него подготавливать сложнее ...
NK> Какой у тебя язык ? Грамматику написал ?
Ну, в БНФ я язык описал. А вот грамматики пока нет.
NK> Можно ли обойтись LL анализатором
NK> (LL(1) анализатор пишется довольно просто),
NK> или язык настолько сложный, что нужно LR ?
Тут все строго, надо юзать грамматики слабого предшествования.
NK> Сложность семантического анализа так же
NK> сильно зависит от того, что тебе нужно написать ...
NK> Опиши свою систему, и будем тогда
NK> разговаривать не абстрактно, а по делу ...
Короче нужен транслятор из языка в ассемблерный код. Язык - Java, но сильно упрощенная. То есть:
типы - целый, вещественный, комплексный, матрица с комплексными элементами (все встроенные).
if - отсутствует, цикл - только с постусловием. Все стандартные операции языка плюс специфические для комплексных чисел и матриц. Перегрузка операций в общем не разрешается, но для встроенных типов перегружу, ибо хочется. Будут бычить, скажу в Яве тоже для стринга "+" перегружен =0)
О! Кстати, не подскажешь заодно, что такое структурная и именная эквивалентность типов? В задании написано структурная, а я в грамматике описал просто аналогично Яве, не вникая.
NK> Я бы начал сначала с формального описания,
NK> оно тебе всё равно пригодится,
NK> а уж потом думал, как и что будет проще ...
Их есть у меня.
NK> С внутренним представлением и генерацией асма
NK> никаких сложностей возникнуть не должно,
NK> если ты не собираешься оптимизировать.
Нет уж. Без оптимизации хорошо. Я не бизон, чтоб за полтора месяца компилятор с оптимизацией писать.
>> Суть в том, что надо разделить процесс написания
>> на двух человек (поровну =0).
>> Если у кого-то есть опыт - поделитесь, п-ста.
NK> Сделай сначала описание, хорошо представь,
NK> ЧТО ты собираешься делать.
NK> И выясни, можно ли задачу решить другими,
NK> более простыми способами.
Взяткой преподу? =0)
До встречи!
... The rest is silence. (c) W. Shakespeare
---
* Origin: The very end of letter (2:5030/1359.13)