|
|
|
Void |
|
||||||||||||||||
λcat.lolcat Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 1 Всего: 173 |
Начальство дало добро, ну а мы рады стараться
Правила подсветки: Язык чувствителен к регистру. Ключевые слова (#0000FF):
Некоторые встроенные типы и функции (#800000):
Стандартные модули (#6a5acd):
Комментарии (#008080): Между (* и *), могут быть вложенными:
(Я смотрю, в подсветке Delphi вложенные комментарии не обрабатываются. Если это сложно, то и не надо.) Символьные литералы (#008000): Регулярное выражение:
Пример: 'a', ' ', '\n', '\022', '\xAC' - корректно 'ab', '\z', '\17', '\xGG' - некорректно Важно в точности следовать этим правилам, потому что апостроф ' может входить в состав идентификатора, в т.ч. и в начале слова. Строковые литералы (#008000):
Численные константы (#00008b): целые:
вещественные:
Т.е. правила почти те же самые, что и в Си, только внутри чисел символы подчеркивания _ игнорируются; восьмеричные и двоичные константы начинаются с 0o и 0b соответственно; у целых чисел может быть один из суффиксов n, l, L. Жду замечаний и предложений. Это сообщение отредактировал(а) Void - 26.1.2006, 15:14 -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
||||||||||||||||
|
|||||||||||||||||
sergejzr |
|
|||
Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
Насчёт регов не понял, сорри. Остальное почти вставил.
И ещё.. Можешь кусок кода дать для тестов? Добавлено @ 21:13 Пока так работает: http://poligon.vingrad.ru/index.php?showto...mp;#entry613424 |
|||
|
||||
Void |
|
|||
λcat.lolcat Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 1 Всего: 173 |
Это реги, которым удовлетворяют соответствующие лексемы. Я предполагал, что движок подсветки может использовать их напрямую. Ну и вообще, легче написать регэксп, чем пытаться на словах объяснить Без проблем. Вот код, в аттаче то, как он должен выглядеть:
Аттач переименовать в ZIP. Это сообщение отредактировал(а) Void - 26.1.2006, 14:58 Присоединённый файл ( Кол-во скачиваний: 12 ) ocaml.test 1,28 Kb -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
sergejzr |
|
|||
Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
Аттач не открывается
|
|||
|
||||
Void |
|
|||
λcat.lolcat Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 1 Всего: 173 |
P.S. Название языка OCaml Objective Caml; Caml — от Categorial Abstract Machine Language, а последние две буквы по совместительству означают принадлежность к семейству ML
Добавлено @ 22:10 Сейчас перезагружу -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
sergejzr |
|
|||
Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
Гы! ОК переименую попозже Я вообщето это знаю(как то играл с ним), но каждый раз путаю
|
|||
|
||||
Void |
|
|||
λcat.lolcat Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 1 Всего: 173 |
Коротко основные баги, в порядке убывания важности:
Подумал, и решил, что, несмотря на то, что в подсветке большинства языков на форуме в комментариях используется italic, обычный текст читается лучше. Пока вроде все.
Это сообщение отредактировал(а) Void - 26.1.2006, 15:13 -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
sergejzr |
|
|||
Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
Насчёт символьных - так и не въехал. Можешь словами расписать?
И ещё. При подсветке мы исходим из того, что код БЕЗ синтактических ошибок. То есть если код с ошибками подсвечивается неправильно, то это ОК. Наша задача - всего лишь чтобы правильный код правильно подсвечивался. поэтому я не понимаю определения "корректно" |
|||
|
||||
Void |
|
||||
λcat.lolcat Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 1 Всего: 173 |
Попытаюсь. Правило довольно мудреное. Итак, символьные константы заключаются в одинарные кавычки. Но они должны содержать только один символ — обыкновенный или escape-последовательность. Поэтому, встретив апостроф, мы не имеем права подсвечивать все подряд до следующего апострофа, как символ. В зависимости от того, является ли следующий за ним символ escape-последовательностью, мы должны проверить, является ли символ на позиции +2 ('a'), +3 ('\n'), +5 ('\032' или '\xEF') апострофом. Если нет — это уже НЕ символ. Но это еще не все. Дело в том, что вот это:
— валидные идентификаторы. А вот это:
уже рассматривается как последовательность символа и идентификатора, т.е. синтаксическая ошибка. Т.о. апостроф наряду с буквами, цифрами и подчеркиванем может быть частью идентификатора. При последовательном лексическом разборе все это разруливается на раз (собственно, я при написании регов основывался на исходниках лексера компилятора OCaml ). Как быть в случае с нашим движком подсветки — не знаю. В принципе, будет достаточно, чтобы принималась во внимание только первая часть правила: что символьные константы должны быть ровно в один символ. Идентификаторы с апострофами посередине я в реальном коде не видел ни разу. А вот в начале или в конце — постоянно. Подводя итог, для наших целей будет достаточно, чтобы текст между апострофами подсвечивался как символ тогда и только тогда:
Я это понимаю Просто в некоторых случаях может получится так, что мы неправильно подсветим синтаксически правильный код. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
||||
|
|||||
Cr@$h |
|
|||
Исследователь Профиль Группа: Участник Клуба Сообщений: 1693 Регистрация: 3.4.2005 Где: Санкт-Петербург, Россия Репутация: нет Всего: 41 |
Думаю, соответствующие участники уже знают про подсветку кода OCaml. Для вставки кодов OCaml используйте подсветку синтаксиса из выплывающего списка Код в форме ответа.
Тему открепляю. О подсветке сообщено в шапке форума. Void, скажи, если реализация ещё не отлажена. Тему можно будет опять зафиксировать. |
|||
|
||||
Void |
|
||||
λcat.lolcat Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 1 Всего: 173 |
Говорю: она не работает. Т.е., если я правильно понимаю, OCaml добавлен в список кодов на форме, но сама реализация подсветки на форум не загружена.
-------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
||||
|
|||||
Cr@$h |
|
|||
Исследователь Профиль Группа: Участник Клуба Сообщений: 1693 Регистрация: 3.4.2005 Где: Санкт-Петербург, Россия Репутация: нет Всего: 41 |
Хорошо, тогда фиксирую её обратно
Быстрое же у тебя время отклика получилось |
|||
|
||||
Void |
|
|||
λcat.lolcat Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 1 Всего: 173 |
С одной стороны, не сказать, что это так критично сейчас (последняя тема с кодом на *ML была много месяцев назад). С другой, надо бы админам намекнуть Так как теперь даже Полигона нет, чтобы проверить.
-------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
Cr@$h |
|
|||
Исследователь Профиль Группа: Участник Клуба Сообщений: 1693 Регистрация: 3.4.2005 Где: Санкт-Петербург, Россия Репутация: нет Всего: 41 |
Да. Можешь напрямую Сергея попросить посмотреть. С Fortran там тоже не реализовано...
|
|||
|
||||
sergejzr |
|
|||
Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
Блин. всё руки не доходят до оставшихся подсветок Любой, кто знает яваскрипт может помочь...
|
|||
|
||||
Правила форума «Функциональные языки: общие вопросы» | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Функциональные языки: общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |