pyrser/ast/match.py
def populate_from_sequence(seq: list, r: ref(Edge), sr: state.StateRegister):
    """ function that connect each other one sequence of MatchExpr. """
    base_state = r
    # we need to detect the last state of the sequence
    idxlast = len(seq) - 1
    idx = 0
    for m in seq:
        # alternatives are represented by builtin list
        if isinstance(m, list):
            # so recursively connect all states of each alternative sequences.
            for item in m:
                populate_from_sequence(item, r, sr)
        elif isinstance(m, MatchExpr):
            # from the current state, have we a existing edge for this event?
            eX = r().get_next_edge(m)
            if eX is None:
                sX = None
                if idx != idxlast:
                    sX = state.State(sr)
                    sX.matchDefault(base_state().s)
                else:
                    # last state of sequence return to the base
                    sX = base_state().s
                eX = Edge(sX)
                r().next_edge[id(sX)] = eX
                m.attach(r().s, sX, sr)
            r = ref(eX)
        idx += 1
def populate_from_sequence(seq: list, r: ref(Edge), sr: state.StateRegister):
    base_state = r
    # we need to detect the last state of the sequence
    idxlast = len(seq) - 1
    idx = 0
    for m in seq:
        # alternatives are represented by builtin list
        if isinstance(m, list):
            # so recursively connect all states of each alternative sequences.
            for item in m:
                populate_from_sequence(item, r, sr)
        elif isinstance(m, MatchExpr):
            # from the current state, have we a existing edge for this event?
            eX = r().get_next_edge(m)
            if eX is None:
                sX = None
                if idx != idxlast:
                    sX = state.State(sr)
                    sX.matchDefault(base_state().s)
                else:
                    # last state of sequence return to the base
                    sX = base_state().s
                eX = Edge(sX)
                r().next_edge[id(sX)] = eX
                m.attach(r().s, sX, sr)
            r = ref(eX)
        idx += 1
def populate_from_sequence ( seq : list , r : ref ( Edge ) , sr : state . StateRegister ) : base_state = r # we need to detect the last state of the sequence idxlast = len ( seq ) - 1 idx = 0 for m in seq : # alternatives are represented by builtin list if isinstance ( m , list ) : # so recursively connect all states of each alternative sequences. for item in m : populate_from_sequence ( item , r , sr ) elif isinstance ( m , MatchExpr ) : # from the current state, have we a existing edge for this event? eX = r ( ) . get_next_edge ( m ) if eX is None : sX = None if idx != idxlast : sX = state . State ( sr ) sX . matchDefault ( base_state ( ) . s ) else : # last state of sequence return to the base sX = base_state ( ) . s eX = Edge ( sX ) r ( ) . next_edge [ id ( sX ) ] = eX m . attach ( r ( ) . s , sX , sr ) r = ref ( eX ) idx += 1
function that connect each other one sequence of MatchExpr.
function that connect each other one sequence of MatchExpr .