[16:37:59] <TRUE> <valexey> Один и тот же набор байт может быть проинтерпретирован по разному, в зависимости от того, как мы будем его интерпретировать. Это может быть набор целых чисел, набор чисел с плавающей точкой или же набор символов. И там и сям у нас форматы, или кодировки.
[16:38:06] <TRUE> И там и сям у нас форматы.
[16:38:09] <TRUE> Но не кодировки
[16:38:39] <TRUE> Кодировка - это соответствие символа скан-коду клавиши
[16:40:53] <TRUE> Что же касается лексического анализатора, то могу посоветовать сделать как у Свердлова: перед лексическим анализатором поставить драйвер текста.
[16:42:13] <TRUE> Он будет отдавать текст из файла, из окна, по сети... Причём, не важно, какая кодировка там изначально. Он преобразует всё в кодировку, ожидаемую лексером.
[16:47:50] <valexey> TRUE: не выйдет
[16:47:56] <valexey> лексер ожидает ASCII :-)
[16:48:11] <valexey> как ты из юникода взаимнооднозначно в ASCII преобразуешь? :-)
[16:48:31] <valexey> И да, кодировки сейчас не имеют и не имели отношения к сканкодам
[17:10:44] <TRUE> Взаимнооднозначно никак. Вопросиками всё непонятное забить.
[17:11:08] <valexey> и смысл в таком компиляторе?
[17:11:24] <TRUE> как обыно - компилировать
[17:11:34] <valexey> ога. а на выходе получить полную хрень.
[17:11:44] <valexey> вместо корректного кода
[17:11:47] <TRUE> нет. Хень только в тексте будет.
[17:11:51] <TRUE> в строках
[17:12:14] <TRUE> <valexey> И да, кодировки сейчас не имеют и не имели отношения к сканкодам
[17:12:31] <TRUE> charset - это разве не привязка символов к сканкодам?
[17:13:05] <valexey> не обязательно
[17:13:15] <valexey> это может быть привязка например к номеру глифа в шрифте
[17:13:34] <valexey> или вообще абстрактные циферьки прописанные в стандарте (см юникод)
[17:13:42] <valexey> дык хрень в тексте == хрень в программе
[17:14:11] <valexey> вот программа у тебя сравнивает входной поток с неким литералом (то есть банально парсингом занимается). и работать она не будет
[17:17:52] <valexey> ну вот представь себе - набираешь ты текст тремя кнопками (влево-вправо/enter), вопрос - как тут связаны сканкоды этих кнопок с кодировкой текста? :-)
[17:19:42] <TRUE> <valexey> дык хрень в тексте == хрень в программе \n нет. BEGIN всегда будет однозначным. То же касается и остальных управляющих символов. Они не будут забиваться вопросиками. Например, есть ещё идентификаторы, которые ты написал не латиницей. Скорее всего, это будут русские символы. Восьмибитная кодировка их покроет. Но маловероятно, что ты захочешь написать программу на английском, русском и арабском. Это ж равносильно Вавилонской башне. Написание одного файла на более, чем двух языках - вещь весьма гипотетическая.
[17:19:49] <TRUE> <valexey> ну вот представь себе - набираешь ты текст тремя кнопками (влево-вправо/enter), вопрос - как тут связаны сканкоды этих кнопок с кодировкой текста?
[17:20:13] <TRUE> так я и говорю, что нынче кодировки - это пережиток прошлого
[17:20:59] <TRUE> они не используются по назначению, поскольку это назначение сильно ограничивает в работе на современных компьютерах
[17:21:30] <TRUE> следовательно, от этих самых кодировок нужно избавиться и использовать что-нибудь новое
[17:21:59] <TRUE> как раз utf8 - это очень близко к тому, что следовало бы сделать
[17:22:06] <TRUE> или другой юникод
[17:22:51] <TRUE> кстати...
[17:22:53] <TRUE> <valexey> а посылочка то уже в Англии
[17:22:56] <TRUE> рано радуешься
[17:23:09] <TRUE> скоро они передадут эстафету почте россии
[17:23:10] <valexey> TRUE: использовать одновременно английский русский и греческий - абсолютно нормально
[17:23:17] <valexey> TRUE: она уже в Москве :-)
[17:23:39] <valexey> И нет, это курьерская доставка (fedex) так что почта россии к моей посылке не прикоснется :-)
[17:24:24] <valexey> например вместо pi иметь идентификатор π
[17:24:47] <valexey> ну и опять же - строковые литералы влияют на корректность программы. сильно влияют.
[17:25:33] <TRUE> использование английских, русскиих и греческих символов - это нормально в строковых литералах, а не в коде программы. А значит, их возможно забить вопросами и не бояться, что компиляция накроется.
[17:25:38] <TRUE> однако, неприятно, да
[17:27:00] <valexey> еще раз: вот пишешь ты на этом самом нашем языке с таким компилятором какой-нибудь компилятор Глагола (ключевые слова кириллицей). И все. У тебя в программе вместо строковых литералов (которые используются для вычленения ключевых слов) сплошные знаки вопроса. Твой компилятор не работает.
[17:27:43] <TRUE> Восьмибитная кодировка покроет два европейских языка. Остальное будет забито вопросиками.
[17:27:45] <valexey> TRUE: да нет, в коде программы использоват π вполне нормально. Вон, в Аде используется (там константа π именно такой идентификатор и имеет)
[17:28:54] <valexey> короче, нужно не костыли втыкать в виде драйверов невнятных, а просто лексер с поддержкой utf-8 написать. хотя это и не приятно и не красиво (в коде) и сложно. но нужно.
[17:29:28] <TRUE> дайвер - это не кастыль, а ещё один уровень абстракции. Костыль предлагаешь ты.
[17:30:15] <valexey> в таком виде в котором ты описал (8ми битные кодировки) это безусловно костыль
[17:30:41] <valexey> если у нас не 8ми битные кодировки, то преимущества драйвера нулевые - лишняя прослойка при том что лексер писать жутко геморройно
[17:30:59] <TRUE> преобразование кодировок - это, в общем-то, побочная функция драйвера, которую я предложил. А сам он предназначен для отвязывания компилятора от конкретного типа источика компилируемых текстов.
[17:31:42] <TRUE> ты предложил ASCII, я и описал для него : )
[17:32:16] <valexey> а у меня и так отвязан - stdin и все :-)
[17:32:19] <TRUE> Стандартно лексический анализатор может принимать утф какой-нибудь 16
[17:32:34] <valexey> оно хошь из файла, хош с командной строки, хош из сети примет
[17:32:38] <TRUE> а драйвер всё под него подгонять будет
[17:33:00] <TRUE> ... принимает под линуксом, ты хотел сказать?
[17:33:03] <valexey> брр. utf-16 это вообще не рыба ни мясо. длина символа переменная, при этом минимум два байта.
[17:33:13] <TRUE> ну 32
[17:33:21] <valexey> TRUE: да везде принимает.
[17:33:32] <TRUE> винда? из сети?
[17:33:39] <valexey> а какие проблемы?
[17:34:28] <valexey> нужна всего лишь программа которая перенаправит из tcp в stdin :-) в твоих терминах это будет "драйвер", но есть нюанс - наличие этого драйвера не придется пихать в архитектуру компилятора.
[17:34:30] <TRUE> да вот, не представляю себе, как stdin в винде к сети прикрутить. Или содержимому окна...
[17:34:56] <valexey> под utf-32, кстати, еще сложнее написать лексер чем под utf8
[17:34:59] <valexey> ибо мультибайт
[17:35:14] <TRUE> А если в оси нет stdin, то этим компилятором сложно будет что-нибудь скомпилить...
[17:36:05] <valexey> назови такую ось
[17:36:15] <valexey> (алсо по стандарту Си stdin обязан быть)
[17:37:42] <TRUE> си : )
[17:37:58] <valexey> ?
[17:38:08] <TRUE> кстати, про кодировки.
[17:38:46] <valexey> ?
[17:39:00] <TRUE> в старых версиях (не уникод) требовалось переключение кодовых страниц. Вот к этой вещи у меня были претензии.
[17:39:31] <valexey> в старых версиях чего?
[17:39:40] <TRUE> старых версиях кодировок
[17:39:50] <TRUE> 866, 1251
[17:40:13] <valexey> ну, 8ми битные же. ну и переключение кодовых страниц нужно было только если тебе нужен символ которого нет в текущей странице :-)
[17:40:31] <valexey> у большенства пользователей компьютера такой необходимости не возникало :-D
[18:20:45] <Зорин Сергей> в чем проблемы с utf-32?

