Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - Rifat

Страницы: 1 2 3 [4] 5
46
Общий раздел / Re:Oberon-07M
« : Март 22, 2011, 08:05:38 pm »
Про внутреннее представление. Сначала строится дерево разбора, если компляция прошла успешно, то по дереву разбора генерируется код.
Про оптимизацию. Фактически оптимизации нет, код генерируется наиболее прямолинейным способом. В дальнейшем, возможно, будут некоторые оптимизации.
Про пример. Да было желание продемонстрировать работу с динамическими массивами. Если динамическая память не используется, то Memory можно не компилировать и удалить его из prj файла, чтобы он не включался. Более того, можно не включать файл Kernel, но если произойдет прерывание работы программы, то никакой информации не будет. А модуль Kernel производит раскрутку стека и выводит информацию о процедурах, в которых произошла ошибка, в файл error.log.

47
Общий раздел / Re:Oberon-07M
« : Март 22, 2011, 09:55:18 am »
Одну и ту же конструкцию можно по-разному преобразовать в дерево и соответственно получить разные дампы.
В любом случае, генерация всяких дампов усложнит компилятор, что не желательно.

48
Общий раздел / Re:Oberon-07M
« : Март 22, 2011, 09:48:26 am »
Сложно будет сделать этот AST стандартизированным, чтобы он удовлетворял потребностям разных людей. С другой стороны, многим ли людям он сейчас нужен, возможно, что если у человека возникнет такая потребность, он достаточно быстро сам это реализует.

49
Общий раздел / Re:Oberon-07M
« : Март 22, 2011, 09:35:39 am »
Исходники разбирать сложнее, чем прочитать толковую книгу или статью, где это описано.

50
Общий раздел / Re:Oberon-07M
« : Март 22, 2011, 09:28:03 am »
1) Компилятор не ругается на использование неинициализированных переменных.
Это затрудняет отладку программ.
Вообще-то это не является ошибкой с точки зрения компилятора. Согласен, что было бы хорошо выдавать warning, при этом. По сути, этим должен заниматься статический анализатор, который будет статически искать ошибки.
Для C++, существует статический анализатор Lint, который анализирует около 1000 разных ошибочных ситуаций и выдает предупреждения. Было бы хорошо, если кто-нибудь дал ссылку на книгу или сайт, где описывается как можно сделать статический анализатор. Насчет данного конкретного случая, можно просто решить, но затем может появиться другая ситуация, которую тоже надо будет отлавливать, поэтому я хочу решить эту проблему как можно в более общем случае, как это сделано в программе Lint.

51
Общий раздел / Re:Oberon-07M
« : Март 22, 2011, 07:48:15 am »
Проблему с циклом Дейкстры решил. Выложил новую версию на сайт.

Насчет тестирования, в процессе работы, я создавал тесты для себя на которых тестировал. Согласен, чтобы было бы хорошо иметь набор эталонных тестов и прогонять на них. Может со временем такой набор тестов появится.

52
Общий раздел / Re:Oberon-07M
« : Март 21, 2011, 08:30:23 pm »
Документ обновил.

53
Общий раздел / Re:Oberon-07M
« : Март 21, 2011, 08:00:43 pm »
Да, там в предложении одно слово пропущено. Должно было быть One dimensional dynamic arrays allowed. Сейчас поправлю.

54
Общий раздел / Re:Oberon-07M
« : Март 21, 2011, 07:35:48 pm »
Выложил описание компилятора: http://exaprog.com/userguide.pdf

55
Общий раздел / Re:Oberon-07M
« : Март 21, 2011, 11:37:59 am »
В принципе возможно, конечно, заранее определить несколько буферов, так что размер следующего в два раза больше предыдущего, вплоть до максимального объема памяти. И использовать буфер, который подходит. Но будет ли это красивым решением?

56
Общий раздел / Re:Oberon-07M
« : Март 21, 2011, 10:57:26 am »
Цитата: Rifat
Появился новый компилятор для языка программирования Oberon-07M. "M" означает, что язык разширен, в частности разрешены одномерные динамические массивы. 

Благодарю за приятную новость о выпуске Вашего компилятора!  :)

Раз язык изменился, то должно быть новое описалово. Планируется ли его публикация?
Не могли бы Вы по пунктам перечислить здесь все новшества, с короткими комментариями.
Описание изменений планируется в ближайшие несколько дней. Когда будет готово, файл будет выложен на сайте.

57
Общий раздел / Re:Oberon-07M
« : Март 21, 2011, 10:56:21 am »
Еще одним аргументом в пользу динамических массивов было то, что некоторые WinApi функции требуют передачи им указателя на массив, размер которого в общем случае не известен.
А вот это уже да, аргумент. Можно пример такой WinAPI функции? А то на вскидку ничего не припоминается.
На вскидку GetFileSecurity, есть еще много других, но надо их искать.

58
Общий раздел / Re:Oberon-07M
« : Март 21, 2011, 10:33:08 am »
То что я добавил динамические массивы. Я размышлял над тем нужны ли они, можно ли обойтись только указателями на запись, но пришел к выводу, что в некоторых случаях несколько блоков фиксированного размера не могут заменить одного большого массива. Например, когда требуется за логарифмическое время находить какое-нибудь значение в большом объеме данных, при помощи бинарного поиска.
На самом деле можно и без них. Например см. http://en.wikipedia.org/wiki/VList
Ясно что нам для реализации VList'a произвольного размера потребуется 32 типа массивов фиксированного размера оберона-07.
Еще одним аргументом в пользу динамических массивов было то, что некоторые WinApi функции требуют передачи им указателя на массив, размер которого в общем случае не известен.

59
Общий раздел / Re:Oberon-07M
« : Март 21, 2011, 10:00:42 am »
Компилятор генерирует 32 битный код, в планах есть сделать 64-битную версию компилятора.
64 битную версию компилятора, или компилятор генерирующий 64битный код? Впрочем, поскольку он компилирует сам себя, то видимо и то и это.

Однако вопрос возникает – как быть с типами данных? В Обероне-07 размеры всех примитивных типов четко расписаны. То есть видимо придется расширять язык новыми типами вроде LONGINT, ну и чтобы NEW(arr, len) len принимал типа LONGINT. Жаль что в Обероне-07 нельзя создавать псевдонимы для примитивных типов, это помогло бы в данном случае.
Как я себе представляю 64 битную весию, что тип INTEGER и указатели будут занимать 64 бита, и не будет необходимости в другом типе данных. Но об этом еще пока рано думать, надо сначала обкатать эту версию.

60
Общий раздел / Re:Oberon-07M
« : Март 21, 2011, 09:54:36 am »
Однопоточность это печально… Ну да ладно.
И еще вопрос по разработке компилятора – есть ли у набор компиляторных тестов?
У меня есть свои тесты на которых я тестировал, но выложить их пока не могу, их надо еще причёсывать.

Страницы: 1 2 3 [4] 5