LINUX.ORG.RU

forth на ocaml


0

0

Это я пишу некий компилятор недофорта. И чую, что писать ещё долго. Вон, vim пишет 17L, 407C, а на 17 строчек ушла целая неделя вечеров - трудный этот ML. И вместо AST как видно сейчас пока гордый кодогенератор из printf :) Но хоть это работает - и то ладно.

А недофорт потому что он для MCS-51 - там интерпретации и добавлению новых слов в рантайме делать нечего (ОЗУ маловато). Cловарь хранится в самой прошивке, а формируется на хост машине. Вернее ещё будет формироваться :)

Ну и по скрину: вверху всякие перделки, внизу - тоже :)

Восемь рабочих столов пока что не используются, хотя и созданы. Дело в том, что в моей убунте 7.04 при переключении по ним часто исчезают гномовские нижняя и верхняя панельки. Может кто-нибудь знает как их лечить?

Разрешение 800x600 выставлено специально. При этом разрешении объекты на мониторе гармонируют по размеру с объектами около монитора и всяким хламом на столе.

>>> Просмотр (800x600, 108 Kb)



Проверено: Shaman007 ()
Ответ на: комментарий от anonymous

Затем что я ими хочу пользоваться и изредка пытаюсь. В ~60% получается ну а в остальном глючит

itanko
() автор топика
Ответ на: комментарий от polachok

а ты уже и не помнишь под веществами или нет? :)

на самом деле там две гленды :)

itanko
() автор топика

Почему в убунте такие баллоны сообщений как на скрине, как такое сделать в не-убунте?

anonymous
()
Ответ на: комментарий от polachok

Ну да, но и я не Ортемей Лебедев. Исходник для GIMPа я кинул - можно подровнять.

itanko
() автор топика

1. музыка - зачёт
2. за логотип Plan9 тоже зачёт
3. за 800x600 респект за оригенальность.

дальше не знаю даж

stalkerg ★★★★★
()
Ответ на: комментарий от asandros

>Назовите преимущества gvim по отношению к vim.

1) colorscheme
3) Обычный + Курсив
2) При копипасте с внешним миром он не падает. :)

anonymous
()
Ответ на: комментарий от zpp

> зачем прозрачность в консоли? ничего же не видно

Да какая там прозрачность - еле шает :) Даже если взади какое-нибудь белое окно - все равно все разборчиво.

Более того, у меня как-то так интересно получилось, что если взади поставить окно с документацией то её тоже видно - можно подглядывать простой перефокусировкой зрения (ну не перефокусировкой, конечно, плоскость ведь одна, но типа этого).

> и почему не gvim

А потому что gvim выковырян из консоли. Вот пишу я чего-нибудь и вдруг мне надо выйти и что-нибудь в консоли поделать - в vim это сразу :wq оп и все, a когда в gvim'е сидишь надо за новым окном тянуться.

Может конечно и в gvim можно как-нибудь bash вызывать но честно говоря я не копался - мне и vim'а хватает.

itanko
() автор топика
Ответ на: комментарий от anonymous

>> Назовите преимущества gvim по отношению к vim.

> 1) colorscheme

$ cat .vimrc | grep colorscheme "colorscheme torte

> 3) Обычный + Курсив

На любителя, для меня это не принципиально.

> 2) При копипасте с внешним миром он не падает. :)

Не видел, чтобы vim падал вообще, а от copy-paste в частности.

asandros ★★
()
Ответ на: комментарий от asandros

>$ cat .vimrc | grep colorscheme "colorscheme torte

Сравни качество и количество у vim и gvim

>На любителя, для меня это не принципиально.

Рад за вашу не принципиальность.

>Не видел, чтобы vim падал вообще, а от copy-paste в частности.

Наверное потому, что ты им не пользуешься. Падение происходит из за того, что терминал расценивает копипаст как ^C

anonymous
()
Ответ на: комментарий от anonymous

>Наверное потому, что ты им не пользуешься. Падение происходит из за того, что терминал расценивает копипаст как ^C

это у вас терминал какой-то убогий, тов. анонимус. вот только что нажал p и вставилось, ничо не упало. нажал yy, вставил в фф. опять не упало. ЧЯДНТ?

vim 7.1.123, urxvt, screen.

polachok
()
Ответ на: комментарий от polachok

Рад, что вы пользуетесь urxvt, но я предпочитаю терминалы со сглаживанием, нормальными табами, etc

anonymous
()
Ответ на: комментарий от anonymous

> Рад, что вы пользуетесь urxvt, но я предпочитаю терминалы со сглаживанием, нормальными табами, etc

и в которых не работает копипаст, лол

anonymous
()
Ответ на: комментарий от anonymous

>и в которых не работает копипаст, лол

Но только для vim-а, который легко заменить на gvim. :)

anonymous
()
Ответ на: комментарий от anonymous

> и в которых не работает копипаст, лол

Как мне в Konsole отключить копипаст?

anonymous
()
Ответ на: комментарий от anonymous

> Наверное потому, что ты им не пользуешься. Падение происходит из за того, что терминал расценивает копипаст как ^C

Вот и проявили себя все быдлокопипастнечки.

Самому надо код писать, а не копепастеть.

Ъ

anonymous
()
Ответ на: комментарий от anonymous

> Рад, что вы пользуетесь urxvt, но я предпочитаю терминалы со сглаживанием, нормальными табами, etc

А чо, в urxvt Xft запретили нынче?

А табы ненужны(tm).

anonymous
()
Ответ на: комментарий от anonymous

