Я пытаюсь пирафинг python для синтаксического анализа. Я застрял, делая рекурсивный парсер.Нужна помощь в создании рекурсивного анализатора с использованием pyparsing
Позвольте мне объяснить проблему
Я хочу, чтобы декартово произведение элементов. Синтаксис
cross({elements },{element})
я положил в более специфический способ
cross({a},{c1}) or cross({a,b},{c1}) or cross({a,b,c,d},{c1}) or
Таким образом, общая форма первая группа будет иметь п элементов (а, б, в, г). Вторая группа будет иметь один элемент, поэтому окончательный вывод будет декартовым.
Синтаксис должен быть сделан рекурсивным, поскольку он может перейти к н уровне, как
cross(cross({a,b},{c1}),{c2})
Это означает, пересекают а, Ь с c1. Давайте скажем, результат. Мы снова пересечь его с Y c2
Это может быть до креста п уровня (крест (крест (крест ......
Что я хочу, чтобы иметь объект инициализируется с помощью setparseAction
Таким образом, у меня будет 2 класс
class object1(object):
This will be used by a,b,c,d
class object2(object):
This will hold cross elements
мне нужна помощь по этому вопросу я не могу сделать рекурсивный парсер.
Мне не нужно выражение, которое будет использоваться. Мне нужно это сделать в python, используя только pyparsing. Синтаксис написан исправлен, и я думаю, что это можно сделать с помощью рекурсивного синтаксического анализатора. – 2009-03-11 13:40:26
@asb: Поскольку другие люди не используют рекурсивные парсеры для такого рода вещей, я предлагаю вам быть более успешными, если вы измените определение (а не синтаксис, но способ его определения), чтобы устранить запутанную рекурсию. –