MyTetra Share
Делитесь знаниями!
To Do
Время создания: 29.09.2011 02:42
Раздел: Development - UNEX
Запись: xintrea/mytetra_db_rarrugas/master/base/1317256939c59g57wev7/text.html на raw.githubusercontent.com

Сделать инициализацию дифф.картины из Image

-----------------------------------------------------

Сделать расчет zmat->xyz

-----------------------------------------------------

Начать использовать стек execution scope. Это даст возможность правильно обрабатывать исключения: если исключение возникло в коде, где нет обработчика, то нужно разматывать стек до тех пор (выходить во внешние функции), пока не будет найден обработчик.

Похоже что это автоматически у меня делается и без стека. Надо проверять.

Возможно, нужно использовать стек для контроля локальных переменных. Если переменная не найдена в текущем коде=объекте, то ищем переменную в коде уровнем выше.

-----------------------------------------------------

CMakeLists.txt нужно поправить чтобы grammar.y и lexer.l явно зависели от моих хидеров (unex_parser.h) и при компиляции перезапускался Бизон и Флекс автоматически.

-----------------------------------------------------

При вызове методов и функций в unex_ast_traverse() нужно проверять, являются ли они публичными и только тогда их вызывать.

-----------------------------------------------------

Закончить реализацию бинарных операций для встроенных типов: +, -, *, / и т.д. Закончить реализацию бинарных операций с присвоением вроде += (уже кое-что сделано).

-----------------------------------------------------

Блоки в UNEX надо сделать похожими на Руби!

Надо ввесли понятие "контекста исполнения" для Юнекс.

Начинает работать функция или метод - контекст исполнения -- этот метод или функция. Для блоков важно, что они выполняются в контексте вызывающей их функции!

Т.е. конструкции return и super выполняются для вызывающей функции, а не для блока!

Нужно придумать команду, типа "insert func(var1,var2,var3)", чтобы встраивать блоки в контекст текущей функции. Что-то типа yield в Ruby

При этом, надо обязательно обратить внимание на конструкции типа begin ... ensure ..., чтобы например return не сразу выводил из функции, а давал возможность выполнять кусок в ensure!

Читать статью: http://habrahabr.ru/blogs/ruby/86882/

----------------------------------------------------

Сделать raise:

ruby> raise "test error"

test error

ruby> begin

| raise "test2"

| rescue

| print "An error occurred: ",$!, "\n"

| end

An error occurred: test2

nil

-----------------------------------------------------

Сделать countinue как в PHP,т.е. внешние циклы можно перезапускать.

 
MyTetra Share v.0.59
Яндекс индекс цитирования