Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Подсветка кода на регулярных выражениях

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Никто не встречал ? Интересует подсветка asm листингов
spheere
Отправлено: 19 Августа, 2010 - 21:52:14
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Авг. 2008  


Помог: 0 раз(а)




Случайно никто не встречал реализацию подсветки кода на регулярных выражениях ?
Интересует подсветка asm листингов.
Не поиск и замена заранее заданных в базе регистров, функций и операторов.

Или может кто поможет составить регулярные выражения чтоб парсить строки кода asm (синтаксис masm) ?
За вознаграждение, конечно.


Приведу пример по коду:
Цитата:
mov esi, [ebx + edx + 78h]

Нужна регулярка чтоб получился массив:
0 => "mov" - оператор (может обрамляться любым количеством пробелов и табов)
1 => "esi" - первый аргумент
2 => "[ebx + edx + 78h]" - второй аргумент (отделяется от первого запятой и вариациями пробелов и табов)

Оператор может содержать и 1 аргумент.
Цитата:
inc eax

Или может не содержать аргументов вообще.
Цитата:
lodsd


Примеры операторов с 2 аргументами
Цитата:
xchg eax, ecx
cmp dword ptr [eax], 0FFFFFFFFh
mov eax, 0


Вот примерно так это выглядит. Для человека разбирающегося в регулярках составить паттерн будет не сложно.

(Отредактировано автором: 19 Августа, 2010 - 22:49:34)

 
 Top
Uchkuma
Отправлено: 19 Августа, 2010 - 22:44:22
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




Пример подсветки синтаксиса masm есть?
 
 Top
spheere
Отправлено: 19 Августа, 2010 - 22:58:14
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Авг. 2008  


Помог: 0 раз(а)




Пример по коду добавил в 1й пост.
Сейчас приведу пример по данным.
Цитата:
szText db "Some text",0

Нужно получать массив
0 => "szText" - имя переменной
1 => "db" - переменная является последовательностью байтов (define byte)
2 => '"Some text",0' - содержимое переменной. Здесь ",0" означает что в конец строки будет записан нулевой байт

Еще пример с переводом строки:
Цитата:
szText db "Some text line 1",13,10,"Some text line 2",0

0 => "szText"
1 => "db"
2 => '"Some text line 1",13,10,"Some text line 2",0' - (,13,10,) это "\r\n"

Пример не текстовой переменной:
Цитата:
lpAddr dd 0C0D6D616h

0 => "lpAddr" - имя переменной
1 => "dd" - переменная это двойное слово (define dword)
2 => "0C0D6D616h"

(Отредактировано автором: 19 Августа, 2010 - 23:03:52)

 
 Top
Uchkuma
Отправлено: 19 Августа, 2010 - 23:03:55
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




spheere, к первому посту вот:
Цитата:
^(\w+)(?:\s+([^,]+)(?:,\s+(.*))?)?$

(Добавление)
По второму посту:
Цитата:
^(\w+)\s+(\w+)\s+(.*)$
 
 Top
spheere
Отправлено: 19 Августа, 2010 - 23:12:27
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Авг. 2008  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. preg_match_all("^(\w+)(?:\s+([^,]+)(?:,\s+(.*))?)?$", $LINE, $UNITS, PREG_PATTERN_ORDER);

выдает ошибку

Цитата:
function.preg-match-all: Unknown modifier ','
 
 Top
Uchkuma
Отправлено: 19 Августа, 2010 - 23:19:16
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




Первый параметр должен обрамляться. Например слэшами вот так: preg_match_all('/^(\w+)\s+(\w+)\s+(.*)$/', ...);
(Добавление)
Первый знак в шаблоне считается ограничителем. Он же и закрывает шаблон. А после закрывающего идут модификаторы, вот он и ругнулся на неизвестный модификатор ','
 
 Top
spheere
Отправлено: 19 Августа, 2010 - 23:30:49
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Авг. 2008  


Помог: 0 раз(а)




Тпереь я понял, работает. Послал личное сообщение...
 
 Top
JustUserR
Отправлено: 20 Августа, 2010 - 22:21:45
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




spheere В некоторых готовых web-приложениях таких как форумы и блоки зачастую имеется возможность автоматической подсветки кода в соответствии с выбранным BB-тегом - поэтому если посмотреть соответствующие plugin-ы для известных проектов то среди них вероятно имеются и ASM-подстветки


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Uchkuma
Отправлено: 20 Августа, 2010 - 22:53:13
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




JustUserR пишет:
spheere В некоторых готовых web-приложениях таких как форумы и блоки зачастую имеется возможность автоматической подсветки кода в соответствии с выбранным BB-тегом - поэтому если посмотреть соответствующие plugin-ы для известных проектов то среди них вероятно имеются и ASM-подстветки
Да-да. Даже у себя нашел реализацию ASM в BB-подсветках. Но товарищу, видимо, нужен какой-то собственный механизм подсветки для узкого применения.
 
 Top
JustUserR
Отправлено: 22 Августа, 2010 - 01:46:21
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Uchkuma пишет:
Да-да. Даже у себя нашел реализацию ASM в BB-подсветках. Но товарищу, видимо, нужен какой-то собственный механизм подсветки для узкого применения.
Вероятно автору темы будет интересно посмотреть готовое решене подстветки ASM-кода и использовать его - в любом случае реализация собственной схемы выделения операторов проще реализуется уже на основе некоторой существующей Поэтому если вы имеете сейчас в быстром доступе соответствующую PHP-библиотеку - то можете предложить ее автору Улыбка


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Uchkuma
Отправлено: 22 Августа, 2010 - 09:39:51
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




Вот библиотека bbcode, в которой есть подсветка asm. Сама библиотека подсветки asm находится здесь bbcode/lib/geshi/asm.php. А вообще там порядка 80 разных подсветок.
Скачать файл: bbcode.zip
Скачан раз: 163
 
 Top
JustUserR
Отправлено: 23 Августа, 2010 - 16:03:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Uchkuma пишет:
Вот библиотека bbcode, в которой есть подсветка asm
Спасибо я думаю данная библиотека пригодится как автору темы так и многим другим кто будет реализовывать механизм подсветки в собственных приложениях


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB