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


from pathex.expressions.nary_operators.concatenation import Concatenation
from pathex.expressions.repetitions.concatenation_repetition import \
    ConcatenationRepetition
from pathex.expressions.terms.empty_word import EMPTY_WORD
from pathex.machines.decomposers.visitors.decorators import repetition_visitor

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

__all__ = ['concatenation_repetition_visitor']


[docs]@repetition_visitor def concatenation_repetition_visitor(machine: Decomposer, exp: ConcatenationRepetition) -> Branches: # a*[n,m] = a + a*[n-1,m-1] where n > 0 yield EMPTY_WORD, Concatenation(exp.argument, ConcatenationRepetition( exp.argument, exp.lower_bound-1, exp.upper_bound-1))