Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подсветка синтаксиса Nemerle 
:(
    Опции темы
Любитель
Дата 10.2.2007, 01:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 11
Всего: 92



В этой теме появилось моё скромное желание подсветки Nemerle. По совету Void размещаю здесь описание синтаксиса (за основу взята подсветка на nemerle.org, немного, правда, с моими изменениями).

Язык регистрозависимый.

1. Комментарии
Цвет: #008080
Курсив.

Окончание строки после двух слешей, либо код между /* и */ (аналогично многим C-подобным языкам).

2. Препроцессорные директивы
Цвет: #FF8000
Полужирный

Строка, начинающаяся (несчитая пробельные символы) с одного из следующих слов - директива препроцессора.
Код

#define 
#undef 
#if 
#elif 
#else 
#endif 
#line 
#error 
#warning 
#region 
#endregion


3. Строки
Цвет: #808080

До конца строки все прочие лексические элементы не рассматриваются.

В Немерле два типа строк.

Простые строки заключаются в кавычки ("). Не могут включать разрыв строки. Могут включать внутри парные кавычки (аналогично строкам, скажем, в Паскале). Могут также содержать эскейп-последовательности, начинающиеся с бекслеша. Для подсветки важно лишь \" - при этом строка не заканчивается.

Verbatim-строки. Начинаются с @, сами заключаются в кавычки. Могут быть многостроковыми (всмысле включать разрыв). Эскейп-последовательностей нет, но возможны парные кавычки (не завершающие строку).

Также к строкам (по оформлению) отнесём символы. Символьный литерал - один символ в апострофах или эксейп-последовательность в апострофах.

В качестве эскейп-последовательности может быть:
  • \ ' "
  • 0X
    X - до трёх восьмеричных цифр.
  • xX
    X - две шестнадциричные цифры.
  • uX
    X - 4 16-ричные цифры.
  • cX
    X - ASCII символ.
  • a b r v f n e
Эскейп-последовательности желательно выделять полужирным. Достаточно удобно - читабельность возрастает (замечено мною на nemerle.org). Следить за ними в любом случае придётся, чтобы отличить символьные литералы от идентификаторов. Я смотрю, тот же вопрос и в OCaml. Идентификаторы могут состоять из букв (латинских), цифр, подчёркиваний и апострофов, главное, чтобы начинались не с цифры. Если последовательность является символьным литералом,  а слева и справа от апострофов символы, которые не могут входить в идентификаторто - это не имя. Контрольные примеры:
Код

'a - имя
'a' - символьный литерал
'aa' - имя
a'a' - имя
'a'a - имя


При этом между апострофмаи в симольном литерале может быть несколько символов, если это эксейп-последовательность. Ещё одно важное замчание насчёт имён - вначале имени опционально может быть добавлен символ @. Почему это важно? Потому что это позволяет использовать ключевые слова в качестве имён. То есть @true - имя, а true - ключевое слово.

4. Числа
Цвет: #FF0000

В целом всё классически, но внутри числа может быть подчёркивание.
Цитата(nemerle.org @  переведено мною)

1_000_000 // подчёркивание може использоваться для читабельности
1_42_00     // ... или нечитабельности


0x, 0b, 0o - допустимые префиксы для целых чисел (системы счисления). В качестве суффиксов для целых: u, b, ub, bu, L, UL, LU. Для вещественных: f, d, m.

5. Ключевые слова
Цвет: #0600FF

Код

array
as
basecatch
checked
class
def
default
delegate
do
else
enum
event
explicit
finally
for
foreach
fun
if
in
internal
interface
is
lock
macro
match
module
mutable
namespace
new
out
override
params
private
protected
public
ref
sealed
static
struct
syntax
this
throw
try
typeof
unchecked
unless
using
variant
virtual
when
where
while


6. Литералы
Цвет: #008000.

true, false, null.

7. Встроенные типы
Цвет: #FF0000

Код

bool
byte
char
decimal
float
int
long
object
sbyte
short
string
uint
ulong
ushort


8. Скобки метакода
<[ и ]> - просто полужирный.

Также неплохо бы с ключевых слов, литералов и встроенных типов иметь ссылки на вики-страницы (как для большинства языков, если не всех). То есть раздел соответствующей в вики надо (если не ошибаюсь две статьи Exceptionа по def и fun там есть, но Nemerle на главной странице не видать). Кроме того неплохо бы иметь ссылки со стандартных пространств имён .Net вообще и Nemerle в частности. Скажем, с System.IO или Nemerle.IO. Впрочем в шарпе такого вроде нет - можно и обойтись (подсветка в любом случае не нужна).

Напоследок:
Цитата(Void @  8.2.2007,  23:44 Найти цитируемый пост)
Если на Винграде подсветка Немерле появится раньше, чем на RSDN, это будет весьма неожиданный поворот, так что дерзай

Ну что, обгоним и перегоним?  smile  smile 

Это сообщение отредактировал(а) Любитель - 10.2.2007, 19:56


--------------------
PM MAIL ICQ Skype   Вверх
Любитель
Дата 12.2.2007, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 11
Всего: 92



Cr@$h, просьба - закрепить тему. Надеюсь, рано или поздно смысл в ней появится  smile 


--------------------
PM MAIL ICQ Skype   Вверх
sergejzr
Дата 12.2.2007, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: нет
Всего: 360



Любитель, спасибо! В данный момент я работаю над инструментом для облегчения создания собственных подсветок. Но сколько продлится разработка пока сказать не могу..


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Любитель
Дата 12.2.2007, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 11
Всего: 92



 smile Буду ждать. Если мог бы помочь - с радостью, но, наврено, я тут вряд ли что-то смогу сделать  smile 


--------------------
PM MAIL ICQ Skype   Вверх
sergejzr
Дата 12.2.2007, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: нет
Всего: 360



На данном этапе наверное нет, но в будущем был бы рад партнёру для разработки нашей подсветки. Для этого надо знать яваскрипт. Но синтаксис его весьма похож на Java и на Си.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Любитель
Дата 12.2.2007, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 11
Всего: 92



Ну, одно дело в какой-то мере знать, а другое - иметь нормальный опыт разработки.
На уровне побаловаться - я могу, а вот серьёзно программировать - пожалуй, нет. smile 


--------------------
PM MAIL ICQ Skype   Вверх
Cr@$h
Дата 17.1.2009, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
***


Профиль
Группа: Участник Клуба
Сообщений: 1693
Регистрация: 3.4.2005
Где: Санкт-Петербург, Россия

Репутация: 1
Всего: 41




M
Cr@$h
Переместил в .Net

Цитата(sergejzr @  12.2.2007,  15:01 Найти цитируемый пост)
В данный момент я работаю над инструментом для облегчения создания собственных подсветок. Но сколько продлится разработка пока сказать не могу.. 

Тоже жду. Для того же Fortran давно актуально, да там и не тривиальная подсветка..
PM MAIL ICQ   Вверх
sergejzr
Дата 17.1.2009, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: нет
Всего: 360



Давненько дело было. На данный момент далънейшая разработка не предполагается :( Но конечно если кто захочет это дело дальше продвигать, буду помогать smile


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Void
Дата 17.1.2009, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 25
Всего: 173



sergejzr, выложи необфусцированные исходники core.js, всё дело будет.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0643 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.