OberonCore
https://forum.oberoncore.ru/

Component Pascal на github
https://forum.oberoncore.ru/viewtopic.php?f=28&t=5112
Страница 1 из 2

Автор:  ilovb [ Пятница, 16 Май, 2014 21:04 ]
Заголовок сообщения:  Component Pascal на github

Отправил тут пулреквест: https://github.com/github/linguist/pull/1198
Надеюсь что вольют. Но у меня не получилось протестировать.

Кто умеет готовить Ruby протестируйте плиз и отпишитесь там по возможности.

Режим выбрал Pascal (проверить как оно с CP можно тут http://ace.c9.io/build/kitchen-sink.html)

Еще не мешало бы научить Ace понимать Component Pascal. Теоретически достаточно допилить плагин valexey'я: https://github.com/vladfolts/oberonjs/b ... tmLanguage
Ace вроде как поддерживает такой формат.

Автор:  ilovb [ Пятница, 16 Май, 2014 21:08 ]
Заголовок сообщения:  Re: Component Pascal на github

Вот, кстати, там уже автоматическая сборка не прошла. Не шарю я в рубях... :(

Автор:  ilovb [ Пятница, 16 Май, 2014 23:21 ]
Заголовок сообщения:  Re: Component Pascal на github

В общем вроде все хорошо. Правда есть некоторые непонятки с odc.

Кто хорошо владеет ангельским? Помогайте там :)

Автор:  Димыч [ Суббота, 17 Май, 2014 12:20 ]
Заголовок сообщения:  Re: Component Pascal на github

Написал комментарий
https://github.com/github/linguist/pull/1198

Take a look :)

Автор:  Роман М. [ Суббота, 17 Май, 2014 13:00 ]
Заголовок сообщения:  Re: Component Pascal на github

ilovb писал(а):
В общем вроде все хорошо. Правда есть некоторые непонятки с odc.

Кто хорошо владеет ангельским? Помогайте там :)

Какие именно "непонятки с odc" и в чём сложности с английским?

Автор:  Роман М. [ Суббота, 17 Май, 2014 13:03 ]
Заголовок сообщения:  Re: Component Pascal на github

ilovb писал(а):
Вот, кстати, там уже автоматическая сборка не прошла. Не шарю я в рубях... :(

Вроде бы лексер Pygments пишется на Python. За основу можно взять Modula2Lexer.

Как бонус от разработки лексера для Pygments:
http://pygments.org/faq/#who-uses-pygments

Автор:  Роман М. [ Суббота, 17 Май, 2014 13:07 ]
Заголовок сообщения:  Re: Component Pascal на github

ilovb писал(а):
Еще не мешало бы научить Ace понимать Component Pascal.
Что тогда? Разработку на КП тогда тоже в веб-браузере можно делать?

Автор:  ilovb [ Суббота, 17 Май, 2014 14:32 ]
Заголовок сообщения:  Re: Component Pascal на github

Ну на сколько я понял в качестве онлайн редактора в гитхабе как раз и есть Ace. (кнопочка Edit)

Автор:  Димыч [ Суббота, 17 Май, 2014 14:33 ]
Заголовок сообщения:  Re: Component Pascal на github

Роман М. писал(а):
ilovb писал(а):
В общем вроде все хорошо. Правда есть некоторые непонятки с odc.

Кто хорошо владеет ангельским? Помогайте там :)

Какие именно "непонятки с odc" и в чём сложности с английским?

Я так понимаю, сложность состоит в том, что нужно написать лексер на Руби, на вход получающий *.odc, на выходе - форматированный текст.
Видимо так.

Автор:  ilovb [ Суббота, 17 Май, 2014 14:39 ]
Заголовок сообщения:  Re: Component Pascal на github

Роман М. писал(а):
Какие именно "непонятки с odc" и в чём сложности с английским?

Непонятно как сделать чтобы гитхаб считал такие файлы компонентным паскалем.
Может там Text only поставить... но не знаю будет ли это правильно. Формат то бинарный.

А английский у меня на уровне "привет", "спасибо", "пока". Потому и прошу помощи.

Ну Дмитрий там уже достаточно хорошо все объяснил (я б такое не сгенерил :)) За что ему большое спасибо.

Автор:  ilovb [ Суббота, 17 Май, 2014 14:40 ]
Заголовок сообщения:  Re: Component Pascal на github

Димыч писал(а):
Я так понимаю, сложность состоит в том, что нужно написать лексер на Руби, на вход получающий *.odc, на выходе - форматированный текст.
Видимо так.

Для начала хоть бы определялись как Component Pascal.

Автор:  Роман М. [ Суббота, 17 Май, 2014 19:15 ]
Заголовок сообщения:  Re: Component Pascal на github

Димыч писал(а):
Роман М. писал(а):
ilovb писал(а):
В общем вроде все хорошо. Правда есть некоторые непонятки с odc.

Кто хорошо владеет ангельским? Помогайте там :)

Какие именно "непонятки с odc" и в чём сложности с английским?

Я так понимаю, сложность состоит в том, что нужно написать лексер на Руби, на вход получающий *.odc, на выходе - форматированный текст.
Видимо так.

Не видел ни одного примера лексера языка, у которого на входе был бы бинарный файл.


Формат ODC - это большое препятствие для распространения программ языка КП, как вы могли наблюдать сами.

Автор:  ilovb [ Суббота, 17 Май, 2014 19:38 ]
Заголовок сообщения:  Re: Component Pascal на github

pchaigno писал(а):
At the moment, linguist ignores binary files.
I don't think it would be a good idea to change this because:

In any case, binary files won't be highlighted and it's the main purpose of linguist (detect language for Pygments to highlight).
The statistics are currently computed by counting the number of lines of each file of each language. It wouldn't make any sense for binary files.

https://github.com/github/linguist/pull/1198

Автор:  ilovb [ Суббота, 17 Май, 2014 21:25 ]
Заголовок сообщения:  Re: Component Pascal на github

Если ни у кого нет замечаний/предложений, то оставляю пулреквест как есть.

Когда протестим лексер, сделаем еще один пулреквест (если этот уже вольют к тому времени)

Автор:  Димыч [ Воскресенье, 18 Май, 2014 09:43 ]
Заголовок сообщения:  Re: Component Pascal на github

Глядя на разворачивающиеся события в отношении лексера, а также в свете грядущей работы над ББ 2.0, хочу расширить идею сохранения исходников в plaintext.

Уже сейчас можно сохранять исходник в виде текста. Однако, при этом теряется информация о форматировании текста и вложенные вьюшки.

Для решения этих проблем можно изменить формат хранения, изменив его с бинарного на текстовый, но с сохранением семантики.

Документы сохраняются через Documents.ExportDocument. Его можно попробовать переписать и, в случае, если это текстовый документ, сохранять текст как текст и форматирование, приведенное к бинарному виду. Любую бинарную информацию записывать в каком-нибудь из форматов для хранения бинарных данных в тексте, вроде BASE64, Ascii85 или basE91.

Можно использовать высокоуровневый текстовый формат для хранения.

Получится что-то вроде такого:

Код:
1 ODC
2 Store: DJ+*.@<*K0@<6L(Df-\0Ec5e;DffZ(EZee.Bl.9pF"AGXBPCsi+DGm>@3BB/F*&OCAfu2/AKY
3 MODULE AggTest;
(* Далее идет текст модуля *)

...

(* следующая строка — вложенная вьюшка, например, командер. *)
4 Store: (DIb:@FD,*)+C]U=@3BN#EcYf8ATD3s@q?d$AftVqCh[NqF<G:8+EV:.+Cf>-FD5W8ARlolDIa
END AggTest.
5 9jqo^BlbD-BleB1DJ+*+F(f,q/0JhKF<GL>Cj@.4Gp$d7F!,L7@<6@)/0JDEF<G%<+EV:2F!,


Нумерация не входит в сам файл и представлена лишь для целей объяснения.

Строка 1 - тег файла, сейчас эту роль выполняет docTag (CDOo).
Затем идет 2 - информация из Store, непредставимая в текстовом виде.
3 - собственно модуль
4 - вложенная Store, в обязательном порядке начинается и заканчивается переводом каретки; это позволит проще обрабатывать вложенные Store.
5 - информация о форматировании, или, обобщая, продолжается Store.

Это позволит сохранить семантику работы фреймворка и, что более важно, позволит инструментам вроде git diff корректно работать с файлами как с текстом.

Ну а лексер можно научить игнорировать текст от Store: до конца строки, как комментарий или вообще скрывать.

Автор:  ilovb [ Воскресенье, 18 Май, 2014 14:09 ]
Заголовок сообщения:  Re: Component Pascal на github

В целях отслеживания версий, дифа и мерджа мне кажется более правильным использовать "деревянный" формат типа XML или Json.
Для них уже есть и алгоритмы и даже готовые инструменты.

Нет нужды делать сам odc текстовым. Можно сделать просто конвертер.

И вообще, имхо, документацию можно и нужно рассматривать как нечто, требующее сборки и тестирования. Т.е. можно разделить на "исходник" и "рабочий формат".
Вот исходник в XML к примеру. А рабочий формат odc.

Автор:  Роман М. [ Воскресенье, 18 Май, 2014 15:13 ]
Заголовок сообщения:  Re: Component Pascal на github

ilovb писал(а):
В целях отслеживания версий, дифа и мерджа мне кажется более правильным использовать "деревянный" формат типа XML или Json.
Для них уже есть и алгоритмы и даже готовые инструменты.

Нет нужды делать сам odc текстовым. Можно сделать просто конвертер.

И вообще, имхо, документацию можно и нужно рассматривать как нечто, требующее сборки и тестирования. Т.е. можно разделить на "исходник" и "рабочий формат".
Вот исходник в XML к примеру. А рабочий формат odc.

Это уже обсуждалось в темах:
  1. Особенности версионности с составными документами
  2. BlackBox Merge tool
  3. Про diff для .odc
  4. Системы контроля версий

Автор:  Роман М. [ Воскресенье, 18 Май, 2014 15:38 ]
Заголовок сообщения:  Re: Component Pascal на github

Писал уже ранее на тему версионности в сообщении #p81469

Сохранять документ можно в том виде, котором средства VCS могут с ним работать, то есть в текстовый формат. Этот текстовый формат может включать исходник в кодировке UTF-8 и мета-информацию в виде придатка в конце файла после специального маркера-спец-символа, закодированную StdCoder/AsciiCoder или подобные им. Мета-информация может содержать модели отображения (view), форматирование документа, fold, штамп времени и прочее.
При этом, предполагается, что решать конфликты версий будет пользователь при помощи Блэкбокса. Увы, такого инструмента пока нет.

Автор:  ilovb [ Воскресенье, 18 Май, 2014 16:30 ]
Заголовок сообщения:  Re: Component Pascal на github

Я там не очень понятно высказался. Я имел в виду только документацию. Что касается замены odc, то я с тобой полностью солидарен , Роман (на данный момент).

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

Автор:  Роман М. [ Воскресенье, 18 Май, 2014 16:40 ]
Заголовок сообщения:  Re: Component Pascal на github

Ещё важное, на мой взгляд, замечание:

Представьте себе что наши потомки через 20 лет не смогут распознать содержимое документов. Поэтому важно написать документ наподобие RFC (желательно на английском), по которому можно было бы создать ПО для чтения документов. Это ещё один довод в пользу простоты и открытости формата документа.

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/