Coder plugin (2)

Discuss and announce AkelPad plugins
Locked
  • Author
  • Message
Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

ShDM
Попробуйте отсюда: http://akelpad.sourceforge.net/files/plugs/Coder/

Offline
Posts: 3
Joined: Fri Jun 06, 2014 7:28 pm

Post by ShDM »

Instructor Ооо! Спасибо тебе! Заработало.

Offline
Posts: 582
Joined: Mon Apr 08, 2013 9:50 pm
Location: Win7SP1x64, APx64

Post by Drugmix »

Не понимаю почему .coder ругается на правило QuotesRE

Code: Select all

0	`(?<=.*)(abc)` `\1=(0,${STR},0)`

Offline
Posts: 874
Joined: Sat Jan 16, 2010 2:03 pm

Post by opk44 »

Drugmix
В документации сказано: "Шаблон должен быть фиксированной длины."

Offline
Posts: 582
Joined: Mon Apr 08, 2013 9:50 pm
Location: Win7SP1x64, APx64

Post by Drugmix »

opk44 wrote:Drugmix
В документации сказано: "Шаблон должен быть фиксированной длины."
И что это означает? Запрет на использование квантификаторов в шаблоне?

Offline
Posts: 582
Joined: Mon Apr 08, 2013 9:50 pm
Location: Win7SP1x64, APx64

Post by Drugmix »

Instructor
я уже очень давно прошу приделать каскадную работу правил раскраски текста.
Скажите, пожалуйста, вы планируете это прикрутить хоть сколько-нибудь скоро?

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Drugmix wrote:
opk44 wrote:Drugmix
В документации сказано: "Шаблон должен быть фиксированной длины."
И что это означает? Запрет на использование квантификаторов в шаблоне?
Вплоть до этого. Это не прихоть и не недочет нашей реализации, это так сказать общая "проблема". Движки регулярок не умеют применять регулярки в обратном порядке, потому Lookbehind-ы должны знать на сколько символов назад отойти и начинать сопоставлять. См. поподробнее

Offline
Posts: 124
Joined: Tue Jun 03, 2008 10:32 pm

Post by Xephon »

Какой смысл в выражении '(?<=.*)(abc)'?
Последовательность 'abc', перед которой от нуля до бесконечности любых символов, эквивалентна просто 'abc'.

Offline
Posts: 874
Joined: Sat Jan 16, 2010 2:03 pm

Post by opk44 »

Xephon
1. Пример: довольно надежно можно выделить в тексте грузинские фамилии (-дзе; -швили).
2. Очевидно что НЕ эквивалентна во втором случае.

Offline
Posts: 124
Joined: Tue Jun 03, 2008 10:32 pm

Post by Xephon »

Выражение '(?<=.*)(abc)', если бы оно было валидным, выделяло бы только 'abc'. Для примера с грузинскими фамилиями оно выделило бы все фрагменты 'дзе' и 'швили', вне зависимости от того, являются они частью слова или отдельным словом, находятся в начале, середине или конце строки.
В данном случае надежность могла бы быть обусловлена только тем, что фрагменты 'дзе' и 'швили' не встречаются в тексте нигде, кроме окончаний фамилий. Но в этом случае выражение типа 'abc' обладало бы такой же надежностью.

Offline
Posts: 874
Joined: Sat Jan 16, 2010 2:03 pm

Post by opk44 »

Xephon wrote:Выражение... выделяло бы только 'abc'. ...
Слона-то я и не приметил...

Offline
Posts: 582
Joined: Mon Apr 08, 2013 9:50 pm
Location: Win7SP1x64, APx64

Post by Drugmix »

Xephon wrote:Какой смысл в выражении '(?<=.*)(abc)'?
Последовательность 'abc', перед которой от нуля до бесконечности любых символов, эквивалентна просто 'abc'.
Изначально я хотел попробовать правила, с помощью которых можно было бы реализовать псевдо-каскадность раскраски кода.

Code: Select all

0	`(?<=^.*,\s*)(abc)(?=.*$)` `\1=(0,${STR},0)`
если в строке перед abc есть запятая, то раскрасить abc так-то.

Но получил ошибку и начал упрощать шаблон по максимуму, чтобы понять что вызывает ошибку.

Offline
Posts: 381
Joined: Wed Sep 28, 2011 3:05 pm

Post by Cuprum »

Тоже проблема с регэкспом в QuotesRE. Это просто пример, чтобы показать ошибку.
Вот такое не работает:

Code: Select all

0	`(?<!\(|\{)(a)+`   `\1=(0,${AREA},0)`
а такое - работает:

Code: Select all

0	`(?<!\()(a)+`   `\1=(0,${AREA},0)`
Получается, если в первом выражении в негативную ретроспективную проверку включить выбор вида \(|\{, то ошибка. Или может я неправильно записал?

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

Cuprum
В шаблонах фиксированной длины нельзя использовать '|'.

Code: Select all

0   `(?<![({])(a)+`   `\1=(0,${AREA},0)`

Offline
Posts: 381
Joined: Wed Sep 28, 2011 3:05 pm

Post by Cuprum »

Instructor
Понятно. А как тогда быть, если надо проверить альтернативы из нескольких символов, делать несколько проверок?

Code: Select all

(?<!ab)(?<!cd)(текст)
Locked