>Конфиг в студию.

+без .Xdefaults

anonymous
()
Ответ на: комментарий от polachok

>это у вас терминал какой-то убогий, тов. анонимус. 
>вот только что нажал p и вставилось, ничо не упало. нажал yy,
>вставил в фф. опять не упало. ЧЯДНТ?

>vim 7.1.123, urxvt, screen.

Баг в полной мере воспроизводится в urxvt:

vim copytest
i
йцукефывап
v (выделяем текст)
"+y
С-v в гедит, оперу или ещё что нибудь. 

anonymous
()
Ответ на: комментарий от Darkproger

Плеер Quod libet с плагинами всякими. Кстати никто не знает, он audio cd умеет играть?

itanko
() автор топика
Ответ на: комментарий от anonymous

Точно. Vim-то у меня не самый новый - 7.0.235

itanko
() автор топика
Ответ на: комментарий от ferhiord

А мне все нравится у него - я вообще поклонник.

И ещё у меня товарищ соседей pacman'ом доставал %)

itanko
() автор топика

Мужик, ты глубоко неправ.

1) Нет и не может быть никакого AST у Форта.

2) Никто не мешает делать кросскомпиляцию с интерпретацией immediate words на хосте, но с генерацией шитого кода для таргета.

3) Форту парсер не нужен, вообще. Совсем. split по пробелам - вот и весь парсер. Слова выполняются последовательно, структуры нет - см. 1.

anonymous
()
Ответ на: комментарий от anonymous

> Конфиг в студию.

urxvt -fn "xft:Bitstream Vera Sans Mono:pixelsize=15"

Дальше именно в .Xdefaults

anonymous
()

за Aphex Twin зачет автоматом!!

anonymous
()

Тема Forth нераскрыта

dave ★★★★★
()
Ответ на: комментарий от anonymous

> 2) Никто не мешает делать кросскомпиляцию с интерпретацией 
immediate words на хосте, но с генерацией шитого кода для таргета.

Примерно это и задумывается

> 3) Форту парсер не нужен, вообще. Совсем. split по пробелам
 - вот и весь парсер. Слова выполняются последовательно, 
структуры нет - см. 1.

Вообще говоря, я поэтому и написал что это недофорт.

Дело в том, что я пошел немного далее в плане оптимизации
по размеру :) Слов из букв вообще не будет, соответственно 
пробелов не будет тоже. Будут только индексы статей
в словаре - каждый размером с байт.

Cловарь будет выглядеть примерно так:

dict:
    .dw a1
    .dw a2
    .dw a3
   etc...


Нативная статья из будет выглядеть примерно так

a1:
    setb p1.1
    ret

Ненативная статья будет выглядеть примерно так

a2:
    call w
    .dw a1
    .dw a3
    .dw 0x00

где процедура w загружает ворды позади себя до 0x00,
а затем говорит ret и процессор ret'ами прыгает по словам.

Как будет выглядеть хранение данных при этом, лупы
и условные переходы - пока крайне не ясно.

Затрудняюсь ответить является ли то что я описал фортом,
но за идею был взят именно форт, поэтому
по инерции я его так и называю.

А показанное на скриншоте творение на ocaml собственно и будет
из недофортового исходника генерировать ассемблернй листинг
для asx8051 из комплекта sdcc. И если ASTом я по небрежности
назвал некую внутреннюю структуру ocaml в которую он будет читать
исходник и из которой он потом сформирует листинг для asx8051.
Это творение - чистый компилятор и к форту никакого отношения
не имеет. То, что имеет отношение, будет в микроконтроллере.

Надеюсь понятно объяснил? :)

itanko
() автор топика
Ответ на: комментарий от itanko

Шитый код с однобайтными токенами. Нормально. Но! Опять - парсер ему не нужен. Сам кросскомпилятор ведь словарь содержит, в том числе и словарь с immediate words, которые всю грязную семантическую работу и должны делать.

Можно сделать чистый компилятор без immediate words, но со сложной семантикой (и с парсером), но это, как ни странно, сложнее в реализации чем более полноценный кросс-форт.

anonymous
()
Ответ на: комментарий от anonymous

> Падение происходит из за того, что терминал расценивает копипаст как ^C

Виндузятник детектед. С каких пор эту стремную комбинацию стали использовать для копирования чего-либо?

anonymous
()
Ответ на: комментарий от anonymous

> Шитый код с однобайтными токенами.

Так точно.

> Там никакого парсера и не будет.

Помимо словаря и статей будет ещё только процедура w и всё.

> Сам кросскомпилятор ведь словарь содержит, в том числе и словарь с immediate words, которые всю грязную семантическую работу и должны делать.

Да-да. Именно так и задумываю.

Кстати tnx за терминологию. А то её мне не хвататет.

itanko
() автор топика
Ответ на: комментарий от polachok

Полачок нонче имеет в своем распоряжении сколь угодно времени чтобы комментировать каждого и каждое? Весьма и весьма странно. Ребят а вас мне уже по-настоящему жаль. Скоро лексикон кроме слов: недоязык, быдлокодер, гуманитарий, вендузятник, красноглазик не будет содержать ровным счетом ничего. Взрослеть пора ЛОР'у, ой как пора.

P.S.: Интернету пора на покой. Я думаю кто-нибудь да согласится со мной.

slonotop
()

За forth отдельный зачёт. ИМХО, отличный язык. Тоже писал к нему компилятор когда-то, правда для совсем других целей, так что там и определение слов было. Верной дорогой идёте! :)

voronaam ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.