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

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


Сообщения - vlad

Страницы: 1 ... 7 8 [9] 10 11 ... 93
121
Общий раздел / Re: Делаем строку на O7
« : Март 15, 2014, 03:31:48 pm »
Как дела обстоят с юникодом?

Ну конкретно в JS реализации деваться особо некуда - строки напрямую отображаются на JS строки. Соответственно юникод поддерживается ровно настолько, насколько он поддерживается исполняющим JS движком.

122
Общий раздел / Re: Делаем строку на O7
« : Март 15, 2014, 05:19:34 am »
Вот что получилось в oberonjs:
https://github.com/vladfolts/oberonjs/wiki/eberon-strings
Критикуйте :)

123
Общий раздел / Re: Online компилятор Oberon-07/11.
« : Февраль 12, 2014, 04:04:45 pm »
Не отметил сразу eberon методы оказались именно тем, что нужно.

Я их поэтому первыми и сделал - без них вообще никак :)

В связи с этим еще один вопрос:
Вроде какой-то редактор дорабатывался (или плагин к редактору писался).

valexey писал примочку к Сублиму. Она не работает с методами eberon'а (надо допиливать). Я планировал туда влезть когда компилятор будет выдавать синтаксическое дерено - на предмет автокомплита и прочего.

124
Общий раздел / Re: Oberon-07/13: заметки
« : Февраль 11, 2014, 08:11:56 am »
Так ведь обычная иммутабельная строка любой длины является ссылочным типом: нужен указатель на буфер любой длины.

А иммутабельность как обеспечить? А оператор сложения? Кроме того, очень не хочется иметь NIL строки (по опыту шарпа сужу - дурной nullOrEmpty или как там его). Чтобы сделать нормальный STRING средствами языка нужно нехило расширить O7. Я пока пытаюсь маленькими шажками идти и хорошо проверенными.

P.S. Ну и конечно оно должно хорошо ложиться на JS строки. Вроде никаких серьезных препятствий для этого нет.

125
Общий раздел / Re: Oberon-07/13: заметки
« : Февраль 10, 2014, 03:01:06 pm »
Следующее расширение - STRING. Это будет value-тип
Фиксированной длины?

Нет конечно. Обычная иммутабельная строка любой длины. Можно смотреть на нее как на расширение ARRAY OF CHAR, только не модифицируемый и с добавленной операцией '+'.

126
Общий раздел / Re: Online компилятор Oberon-07/11.
« : Февраль 08, 2014, 11:04:12 pm »
Тогда такой вопрос, а то проверить до конца не могу, как по конкретному RECORDу получить POINTER на него? Чё то не нашел такой процедуры. Если такого нет, то думаю смогу обойтись, но не хотелось бы много переделывать

Нельзя. Потому что RECORD может быть на стеке, а POINTER указывает на объекты в куче. В случае жабаскрипта, конечно, не актуально - там все динамическое.

127
Общий раздел / Re: Oberon-07/13: заметки
« : Февраль 08, 2014, 05:54:42 am »
Что можно переписано на оберон. В принципе можно было еще context.js попробовать, но он очень большой, а дальше так жить нельзя.

Следующее расширение - STRING. Это будет value-тип, который не может быть NIL. По  минимуму, но концептуально (не как в ББ).

128
Общий раздел / Re: Oberon-07/13: заметки
« : Февраль 08, 2014, 05:47:47 am »
Что можно переписано на оберон. В принципе можно было еще context.js попробовать, но он очень большой, а дальше так жить нельзя.

Следующее расширение - STRING. Это будет value-тип, которы

129
Общий раздел / Re: Online компилятор Oberon-07/11.
« : Февраль 08, 2014, 05:41:40 am »
Сейчас если написать например так:
PROCEDURE T ( this : Type );
BEGIN
   this.Property := 5;
END T;

на выходе вместо  this выдается this$

Так а ебероновские методы не подойдут?
TYPE
    Type = RECORD
        PROCEDURE T();
        Property: INTEGER
    END;

PROCEDURE Type.T();
BEGIN
    SELF.Property := 5; (* вот это странслируется в this.Property = 5 *)
END Type.T;

130
Общий раздел / Re: Online компилятор Oberon-07/11.
« : Февраль 07, 2014, 03:11:52 pm »
Можно ли параметр this в параметрах процедур вообще пропускать (естественно он должн идти последним, а в теле процедур, так и писать как this . Или это чего то порушит?

Можно пример - а то непонятно о чем речь.

131
А чем не устраивает описание реализации от самого Вирта? "Построение компиляторов", гл. 12.

Ага, это оно, спасибо!

132
Общий раздел / Re: Oberon-07/13: заметки
« : Февраль 05, 2014, 02:53:57 am »
Вроде в КП у АССЕРТА можно было номер вводить, для О7 это возможно (что-то не нашел этой возможнгости)?

Вирт выпилил. Лично я тоже не вижу никакого смысла в номере. Во-первых, если и хочется дополнительно информации, то это как минимум строка должна быть (в дополнению ко стеку). Во-вторых всегда можно забабахать MyAssert с какими угодно дополнительными параметрами.

133
Общий раздел / Re: Oberon-07/13: заметки
« : Февраль 05, 2014, 02:48:46 am »
Для оберона вполне можно реализовать не только синтаксическую проверку (исходя из следующих предпосылок):
1) для всех условий используются только переменные простых типов (сравнение с ними). Если есть обращение к другим модулям, то считается что они корректны (для обозначения этого можно какой-то АССЕРТ придумать)

Не понял. f1() = f2() уже не написать?

2) везде где нужно прописываются АССЕРТЫ (именно на них и ориентировалась бы проверка). Это, пожалуй, самая сложная часть для программиста, но без нее похоже проверки не сделать.

Ну здесь как бы ничего нового. Ассерты прописываются где нужно. Было бы желание программиста их писать (оберон для этого не обязателен).

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

Не понял. Он и так выполняется от начала до конца (а обероне O7 только один RETURN).

Тут же будут проверяться и не проиниченные переменные (на входе то цикла или чего там еще, тоже будет стоять АССЕРТ).

Это масло маляное. Непроиниченные переменные потому и непроиниченные, что про них забыли. Ассерт забудут с тем же успехом.

134
Если ввести параметры-процедуры с обязательным неявным указателем, значения которых нельзя присваивать, то ограничение на передачу можно обойти. Слишком мудрённо это для Оберона.

Одного связанного параметра мало

Хотя не - еще раз прокрутил, вроде должно работать просто с одним параметром - указателем на стек объемлющий процедуры.

135
Общий раздел / Re: Oberon-07/13: заметки
« : Февраль 04, 2014, 11:28:04 pm »
Эти проверки - штука ОЧЕНЬ легкая относительно всего остального. Даст замедление в 0.001% :-)

Конкретно касательно oberon -> js - проверки это 99% :) И 1% - генерация кода.

Страницы: 1 ... 7 8 [9] 10 11 ... 93