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

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

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

Ответ
Поиск в этой теме
Непрочитано 11.01.2011, 20:08
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 просмотров)

__________________
Как использовать код на Лиспе читаем здесь
Просмотров: 15740
 
Непрочитано 13.01.2011, 22:35
#41
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,335


Цитата:
Это когда вы берёте хорошо продуманный кусок кода и с помощью последовательности небольших обратимых преобразований превращаете в нечто абсолютно непонятное никому, кроме вас.
Таки вы знаете, - очень полезная вещь. Типа обфускации, потому как во времена промежуточных языков защита комерческого кода переходит на новый эволюционный этап. Теперь зарабатывать можно только на поддержке, выпуская новые версии с той скоростью пока пишут деобфускатор к вашему исходнику. (но это не про нас а про НАСТОЯЩИХ программистов)
Sleekka вне форума  
 
Непрочитано 13.01.2011, 23:51
#42
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Как без переменных постоить профиль швеллера, двутавра, уголка по стандарту?
gomer вне форума  
 
Непрочитано 14.01.2011, 00:43
#43
Дима_

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


Цитата:
Сообщение от gomer Посмотреть сообщение
Как без переменных постоить профиль швеллера, двутавра, уголка по стандарту?

А как без утюга сварить пельмени?
Код:
[Выделить все]
(make-profil (assoc профиль '(ассоциативный список параметров профилей)))
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 14.01.2011, 00:56
#44
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от Дима_ Посмотреть сообщение
А как без утюга сварить пельмени?
Хе-хе, так и я могу...
Это-понятно... Мне интересна сама make-profil или в списке параметров функция отрисовки
gomer вне форума  
 
Непрочитано 14.01.2011, 09:27
#45
Лиспер


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


Offtop: Как-то плавно тема свернула с цветового оформления кодов на методику их написания
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Непрочитано 14.01.2011, 17:58
#46
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от Лиспер Посмотреть сообщение
Как-то плавно тема свернула с цветового оформления кодов на методику их написания
Offtop: если логика функции понятна, то раскраска вообще не нужна...
gomer вне форума  
 
Непрочитано 15.01.2011, 17:59
#47
Do$

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


Мне нравится
Оформления а-ля VLIDE. Жалко, что на форуме тег FONT отключен, в сообщениях так не оформишь...
Вложения
Тип файла: rar func.rar (1.0 Кб, 85 просмотров)
Do$ вне форума  
 
Непрочитано 15.01.2011, 20:16
#48
ShaggyDoc

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


Цитата:
Оформления а-ля VLIDE. Жалко, что на форуме тег FONT отключен, в сообщениях так не оформишь...
Примерно так вся подсветка и делается. И делается неправильно с точки зрения современного синтаксиса HTML. Такой код не пройдет валидацию. Это стандарт HTML 3.2, да еще с нарушениями.

В тексте HTML не должно быть тегов типа FONT color=red, а должны быть ссылки на стили, наподобие span class="bracket". А классы должны быть определены в таблице стилей (которая может быть одна на сайт, а то и на весь Интернет). Но пока мало какие программы умеют так делать.

Я тоже свои не научил, у меня тоже такой же HTML получается. Это плохо.
ShaggyDoc вне форума  
 
Непрочитано 15.01.2011, 22:54
#49
Do$

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


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
И делается неправильно с точки зрения современного синтаксиса HTML. Такой код не пройдет валидацию. Это стандарт HTML 3.2, да еще с нарушениями.
Неудивительно, ибо я в HTML только недавно начал ковыряться
Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
а должны быть ссылки на стили, наподобие span class="bracket"
У Lee Mac в исходном коде так и сделано, но я пока что так не умею. Состряпал как смог
Do$ вне форума  
 
Непрочитано 15.01.2011, 23:21
1 | #50
Pastor

это только кличка
 
Регистрация: 22.10.2006
Москва
Сообщений: 252


Цитата:
я в HTML только недавно начал ковыряться
Тогда возможно пригодятся две очень хорошие и одна шикарная книги:

1. Муссиано Ч., Кеннеди Б.
HTML и XHTML. Подробное руководство, 6-е издание. Символ-Плюс, 2008. - 752стр.

2. Мейер Э.
CSS-каскадные таблицы стилей. Подробное руководство, 3-е издание. Символ-Плюс, 2010. - 576 стр.

3. Фленаган Д.
JavaScript. Подробное руководство, 5-е издание. Символ-Плюс, 2009. - 992 стр.
__________________
...в шее моей жилы железные, и лоб мой - медный...
Pastor вне форума  
 
Непрочитано 16.01.2011, 00:20
#51
Карлсон


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


Для общей информации о форматировании лисп-кода отмечу в дополнение к прочему сервис http://lisper.ru/apps/format/create хотя там и нет конкретно autolisp.

Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Вот замечательный Notepad++ делает это весьма примитивно. Там для LISP включено совсем немного "базовых" ключевых слов, только один вид комментариев.
Справедливости ради надо заметить, что Notepad++ таки поддерживает блочный комментарий, но не в синтаксисе autolisp, а для common-lisp т.е. #| ... |#. Но так же замечу что в этом плане данный редактор ведет себя с лиспом странно, ибо если попробовать менять в конфигурационных файлах ключевые символы для обозначения комментариев положительного результата не наблюдается.

Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Это читабельней. Хотя вкусы и привычки разные бывают, кому-то "лесенкой" нравится.
Как бы то ни было, форматирование "лесенкой" в лисп-сообществе считается стандартом и читается лучше, но требует определенного привыкания. И в этом вопросе, пожалуй следует поступаться привычками и вкусами. Т.е. вырабатывать себе правильные привычки и вкусы.
Карлсон вне форума  
 
Непрочитано 16.01.2011, 20:04
#52
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,335


Цитата:
Сообщение от Pastor Посмотреть сообщение
Тогда возможно пригодятся две очень хорошие и одна шикарная книги:

1. Муссиано Ч., Кеннеди Б.
HTML и XHTML. Подробное руководство, 6-е издание. Символ-Плюс, 2008. - 752стр.

2. Мейер Э.
CSS-каскадные таблицы стилей. Подробное руководство, 3-е издание. Символ-Плюс, 2010. - 576 стр.

3. Фленаган Д.
JavaScript. Подробное руководство, 5-е издание. Символ-Плюс, 2009. - 992 стр.
Спасибо за литературку, нашел все кроме Фленагана.
Sleekka вне форума  
 
Непрочитано 16.01.2011, 23:42
#53
Pastor

это только кличка
 
Регистрация: 22.10.2006
Москва
Сообщений: 252


Цитата:
нашел все кроме Фленагана.
Я использую "бумажную" версию данной книги, поэтому увы, нужной ссылкой помочь не могу.
Но книга очень достойная: качественный учебный материал + профессиональный перевод + полный справочник по JavaScript вообще и по клиентскому (практическому JavaScript для браузеров) в частности + твердый переплет, качественная бумага и печать.
__________________
...в шее моей жилы железные, и лоб мой - медный...
Pastor вне форума  
 
Непрочитано 21.01.2015, 13:05
#54
mmax

Программист широкого профиля.
 
Регистрация: 08.09.2005
Челябинск
Сообщений: 722


Тема кому интересна?
Тестировал недавно программу-граббер. И сграбил все имена lisp-функций со справочной системы AutoCAD 2015.
Со страниц:
http://help.autodesk.com/view/ACD/20...D-7060F5E16547
http://help.autodesk.com/view/ACD/20...4-FB57BAB01C44
Предполагаю, что 99,9% а то и все 100% имен сграблено.
В итоге получил полный список AutoLISP функций в текстовом формате которые можно использовать в качестве ключевых слов для подсветки символов в различных редакторах. Например Notepad++.

Есть некоторые редакторы в которых функции подсвечиваются по маске. Например если ключевое слово (vlax-) то будет подсвечено и vlax-get-acad-object и vlax-bla-bla-bla.
Наличие полного списка подсвечиваемых слов хорошо тем что подсвечиваться будут только они и ничего больше.

Во вложенных файлах весь перечень функций в .txt и файл пользовательского синтаксиса для notepad++ 6.7.4
Перед установкой нового синтаксиса нужно в настройках np++ деактивировать стандартный lisp-синтаксис (будет постоянно переключаться на себя).
Для установки зайти в меню Синтаксисы - Задать свой синтаксис - Кнопка Импорт - дальше разберетесь.

Маленький недостаток NP++ в том, что он подсвечивает комментарий одной строки только с двумя ";;".

Миниатюры
Нажмите на изображение для увеличения
Название: lisp.jpg
Просмотров: 290
Размер:	161.4 Кб
ID:	142286  
Вложения
Тип файла: zip LISP функции.zip (29.5 Кб, 37 просмотров)
mmax вне форума  
 
Непрочитано 21.01.2015, 13:25
#55
skkkk


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


Offtop: mmax, решил вернуться на форум и в лисп? Я рад очень этому .
Давно тебя не слышно было, похоже, жить долго будешь, вспоминал я тебя буквально только что
.
А тема да, интересная, правда я уже давно перенастроил под себя синтаксис встроенного в NPP языка LISP. Причем рыл на всяких форумах, как-то еще - не помню, находил списки функций, загонял их в Excel, "сцеплял", фильтровал, сортировал и очень доволен результатом. Но почему-то здесь мой энтузиазм встретили жесткой критикой, мол, на лиспе кодить нужно во влайде.
Где ж ты был года два-три назад, когда я с этим разбирался? Много что получилось, но осталось и много вопросов. Но все равно на досуге гляну, что можно почерпнуть из твоей находки, а заодно и поделюсь своими, если интересно. Сейчас довольно сильно занят.
skkkk вне форума  
 
Непрочитано 21.01.2015, 14:05
#56
mmax

Программист широкого профиля.
 
Регистрация: 08.09.2005
Челябинск
Сообщений: 722


Цитата:
Сообщение от skkkk Посмотреть сообщение
на лиспе кодить нужно во влайде
не нужно.
можно в автокаде сделать панельку с 2 кнопками
1. Загружает лисп-файл с диалоговым окном выбора файла
2. загружает последний загруженный лисп-файл.
Вот вам и пожалуйста - миниверсия VLIDE. Там тоже используется только одна кнопка типа "Загрузить активное окно редактора"

А еще в нотпаде есть функция запуска программ. Эта штука теоретически может сделать так чтобы лисп-код активного окна редактора NP++ сразу улетал в автокад
mmax вне форума  
 
Непрочитано 21.01.2015, 21:03
#57
Дима_

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


Цитата:
Сообщение от mmax Посмотреть сообщение
Тестировал недавно программу-граббер. И сграбил все имена lisp-функций со справочной системы AutoCAD 2015.
Код:
[Выделить все]
 (atoms-family 1)
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 21.01.2015, 22:00
#58
skkkk


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


Цитата:
Сообщение от mmax Посмотреть сообщение
не нужно
Так я и не стал. Кодить во VLIDE. А стал форматировать, и то не всегда: не очень мне по душе то, как он это делает. И отлаживать - и тоже не каждый раз, только особо тяжелые случаи: частенько уже коды работают сразу, а логика мне как автору вполне ясна и где искать ошибку, почти всегда сразу понятно, если заранее хорошенько продумать алгоритм и предчувствовать поведение Автокада, основываясь на опыте и интуиции. В NPP, однако, нет таких полезных вещей, как точки останова, шаги с заходом, удобный контроль переменных и прочих...
Но чаще все равно пишу в NPP и там же отлаживаю.
Цитата:
Сообщение от mmax Посмотреть сообщение
можно в автокаде сделать панельку с 2 кнопками
В процессе отладки я на запуск функции вешаю принудительную загрузку ее же самой. На одном экране код: подправил, сохранил. На другом - Автокад: в нем нажал стрелку вверх и Enter - получил результат. Или ошибку. Тогда снова а блокнот - и снова тест...

Цитата:
Сообщение от Дима_ Посмотреть сообщение
(atoms-family 1)
Дима_, знал я тогда такую возможность, когда искал, но мне очень не понравилось, в каком беспорядочном виде все это "распечатывается" в комстроке. Мало того, что не по алфавиту - это можно легко решить в Excel, так еще и все в верхнем регистре. В NPP подсветка синтаксиса регистрозависима, и так сложилось, что полунегласно-полуофициально часто в двух-трехсложные именах функций VLISP каждый "слог" начинается с заглавной. Мне это тоже нравится, и я в список автозавершения в XML-файле добавил все функции в таком виде и всегда стараюсь придерживаться этого в своих кодах. Потому что тогда, в свое время, в таком виде мне их удалось найти. А в список подсветки добавил и в таком виде, и в нижнем регистре, поскольку на форуме часто не заморачиваются с этим регистром, все пишут в нижнем, но очень и очень редко я видел коды в верхнем. Перевод же из "разнорегистрового" варианта в нижний в автоматическом режиме - не проблема, однако обратное - неверно. Поэтому, в данном случае, "атомсфэмили" - не вариант. Другое дело, в каком виде представлены функции у mmax'а. Заглядение - порядок полнейший. К тому же в готовом виде. Вставляй в нотпад и кайфуй. Спасибо, mmax. Там, кстати, я все же кое-что для себя полезного нашел.
skkkk вне форума  
 
Непрочитано 21.01.2015, 22:06
#59
skkkk


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


Вот, кстати, мой вариант оформления.
Миниатюры
Нажмите на изображение для увеличения
Название: Снимок.JPG
Просмотров: 52
Размер:	221.1 Кб
ID:	142346  
skkkk вне форума  
 
Непрочитано 21.01.2015, 23:54
#60
mmax

Программист широкого профиля.
 
Регистрация: 08.09.2005
Челябинск
Сообщений: 722


Цитата:
Сообщение от skkkk Посмотреть сообщение
В NPP подсветка синтаксиса регистрозависима,
я не ползал в стандартные файлы синтаксиса. В НП++ есть пользовательский инструмент в котором можно поставить галку на регистрозависимость

----- добавлено через ~20 ч. -----
Видео про то как NPP постепенно превращается в VLIDE.
Increase Size Decrease Size Нажмите для просмотра
http://www.youtube.com/watch?v=UzXSGacdNjAРекомендую посмотреть в полном экране HD, иначе самого интересного не видно будет.
Это не видеомонтаж.
Миниатюры
Нажмите на изображение для увеличения
Название: lisp.png
Просмотров: 50
Размер:	37.1 Кб
ID:	142350  

Последний раз редактировалось mmax, 22.01.2015 в 19:57.
mmax вне форума  
Ответ
Вернуться   Форум 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