|
|
|
[Python] Регулярное выражение для парсинга программного кода.
|
|||
|---|---|---|---|
|
#18+
Сделал такую регулярку: (?<!.)[_a-z][_a-zA-Z0-9]*|[\s]+[_a-z][_a-zA-Z0-9]* Но она не вылавливает все переменные языка программирования и захватывает частично строки. Что нужно исправить/добавить, чтобы можно было "отловить" только переменные? Исходный код: Код: ruby 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2012, 20:41:12 |
|
||
|
[Python] Регулярное выражение для парсинга программного кода.
|
|||
|---|---|---|---|
|
#18+
Relrin, Код: php 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2012, 10:45:48 |
|
||
|
[Python] Регулярное выражение для парсинга программного кода.
|
|||
|---|---|---|---|
|
#18+
UsmanRelrin, Код: php 1. 2. У меня регулярка эта не работает почему-то... П.С. Пишу на Python'е ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2012, 13:27:22 |
|
||
|
[Python] Регулярное выражение для парсинга программного кода.
|
|||
|---|---|---|---|
|
#18+
Relrin, Код: python 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2012, 14:10:03 |
|
||
|
[Python] Регулярное выражение для парсинга программного кода.
|
|||
|---|---|---|---|
|
#18+
UsmanRelrin, Код: python 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Спасибо. Работает :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2012, 14:25:33 |
|
||
|
[Python] Регулярное выражение для парсинга программного кода.
|
|||
|---|---|---|---|
|
#18+
Relrin, Можно еще и так сделать (учитывая возможности Питона), например: Код: python 1. 2. 3. 4. 5. Код: python 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2012, 14:29:30 |
|
||
|
[Python] Регулярное выражение для парсинга программного кода.
|
|||
|---|---|---|---|
|
#18+
Возник с переменными, которые объявляеются в первый раз, все понятно, а вот как выщемить переменных, которые уже далее где-то используюся (т.е. как в качестве параметра, или части объекта). На примере выделил жирными цветом. Как это сделать? menu .add('command', 'label' => "Java", 'command' => java_clicked ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2012, 14:55:35 |
|
||
|
[Python] Регулярное выражение для парсинга программного кода.
|
|||
|---|---|---|---|
|
#18+
^\s*(\w+)\s*=|^\s*(\w+) Щемит такие выражения(выделено жирным), а то что, подчеркнуто, не выделяет, хотя неплохобы, чтобы их из брало: Код: ruby 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2012, 15:10:01 |
|
||
|
[Python] Регулярное выражение для парсинга программного кода.
|
|||
|---|---|---|---|
|
#18+
^\s*(\w+)\s*[.]* - все-таки вот так выглядит лучше rb_clicked = Proc.new { lbl. text "Ruby was liked..." } menu = TkMenu.new(app menu. add('command', 'label' => "Java", 'command' => java_clicked ) menu. add('command', 'label' => "Scala", 'command' => sc_clicked ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2012, 15:11:52 |
|
||
|
[Python] Регулярное выражение для парсинга программного кода.
|
|||
|---|---|---|---|
|
#18+
Relrinа то что, подчеркнуто Реализовать одной регуляркой будет сложно. Лучше в два захода. Сначала перебираете определения/объявления переменных. Получаете список и делаете поиск по тексту (с небольшой модификацией). А если вам нужен анализатор исходного кода, тогда сюда: http://wiki.python.org/moin/LanguageParsing ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2012, 16:47:44 |
|
||
|
[Python] Регулярное выражение для парсинга программного кода.
|
|||
|---|---|---|---|
|
#18+
[quote автор]UsmanRelrinа то что, подчеркнуто Реализовать одной регуляркой будет сложно. Лучше в два захода. Сначала перебираете определения/объявления переменных. Получаете список и делаете поиск по тексту (с небольшой модификацией). Да, я додумался в 2 захода сделать. Вот допустим, из исходного кода мне (1ый пост), вернуло список тех переменных, которые объявлены впервые с использованием присваивания (знака "=") и использовали для этого регулярку "^\s*(\w+)\s*=": menu app lbl java_clicked sc_clicked cpp_clicked py_clicked bar rb_clicked Теперь нужно все пересчитать. Выбираем элемент из списка, и подставив в ключ нужно найти данные, записать с словарь. Как распарсерить, если операторов в Ruby, предостаточно? Просто все скидывать в [^оператор*..] ? Основные операторы раби: = + - % & * ** / | || >> << .eql? equal? += -= *= /= %= **= or and not П.С. Функцию отдельно я написал, которая в словарь потом отдельно преобразует, подсчитав сколько раз встречался этот элемент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2012, 17:08:53 |
|
||
|
[Python] Регулярное выражение для парсинга программного кода.
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2012, 17:13:36 |
|
||
|
[Python] Регулярное выражение для парсинга программного кода.
|
|||
|---|---|---|---|
|
#18+
UsmanRelrin, http://py2rb.sourceforge.net/ Проект "мертвый", скачать ничего невозможно (репозитарий пустой) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2012, 17:16:21 |
|
||
|
[Python] Регулярное выражение для парсинга программного кода.
|
|||
|---|---|---|---|
|
#18+
Relrin(репозитарий пустой) Извиняюсь... Попытаюсь реабилитироваться :) - https://github.com/whymirror/unholy - http://www.goto.info.waseda.ac.jp/~fukusima/ruby/python-e.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2012, 17:22:42 |
|
||
|
[Python] Регулярное выражение для парсинга программного кода.
|
|||
|---|---|---|---|
|
#18+
\s*(\w+)\s*[.] - как можно подкорректировать данную регулярку, чтобы она брало имя переменной/объекта до точки(выделено жирным), но не выбирало, что подчеркнуто? asd.hello() rb_clicked = Proc.new { # ловим клик "Ruby" в меню lbl. text "Ruby was liked..." } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2012, 00:38:57 |
|
||
|
[Python] Регулярное выражение для парсинга программного кода.
|
|||
|---|---|---|---|
|
#18+
Relrin, - http://programmingexamples.wikidot.com/python-introspection - http://wiki.python.org/moin/LanguageParsing ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2012, 23:47:49 |
|
||
|
|

start [/forum/topic.php?fid=23&fpage=133&tid=1464656]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
315ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 649ms |

| 0 / 0 |
