LINUX.ORG.RU

Мои проги на PureBasic

 


4

5

Если у кого есть желание ознакомится можете скачать архив прог (53Мб), в комплекте общая справка по прогам в CHM со скриншотами. Можно посмотреть её в онлайн

В комплекте исходники и можно их скомпилировать. Для Linux собраны 3 варианта пакетов deb (Mint-x64 и MX-x86), rpm (Fedora), zst (Arch), и исполняемые для Raspberry-x32, и есть отдельно архив для Андроида Можете посмотреть видео о PureBasic на моём ютуб канале


Ответ на: комментарий от firkax

ващет линтер может менять местами AopB на BopA для правильного!

а если охота присваивать унутри проверки(while,if,for) легко повесить макру для замены своего «присваивающего символа»

текущие сырцы Томсона( тот же golang) очень красноречивы в части отличий отцов от скрипткидипрограммистов которым без obj100символьных_имён_исчерпывающе_вводящих_в_заблуждение_по_причине_потери_когерентности_между_именём_и_именнуемым нет пути

qulinxao3 ★☆
()
Ответ на: комментарий от anonymous

Так регвыр прост в этом, пустые строки замените на .+? что означает захватывать всё до следующей части текста. Всё же регвыр стоит поучить если у вас уже продвинутые запросы. Вы даже можете воспользоваться моей программой RegExp, там есть шаблоны для обучения, предлагается нажать шаблон и смотреть как изменяется обрабатываемый текст. Справка по метасимволам тоже в комплекте, написана мной с максимальный упрощением, грубо говоря перечитав кучи всего сделал для себя шпаргалку. Посмотрите шапку (первый пост) здесь

AZJIO
() автор топика
Ответ на: комментарий от anonymous

Ну так если сделать любой другой синтаксис, который будет решать ту же самую задачу, он, скорее всего, окажется настолько же вырвиглазным.

Только ещё его не будет понимать ни один инструмент и ни один разработчик. Ура велосипедам с квадратными колёсами!

Chiffchaff
()
Ответ на: комментарий от anonymous

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

^https?:// начинается с https но возможно без s
(?:www.)? три w может не быть - незахватываемая группа под вопросом
[-a-zA-Z0-9@:%._+~#=]   {1,256} - повторить эту кучку символов от 1 до 256 раз
. какой то символ
[a-zA-Z0-9()]{1,6} - опять кучка символом от 1 до 6 раз
\b(?: - открыта незахватываемая группа с границей
[-a-zA-Z0-9()@:%_+.~#?&/=]* - куча символов от 0 до бесконечности
)$ закрыта группа и конец строки.
AZJIO
() автор топика
Последнее исправление: AZJIO (всего исправлений: 1)
Ответ на: комментарий от Chiffchaff

имеется ввиду, что он на работе, время оплачивается, но типа нет времени 12 часов изучать регекспы, когда надо через 5 минут выдать результат.

Так это же вкладывание в себя. Если ты программист или продвинутый пользователь, то выучи это дома бесплатно, оно потом окупится.

AZJIO
() автор топика
Ответ на: комментарий от anonymous

Сразу скажу что я регекспах собаку съел. Ещё в 2010г. я весь мозг сломал начинаю изучать, когда везде справки отличаются и я методом тыка тестируя каждый разгадал его работу (движок PCRE). Они могут отличаться но не сильно. Изначально я не мог писать в ипровизации, надо было каждый раз тестировать. Сейчас я могу на автопилоте написать простейшие для поиска или сложные в тестовой проге и применяю это повсеместно, делая кучу обработок текста или встраиваю в проги, например в инструменте FindAllReferences у меня штук 20 регвыров для поиска нужного контента. Для обработки html много делал. На AutoIt3 там все на регекспах, так как движок встроен в интерпретатор, в PureBasic я научился писать анализатор посимвольный, так как он быстрее работает и не вставляет в исполняемый файл движок на 150-200 кб при размере проги 60кб.

AZJIO
() автор топика
Ответ на: комментарий от anonymous

не пробовал, но идея крутая. Мне нужно изучать Си, чтобы это использовать. У меня есть идея перевести регвыры для стеминга в код PureBasic и я весь мозг сломал, как начнёшь сразу руки опускаются. У меня анализатор кода PureBasic легче получился, так как там нет просмотра назад.

Предварительный просмотр (lookahead ) не используется, что несколько ограничивает область применения регулярных выражений

Вот этот текст там в описании, так что он не идеален и даже для разбора регвыр стеминга что мне нужен не подойдёт.

AZJIO
() автор топика
Ответ на: комментарий от anonymous

кстати этот регвыр с косяками

  1. Точка в нём не экранирована, при этом очевидно, что она является точкой, а не любым символом
  2. Тире «-» в квадратных скобках если не является диапазоном, то экранируется.
  3. Отсутствует упрощение, набор из a-zA-Z0-9_ можно записать как \w
  4. Вторая группа излишняя, можно не групировать. Группа используется чтобы получить её ,но так как она игнорируется для захвата, то она используется с разделителем «|» или с повторителями +*? ни один из которых не применён.
AZJIO
() автор топика
Ответ на: комментарий от anonymous

По сути сам движок регвыр преобразует краткую запись в некий Си код и выполняет его, точнее конечно же не в Си код, а уже в готовый скопилированный машинный код. Вы мне предлагаете написать движок регвыр, который уже есть. С разницей, что он выдаст Си код, кой скрыт от нас автором движка регвыр. Они скрыли, а я сейчас повторю гениальность многолетней работы авторов движка и выдам его открытым с функцией преобразования в Си код. Вы обо мне высокого мнения, я не такой гений. Просто сравните их платную прогу RegexBuddy и мою RegExp, чтобы понять пропасть в разнице уровня знаний.

AZJIO
() автор топика
Последнее исправление: AZJIO (всего исправлений: 1)
Ответ на: комментарий от AZJIO

Что представляет из себя регулярное выражение?
Это набор каких-то правил (проверок).

Если совокупность проварок истинна, то происходит некое изменение текста.

К примеру конвертация несложного регулярного выражения в эквивалентный код на си вовсе не сложна.

anonymous
()
Ответ на: комментарий от anonymous

конвертация несложного регулярного выражения в эквивалентный код на си вовсе не сложна.

Это создание компилятора. На форуме PureBasic буквально вчера чел поднял вопрос конвертации одного языка в другой. И здесь не просто разбор синтаксиса, а распознавание конструкции. Я максимум создал wildcard на регулярках сфотографировал в чужом коде, где звёздочка заменяется на .*? а вопрос на точку «.», и сделал вариант посимвольного анализатора wildcard.

AZJIO
() автор топика
Ответ на: комментарий от AZJIO

Это создание компилятора.

Какого компилятора?
Написать конвертор регулярного выфражения в эквивалентный код на Си это скорее лаба для начинающих, а вы о какой-то гениальности говорите …

anonymous
()
Ответ на: комментарий от anonymous

Не претендую на то, что далее предложенный путь разработки правильный.

Конечно должен быть разбор регулярного выражения в некую префиксную обратную польскую запись.

Для каждого правила регулярного выражения пишем функцию.

И цикл выполнения проверок и формирования кода на Си согласно обратной польской записи.

Конечно это всего лишь один из путей разработки.
Вполне возможно представление регулярного выражения в виде графа.

Это немного рутинно, но не сложно.

anonymous
()
Ответ на: комментарий от anonymous

Многие разработки не произведены, потому что и так уже существует 100500 способов достичь желаемого.

Допустим, вместо каких-то «шаблонов» можно напрячь один раз мозг, и изучить язык регулярных выражений. А если в голове не хватает для этого шариков, то их не хватит и для разработки непротиворечивой спецификации «шаблонов» и реализации её в коде.

Да и зачем?

Регекспов хватает практически для всего.

Для задач же, связанных, например, с пониманием кода, существует, допустим, semgrep.

Chiffchaff
()
Ответ на: комментарий от Chiffchaff

Регекспов хватает практически для всего.

Так он уже давит на создание Си кода, в чём имел бы смысл, хотя без «просмотр назад» это уже ограничено и светлые умы не смогли создать, то чего на меня то давить, тем более он сам готов создать это за 2 секунды, говоря, что это пустяк, не понимаю как при этом не разбираться в регвыр. Да и под anonymous не понятно кто пишет, может это все разные люди.

AZJIO
() автор топика