Source code for pathex.machines.decomposers.visitors.concatenation_visitor

from pathex.machines.decomposers.visitors.decorators import nary_operator_visitor
from pathex.expressions.nary_operators.concatenation import Concatenation
from pathex.expressions.terms.empty_word import EMPTY_WORD

from pathex.machines.decomposers.decomposer import Branches, Decomposer

__all__ = ['concatenation_visitor']

[docs]@nary_operator_visitor def concatenation_visitor(decomposer: Decomposer, exp: Concatenation) -> Branches: for head, tail in decomposer._transform(exp.args_head): tail = Concatenation(exp.args_tail) if tail is EMPTY_WORD \ else Concatenation(tail, *exp.args_tail) yield head, tail