Найти - Пользователи
Полная версия: Парсинг java кода с использование pyparsing
Начало » Python для экспертов » Парсинг java кода с использование pyparsing
1
Radist_101
Здравствуйте любители питона!
Пытаюсь написать небольшой парсер java кода c помощью библиотеки pyparsing.
Как найти координаты объявления функции или класса учитывая при этом отступы и переводы строк.
Вот фрагмент моего кода, но при проверке индексов выяснил что координаты не точны. :
def get_dict_class(code):
"""
function gets a dict of all classes
"""

program = Keyword('class').suppress() + Word(alphanums + "_-") + Optional(Keyword('extends')).suppress() + \
Optional(Word(alphanums + "_-")) + Optional(Keyword('implements')).suppress() + \
Optional(Word(alphanums + "_-")) + nestedExpr('{', '}')

dict_class = {}

for result, start, end in program.scanString(code):
if result:
dict_class[result[0]] = (start, end)

return dict_class
И еще один вопрос, допустим есть несколько классов и конечно внутри них есть методы, и как их распарвить в list, чтобы одна строка равнялась новому елементу в списке при этом учитывая скобки {} как новый вложенный список, например
[ 'int func()', [ 'int a;', 'return a']]
, а у меня получается одно слово это новый элемент в списке, например
['int', 'A1', '=', '100;', 'int', 'A2', '=', '200;']
Radist_101
Radist_101
Как найти координаты объявления функции или класса учитывая при этом отступы и переводы строк.

эту проблему решил просто используя метод parseWithTabs() :
dict_class = {}
for result, start, end in program.parseWithTabs().scanString(code):
if result:
dict_class[result[0]] = (start, end)

Остается мне решить этот вопрос:
Radist_101
И еще один вопрос, допустим есть несколько классов и конечно внутри них есть методы, и как их распарвить в list, чтобы одна строка равнялась новому елементу в списке при этом учитывая скобки {} как новый вложенный список

This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB