| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP Оформление кодов

LISP Оформление кодов

Ответ
Поиск в этой теме
Непрочитано 11.01.2011, 20:08 #1
LISP Оформление кодов
VVA
 
Инженер LISP
 
Минск
Регистрация: 11.05.2005
Сообщений: 6,991

На сайте Lee Mac опубликован LISP Styler для оформления кодов перед публикацией на форумах или html страницах.
Пример использования команды lsp2bbc c цветовой схемой, предложенной автором (код для примера взят отсюда )
Код:
[Выделить все]
(defun str->list (s)
                 ;|
***************************************************************************************
*
* Программа разделяет строку на список текстовых и цифровых составляющих.
* Запятая между цифрами, зменяется на точечный разделитель дробной части.
* 
**************************************************************************************
*
* Написал Елпанов Евгений       (ElpanovEvgeniy)
*
* дата создания (13/10/2007 a 11:42)
* написано во время конкурса на форуме:
* http://www.cadxp.com/XForum+viewthread-fid-101-tid-16943-page-2.html
***************************************************************************************
* Пример использования и результатов работы:
* (str->list "point.25.4cm.")           => ("point." 25.4 "cm.")
* (str->list "point.25,4cm.")           => ("point." 25.4 "cm.")
* (str->list "point.3/8cm.")            => ("point." 0.375 "cm.")
* (str->list "qvf12qsdf125 5sf 56dfv2") => ("qvf" 12 "qsdf" 125 " " 5 "sf " 56 "dfv" 2)
***************************************************************************************
 |;
 (defun str->list1 (a b f)
  (cond
   ((null b)
    (list (if f
           (cond ((vl-position 46 a) (atof (vl-list->string (reverse a))))
                 ((vl-position 47 a) (distof (vl-list->string (reverse a))))
                 ((vl-position 44 a) (atof (vl-list->string (subst 46 44 (reverse a)))))
                 (t (atoi (vl-list->string (reverse a))))
           )
           (vl-list->string (reverse a))
          )
    )
   )
   (f
    (if (or (= (car b) 44) (< 45 (car b) 58))
     (str->list1 (cons (car b) a) (cdr b) f)
     (cons (cond ((vl-position 46 a) (atof (vl-list->string (reverse a))))
                 ((vl-position 47 a) (distof (vl-list->string (reverse a))))
                 ((vl-position 44 a) (atof (vl-list->string (subst 46 44 (reverse a)))))
                 (t (atoi (vl-list->string (reverse a))))
           )
           (str->list1 (list (car b)) (cdr b) nil)
     )
    )
   )
   (t
    (if (< 47 (car b) 58)
     (cons (vl-list->string (reverse a)) (str->list1 (list (car b)) (cdr b) t))
     (str->list1 (cons (car b) a) (cdr b) nil)
    )
   )
  )
 )
 (setq s (vl-string->list s))
 (str->list1 (list (car s))
             (cdr s)
             (if (or (= (car s) 44) (< 45 (car s) 58))
              t
             )
 )
)

Вложения
Тип файла: lsp lisp styler.lsp (19.4 Кб, 94 просмотров)

__________________
Как использовать код на Лиспе читаем здесь
Просмотров: 15746
 
Непрочитано 11.01.2011, 20:20
#2
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Еще один вариант...
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/
Елпанов Евгений вне форума  
 
Непрочитано 11.01.2011, 20:43
#3
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Очень любопытная идея, может, кому и понадобится, но, по-моему, любой программист любой код тут же вставляет во VLIDE. Какой от этого смысл, интересно? Разве только на форуме появится некий движок, в котором можно Ctrl+Alt+E, а затем, например, Шаг с заходом...
skkkk вне форума  
 
Непрочитано 11.01.2011, 20:46
#4
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,835


Не любой программист и не любой код. А вот читать подсвеченный код все же проще.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 11.01.2011, 21:03
#5
Disney

Геодезист
 
Регистрация: 12.03.2009
Сибирь (где медведи по улицам ходят)
Сообщений: 860
Отправить сообщение для Disney с помощью Skype™


Попробовал LISP Styler, почему-то переменную ss покрасил как функцию в синий...
Код:
[Выделить все]
(setq	     ss	      (ssget ('((0 . "*TEXT,DIMENSION"))
		      )
)
Цитата:
Сообщение от Елпанов Евгений Посмотреть сообщение
Еще один вариант...
правда, только в html, на форум не вставишь



Цитата:
Сообщение от skkkk Посмотреть сообщение
Разве только на форуме появится некий движок
Да, было-бы здорово, чтоб по-молчанию, форум сам коды раскрашивал...
__________________
Почему все вдруг становятся умными, когда уже не надо?
Disney вне форума  
 
Автор темы   Непрочитано 11.01.2011, 22:00
#6
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,991
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от skkkk Посмотреть сообщение
любой программист любой код тут же вставляет во VLIDE. Какой от этого смысл,
Попробуй скопировать код из #1 и вставить в VLIDE. Он копируется просто как текст без BB кодов
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 11.01.2011, 22:30
#7
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Конечно, подсветка синтаксиса на форуме нужна. Но делать специальные "расцвеченные" файлы на самом LISP - мягко говоря на любителя. Ради этого запускать AutoCAD, запускать программу....

Вообще-то одна из проблем для любого форума - запрет вставки HTML в текст сообщений. Жестоко, но правильно - иначе такого навставляют...

Движок сайта обычно дополняется специальным плагином, например GeSHi. Такой плагин просто обрабатывает обрамленный BB-тегом CODE текст и автоматически выполняет раскраску. Можно указать имя подсвечиваемого языка. Для распространенного в Web PHP подсветка выполнятся прекрасно. Для LISP - хуже, так как гораздо больше "ключевых слов". Но это поддается доработке - проще один раз правила создать.

Подробнее об этом у меня на сайте

Я лично пользуюсь своей программой ruSourceExplorer (где-то в DNL лежит). При работе с исходниками (они сами раскрашиваются) достаточно щелкнуть кнопку и получаем еще и расцвеченный HTML. Его можно вставить "куда надо". Куда дозволено.

А программа Lisp Styler интересная. В академическом плане. Спасибо.
ShaggyDoc вне форума  
 
Непрочитано 11.01.2011, 22:32
#8
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Цитата:
Сообщение от skkkk Посмотреть сообщение
по-моему, любой программист любой код тут же вставляет во VLIDE.
я не пользуюсь Vlide (мне он не нравится - под лисп есть куча, с моей точки зрения, куда более удобных редакторов). А идея действительно интересная (хоть я и дальтоник), я думаю если описать формат - можно и Admin'a попросить добавить макрос на тег CODE.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 11.01.2011, 23:28
#9
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Цитата:
Сообщение от Дима_ Посмотреть сообщение
я не пользуюсь Vlide (мне он не нравится - под лисп есть куча, с моей точки зрения, куда более удобных редакторов).
Расскажи пожалуйста поподробнее...
Очень интересует, во первых, чем твой любимый редактор лучше и во вторых, как называется.

ps. Меня, vlide, тоже не всем устраивает, но замены я не нашел
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/
Елпанов Евгений вне форума  
 
Непрочитано 11.01.2011, 23:33
#10
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,835


Один из вариантов - Notepad++, там есть возможность добавления собственных ключевых слов. Но лично мне он как-то не очень понравился. Чисто субьективное мнение.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 11.01.2011, 23:39
#11
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Один из вариантов - Notepad++, там есть возможность добавления собственных ключевых слов. Но лично мне он как-то не очень понравился. Чисто субьективное мнение.
я так же, его выделил из всех просмотренных и использую для быстрого просмотра файлов, без открытия acada...
Но надеюсь, действительно есть более продвинутые редакторы, хорошо работающие с autolisp.
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/
Елпанов Евгений вне форума  
 
Непрочитано 11.01.2011, 23:47
#12
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,835


Я имел в виду не просмотр, а написание кодов
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 12.01.2011, 06:39
#13
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
я не пользуюсь Vlide (мне он не нравится - под лисп есть куча, с моей точки зрения, куда более удобных редакторов)
Это сгоряча, не подумавши. VLIDE - не просто редактор, это IDE. Именно для AutoCAD. Помимо стандартных функций правки текста там много инструментов для разработчика, которые сторонний редактор никак не заменит. Надо просто их изучить.

Сторонних удобных редакторов не "куча", а маленькая кучка. Но удобных редакторов на все случаи можно и самому написать (если делать нечего). При современном уровне программирования. Включаем, например, в форму компонент SynEdit, подключаем модуль UniHighLigher и наш редактор будет уметь раскрашивать пару сотен типов файлов. А какие не умеет - добавим, не влезая в код. При этом он и все мыслимые действия по правке кода умеет делать.

Но и описывать подсветку надо с умом. Вот замечательный Notepad++ делает это весьма примитивно. Там для LISP включено совсем немного "базовых" ключевых слов, только один вид комментариев. Нет возможности задавать правила подсветки с помощью масок и прочее.

А редактор VLIDE, между прочим, начинает сам подсвечивать неизвестные ему ключевые слова, если зарегистрирована по определенным правилам библиотека.
ShaggyDoc вне форума  
 
Непрочитано 12.01.2011, 08:26
#14
Лиспер


 
Регистрация: 11.10.2010
Сообщений: 980


Если есть желание: архив распаковать в каталог установки Notepad++, заменив имеющиеся там файлы.
Вложения
Тип файла: rar npp_lang.rar (49.5 Кб, 76 просмотров)
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Непрочитано 12.01.2011, 10:53
#15
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


То Евгений и ShaggyDoc - я не писал, что vlide плох - мне его "логика" не понравилась, да он IDE - но насчет инструментария - а зачем он в лиспе, тем более в мультзадачной систме (у меня паралельно горит F2 окно автокада - в нем и проверяю "он лайн"). Для "быстрого просмотра" использую упомянутый notepad++, а непосредственно пишу в редакторе от plt-scheme (ныне Racket). Там ИХМО очень хорошо реализовано автоматическое выравнивание и выделение - подвел курсор к скобке и тебе автоматом выделяет фон до конца\начала пары (как ctrl+shift+] в Vlide - только автоматом), алгоритм выравнивания несколько другой нежили в Vlide и "более автоматизированный" в случае исправления кода - учитывает не только строки, но и контекст операторов - синтаксис влияющих на форматирование в лисп и схеме совпадают. У Vlide есть плюс - выделение ключевых слов (в схеме только строки и цифры - из за разного подхода к количеству встроенного "синтетического сахара") - спасает от "очепяток", но в сравнении остальных достоинств - лично мне это не перевешивает. Жаль только, что не работает (из-за различия синтакисисов) указатель имен (работает в "родном" варианте - схеме) - не просто проверяя по одиноковому имени, но и учитывает "схемологику" программы - то есть подводишь к любому имени - а тебе "стрелочками" указывает где это имя образуется и все места где используется (еще раз повторю проверяет не по имени (они могут совпадать в разных лямбдах), а по реальному применению).

