Пытаюсь написать небольшой парсер 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
[ 'int func()', [ 'int a;', 'return a']]
['int', 'A1', '=', '100;', 'int', 'A2', '=', '200;']