[18:25:36] <valexey> в том, что lex оперирует байтиками :-)
[18:25:41] <valexey> а не uint32
[18:39:54] <Зорин Сергей> так это проблема кухонногго комбайна, а не комбайнера
[18:41:08] <Зорин Сергей> пиши тогда ручками, для оберона это ж просто
[18:56:21] <valexey> руками не камильфо :-)
[18:59:54] <valexey> все. я подсел на лямбду в ObjC
[19:04:37] <valexey> http://habrahabr.ru/post/149770/
[19:28:10] <Зорин Сергей> насколько актуально в оберонах наличие div mod  вместо, скажем /(\) и %
[19:28:53] <valexey> в смысле?
[19:29:05] <valexey> настолько же насколько это актуально скажем в Haskell'e :-)
[19:29:23] <valexey> это же всего лишь синтаксис.
[19:31:22] <Зорин Сергей> ненене, я имею ввиду почему Вирт вместо символов сокращения использовал
[19:32:12] <valexey> потому что зачем использовать спецсимволы (тем более что они не везде доступны), если можно обойтись сокращением?
[19:32:21] <valexey> да и сокращение лучше само себя описывает чем символы
[19:32:54] <valexey> Вирт использовал там символы, где они были общеприняты в математике.
[19:33:07] <valexey> % - это таки процент, и к делению никакого отношения не имеет
[19:33:12] <valexey> или к остатку от деления
[19:34:09] <Зорин Сергей> то, что оисывают понятно, я то привык, сишники приходят на работу, психуют, их вообще от оберонов тошнит приходится под страхом расстрела вводить в русло
[19:34:53] <valexey> + - * / DIV MOD -- так что деление то есть :-)
[19:35:30] <valexey> Зорин Сергей: а вы это хто? в смысле что за предприятие и что за оберон используете, и для чего?
[19:36:39] <Зорин Сергей> та кемет я )

[19:37:15] <valexey> ага! я догадывался!
[19:37:26] <valexey> А еще раз опиши где это все применяется
[19:37:42] <Зорин Сергей> эээ, так я и не скрывался, в профиле же написано
[19:38:17] <Зорин Сергей> применяется что
[19:38:46] <valexey> обероны (насколько я помню у вас свой какой-то компилер). и за что вы туда сишников ссылаете :-)
[19:39:57] <valexey> (кстати, меня всегда удивляли люди которых воротит с сишного или обероновского синтаксиса. они же почти идентичны! и вообще синтаксис второстепенен тащемто).
[19:42:28] <Зорин Сергей> а ну да, у нас паскаль и сириус, но к оберонам в чистом виде это слабо относится, сириус что-то среднее между модулой-3 и объжектпаскаль
[19:42:47] <valexey> Надо бы к приезду посылочки хоть лексер и часть парсера допилить.
[19:43:20] <Зорин Сергей> ну я лексы не люблю, мне приятнее самому писать
[19:43:43] <valexey> а я вот решил попробовать. посмотрим что выйдет.
[19:44:04] <Зорин Сергей> а кодогенератор
[19:44:11] <valexey> ибо чую что иначе сейчас начну изобретать либу которая мне все это автоматизирует :-)
[19:44:23] <valexey> а что кодогенератор?
[19:45:21] <Зорин Сергей> так как без кодогенератора, гсс юзать чтоли или под ллвм генерить?
[19:46:00] <valexey> ну, для посылочки ручками. для всяких жирных - llvm конечно. для иного - тоже ручками (jvm там)
[19:46:59] <Зорин Сергей> вот  и говорю, что кодогенератор писать придется
[19:48:15] <Зорин Сергей> у нас вменяемые только под DEC, остальные на уровне базовых от вирта/етх
[19:48:34] <valexey> ну это не страшно. в instruction set там всего 27 инструкций
[19:49:25] <valexey> УМНОЖЕНИЯ НЕТ!
[19:49:30] <valexey> и деления тоже
[19:49:33] <valexey> вот это геморрой
[19:49:52] <valexey> не говоря про плавающую точку
[19:50:06] <Зорин Сергей> а зачем тебе такая железяка
[19:50:55] <valexey> for fun. впрочем, у нас на этой железке штука делается. так что может знания и пригодятся
[19:51:05] <valexey> хотя я с ней не вожусь, я верхний уровень ваяю
[19:51:31] <valexey> но когда в компе 256 байт оперативки - это же прекрасно! это ж все видно на одном экране
[19:51:41] <valexey> и 27 инструкций. и плоская память
[19:51:54] <valexey> без страниц там всяких мерзких
[19:52:12] <Зорин Сергей> а флеша сколько
[19:53:29] <valexey> 16 Кб
[19:53:44] <Зорин Сергей> у нас железяки другие, в основном заказные, ну еще что-то на авр ваяем
[19:54:00] <Зорин Сергей> ну с 16кб жить еще можно
[19:54:06] <valexey> угу
[19:54:21] <valexey> но есть камень попроще - на то ли 4 то ли 8 Кб флеша
[19:59:00] <Зорин Сергей> ну хз почему часто сишники терпеть не могут паскаль и наоборот, священные войны, бессмывсленные и беспощадные, но сейчас все больше приходит молодежи, которая о модуле/паскале только краем уха слышала, а у нас это 90% разработок

[20:01:58] <valexey> это да. вообще странно мне слышать эти священные войны, ибо Модула-2 от Си отличается лишь строгой типизацией (да и то...) да немного синтаксисом
[20:02:07] <valexey> семантика у них вообще идентичная по сути
[20:02:39] <valexey> скажем так - с++ отличается от си больше, чем паскаль от си :-)
[20:04:53] <Зорин Сергей> в принципе, так то понятно, что у людей раное восприятие, и я реально встречаю людей, которые не могут сориентироваться в другом языке, ну не воспринимают они такие конструкции, видимо от типа мышления зависит, непонятно к чему войны
[20:05:41] <valexey> вероятно от опыта зависит :-) если человек знает два достаточно разных языка (скажем Си и Haskell), то проблем с Обероном у него не возникнет.
[20:06:30] <valexey> + у народа явно бывает синдром утенка, когда самый the best язык тот который у них был первый (первый добровольно изучаемый)
[20:06:56] <valexey> очень часто паскаль не добровольно изучаемый язык, а насаждаемый жестоко и беспощадно. отсюда рвотные рефлексы.
[20:08:39] <valexey> это примерно как нелюбовь к манной каше (которой обкормили в детсаде, да еще с комками), рыбьему жиру и так далее.