p.s. вот так выглядит один и тот же автоматически выровненный код:
Код:
[Выделить все]
Vlisp
(if (= a b)
  (progn (test)
    (test2))
  (test3))

Scheme
(if (= a b)
    (progn (test)
           (test2))
    (test3))
__________________
Когда в руках молоток все вокруг кажется гвоздями.

Последний раз редактировалось Дима_, 12.01.2011 в 11:17.
Дима_ вне форума  
 
Непрочитано 12.01.2011, 11:15
#16
Vov.Ka


 
Регистрация: 21.07.2008
Луцьк
Сообщений: 179


vlide крутая вещь. все остальное от дьявола.
Vov.Ka вне форума  
 
Непрочитано 12.01.2011, 12:14
#17
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Дима_, форматирование в VLIDE настраивается по вкусу.
Tools > Environvent Options > Visual LISP Format Options.

И выравнивать можно получше, например

Код:
[Выделить все]
(if (= a b)
      (progn
        (test)
        (test2)
     ) ;_ end of progn
    (test3)
) ;_ end of if
Это читабельней. Хотя вкусы и привычки разные бывают, кому-то "лесенкой" нравится.

F2 никто не запрещает, но из VLIDE можно прямо фрагмент отправить на выполнение. А значения переменных как во внешнем редакторе контролировать? Ты пошарься по меню, там много очень полезного. Нет только ничего "вижуального" кроме убогого предпросмотра DCL. Но это уж обычное маркетинговое жульничество.

А вообще-то Autodesk просто прикупила сторонний автономный редактор VitalLISP (его и сейчас иногда использую, просто EXE, даже установки не требует). С горем пополам встроили, как умели.
ShaggyDoc вне форума  
 
Непрочитано 12.01.2011, 12:30
#18
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Нет возможности задавать правила подсветки с помощью масок и прочее.
Вот этого, мне кажется, делать совсем не надо! Потому как, по подсветке я понимаю, что правильно написал название функции. А так может получиться, что префикс написан правильно, по маске название подходит и подсвечивается, а такой функции не существует! И ищи потом ошибку...
Do$ вне форума  
 
Непрочитано 12.01.2011, 13:03
#19
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Дима_, форматирование в VLIDE настраивается по вкусу.
Tools > Environvent Options > Visual LISP Format Options.
И выравнивать можно получше, например...
... А значения переменных как во внешнем редакторе контролировать?
1. Там нет учета контекста (функций) программы. Хотя по поводу выравнивания согласен - кому как красивей - дело вкуса.
2. А переменных у меня давно в коде не встречается (я уж не раз про это писал) Вот последний пример - ну удобней мне так.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 12.01.2011, 13:35
#20
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Цитата:
Сообщение от Дима_ Посмотреть сообщение
А переменных у меня давно в коде не встречается (я уж не раз про это писал) Вот последний пример - ну удобней мне так.
попробуй сам переписать эту же программу, но с переменными и без лишних функций, а потом сравни скорость выполнения...
Я тоже не люблю использовать переменные, если можно без них и не в ущерб, но всегда помню, какая за это плата!

ps. заодно засеки разницу скорости для скомпилированных вариантов.
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/
Елпанов Евгений вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP Оформление кодов

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Научите лиспу на примере (или как kpblc, VVA и компания пытаются обучить чайника лиспу) Red Nova LISP 4555 24.03.2024 13:44
{Конкурс} Lisp. Задачки для студентов gomer LISP 10 05.01.2011 16:33
Как создать lisp Тройника Boo87 LISP 25 16.08.2010 19:54
Запуск Lisp команды в новом документе BlackHarp LISP 1 26.03.2009 23:06
загрузка DOS прог через LISP Gaa LISP 15 12.08.2005 19:19