компилятор
- From
- Vladimir Chizhov (2:5030/1359.13)
- To
- Nick Kovaliov
- Date
- 2002-11-09T02:45:32Z
- Area
- RU.ALGORITHMS
``` Это Вам не это! Это из "CARBON.COPIES".
Приветствую, Nick!
Отвечаю на письмо, написанное тобой к Vladimir Chizhov:
>> Тут все строго, надо юзать грамматики слабого предшествования.
NK> Панятна.
NK> Значит, ты уже знаешь про разные синтаксические анализаторы ?
Не-а. Синтаксический анализатор пишет другой человек (мы вдвоем пишем), поэтому я пока не читал про них. Но завтра почитаю, потому что лексический уже написал.
>> Короче нужен транслятор из языка в ассемблерный код.
>> Язык - Java, но сильно упрощенная.
NK> Классы есть ? ...
Угу. Но опять же упрощенные. Никаких спецификаторов: ни доступа, ни static. Но с полями и методами.
>> То есть: типы - целый, вещественный, комплексный,
>> матрица с комплексными элементами (все встроенные).
NK> То есть есть тип матриц, а массива - нет ?
NK> Причём только с комплексными эл-тами ?
Да.
>> if - отсутствует, цикл - только с постусловием.
>> Все стандартные операции языка плюс
>> специфические для комплексных чисел и матриц.
>> Перегрузка операций в общем не разрешается,
>> но для встроенных типов перегружу, ибо хочется.
NK> Ну приблизительно понятно.
NK> Классы есть ?
NK> new есть ? (вдруг надо будет Garbage Collector делать)
Есть. Для создания экземпляра класса. И... без GC обойдемся. Область видимости по-любому придется отслеживать, поскольку есть классы и методы. Поэтому килять объекты будем сразу.
NK> Если есть, но насколько они упрощены
NK> (или такие же) по сравнению с явой ?
Все что было написано выше + без наследования, без реализации интерфейсов, без сериализации... Короче, совокупность полей и методов. Больше нифига. Даже внутренних нет. Про безымянные помалкиваю.
NK> Насколько я понимаю, проверять совпадения типов можно грамматикой.
NK> Вроде как тут можно не мудрить, и сделать просто.
Вот так мы и сделаем =0)
NK> Каждой операции свой код, для неё соответствующий ...
NK> Ну, например, встречается
NK> do { <expression> } while (n == 0)
NK> Вот и генери для этого
NK> do_label:
NK> асм-код твоего <expression>
NK> cmp N, 0
NK> jz do_label
NK> Всё предельно просто ...
NK> Тебе расписать все случаи ? ...
Да нет, спасибо. См. свою последнюю фразу =0)
>>NK> И выясни, можно ли задачу решить другими,
>>NK> более простыми способами.
>> Взяткой преподу? =0)
NK> Мож и так самое простое ;))
NK> Но я бы лично из гордости всё сам бы сделал ! :-)
Дык так оно и будет. Но дело даже не в гордости, а в желании.
До встречи!
... The rest is silence. (c) W. Shakespeare
---
* Origin: The very end of letter (2:5030/1359.13)