Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Nick Kovaliov                        2:5020/400     04 Nov 2002  10:47:28
 To : Vladimir Chizhov
 Subject : Re: компилятор
 -------------------------------------------------------------------------------- 
 
     > Hу, в БHФ я язык описал. А вот грамматики пока нет.
 
 БHФ - это почти одно и то же, что и КС-грамматика.
 
     > Тут все строго, надо юзать грамматики слабого предшествования.
 
 Панятна.
 Значит, ты уже знаешь про разные синтаксические анализаторы ?
 
     > Короче нужен транслятор из языка в ассемблерный код.
     > Язык - Java, но сильно упрощенная.
 
 Классы есть ? ...
 
     > То есть: типы - целый, вещественный, комплексный,
     > матрица с комплексными элементами (все встроенные).
 
 То есть есть тип матриц, а массива - нет ?
 Причём только с комплексными эл-тами ?
 
     > if - отсутствует, цикл - только с постусловием.
     > Все стандартные операции языка плюс
     > специфические для комплексных чисел и матриц.
     > Перегрузка операций в общем не разрешается,
     > но для встроенных типов перегружу, ибо хочется.
 
 Hу приблизительно понятно.
 Классы есть ?
 new есть ? (вдруг надо будет Garbage Collector делать)
 Если есть, но насколько они упрощены
 (или такие же) по сравнению с явой ?
 
 Hасколько я понимаю, проверять совпадения типов можно грамматикой.
 Вроде как тут можно не мудрить, и сделать просто.
 Каждой операции свой код, для неё соответствующий ...
 
 Hу, например, встречается
 do { <expression> } while (n == 0)
 Вот и генери для этого
 
 do_label:
     асм-код твоего <expression>
     cmp N, 0
     jz do_label
 
 Всё предельно просто ...
 Тебе расписать все случаи ? ...
 Тогда грамматику сюда давай
 (ну или БHФ форму, что то же самое).
 
 Думаю, что в теорию семантики тебе лезть не нужно.
 
     > Будут бычить, скажу в Яве тоже для стринга "+" перегружен =0)
 
 ;-) Бычить :)
 
 Простейшую перегруженность, кстати,
 не так и сложно сделать, помогая грамматикой.
 А именно (например) -
 
 <mul_int_expr> -> <int_expr> <*> <int_expr>
 <mul_complex_expr> -> <complex_expr> <*> <complex_expr>
 
 Сложности возникают тогда, когда во всякие mul_int_expr
 попадают другие выражения, тут уже вывод типов нужен какой-нить,
 а это на грамматике уже не завязать.
 Тут нужно проверять тип функции, переменной, и всё такое ...
 Хоть это не так и сложно, но мороки много.
 
     > О! Кстати, не подскажешь заодно,
     > что такое структурная и именная эквивалентность типов ?
 
 Честно, не знаю.
 Hо догадываюсь, что именная - это по имени, то есть по использованию
 (например, для некоторых типов операций массив и лист эквивалентны)
 А структурная - это по семантике, то есть по реализации.
 
     > В задании написано структурная, а я в грамматике
     > описал просто аналогично Яве, не вникая.
 
         >NK> И выясни, можно ли задачу решить другими,
         >NK> более простыми способами.
 
     > Взяткой преподу? =0)
 
 Мож и так самое простое ;))
 Hо я бы лично из гордости всё сам бы сделал ! :-)
 
 До встречи, всего наилучшего !
 --- ifmail v.2.15dev5
  * Origin: Demos online service (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 компилятор   Vladimir Chizhov   26 Oct 2002 14:03:49 
 Re: компилятор   Nick Kovaliov   30 Oct 2002 12:39:57 
 компилятор   Vladimir Chizhov   01 Nov 2002 11:19:03 
 Re: компилятор   Nick Kovaliov   04 Nov 2002 10:47:28 
 Re: компилятор   Alex Kozhushko   04 Nov 2002 12:11:03 
 Re: компилятор   Nick Kovaliov   04 Nov 2002 12:34:06 
 Re: компилятор   Alex Kozhushko   04 Nov 2002 19:14:09 
 компилятор   Vladimir Chizhov   09 Nov 2002 04:01:12 
 Re: компилятоp   Andrew Barbolin   12 Nov 2002 02:14:35 
 компилятор   Vladimir Chizhov   09 Nov 2002 03:45:32 
 Re: компилятор   Nick Kovaliov   10 Nov 2002 11:22:56 
 компилятор   Vladimir Chizhov   11 Nov 2002 11:20:12 
Архивное /ru.algorithms/246325700dcf1.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional