Форум сайта python.su
Здравствуйте любители питона!
Пытаюсь написать небольшой парсер 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;']
Отредактировано Radist_101 (Ноя. 22, 2013 19:06:45)
Офлайн
Radist_101
Как найти координаты объявления функции или класса учитывая при этом отступы и переводы строк.
dict_class = {}
for result, start, end in program.parseWithTabs().scanString(code):
if result:
dict_class[result[0]] = (start, end)
Radist_101
И еще один вопрос, допустим есть несколько классов и конечно внутри них есть методы, и как их распарвить в list, чтобы одна строка равнялась новому елементу в списке при этом учитывая скобки {} как новый вложенный список
Офлайн