Показать сообщение отдельно
Старый 16.07.2009, 11:56   #191
abcdef
Знающий
 
Регистрация: 16.09.2008
Сообщений: 299
Написано 71 полезных сообщений
(для 123 пользователей)
Ответ: создание MIDletPascal compiler'a

Проще и правильней спроектировать, всегда сложнее чем реализовать.
Поэтому давайте глянем как все сделано в MidletPascal:
type
  _record_ = record
    x,y : integer;
  end;

var
  _real_        : real;
  _integer_     : integer;
  _char_        : char;
  _boolean_     : boolean;
  _string_      : string;
  _http_        : http;
  _resource_    : resource;
  _recordstore_ : recordstore;
  _command_     : command;
  _image_       : image;
begin
  _boolean_:=false;
  _boolean_:=true;
  _boolean_:=(3<>4);
  delay(1);
end.
получаем на java:
  public static int _real_;
  public static int _integer_;
  public static int _char_;
  public static int _boolean_;
  public static String _string_;
  public static H _http_;
  public static InputStream _resource_;
  public static RecordStore _recordstore_;
  public static Command _command_;
  public static Image _image_;
т.е. фактически все вычисления и обработка данных ведется в Integer (real, integer, char, boolean)
__
Тип String стоит особняком, т.к. есть только инструкция для передачи/получения из стека, а если нужна обработка, то она производится в спец.классе, компилятор только загружает пераметры в стек и вызывает метод, и больше не имеет к этому ни какого отношения
__
http - как в случае и с типом String: вся работа в отдельном классе, на MP операции устанавливаются ссылки на методы H.class.
__
InputStream, RecordStore - указатели как и в обычной java
__
command и image - как и в обычной java
__
ну и последнее, пользовательские типы:
public class R_1 {
public int x;
public int y;
public R_1() {
  x = 0;
  y = 0;
}
public R_1 Copy(R_1 r_1) {
  x = r_1.x;
  y = r_1.y;
  return this;
}
}
для нашего тип сгенерировался класс, с инициализацией элементов типа и оперицией копирования типа в тип.

====
Вот и все. Поправьте меня, если что-то упустил или написал не так...
(Offline)
 
Ответить с цитированием