компилятор

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)