Esempio n. 1
0
# -*- coding: UTF-8 -*-
from read import Read

a = Read()
rpn = a.RPN()


class ToNFA(object):
    def __init__(self):
        super(ToNFA, self).__init__()

    item = set()

    def show(self):
        operatorSet = {'|', '.', '*'}
        nfaStack = []
        nodeNum = 0
        for i in xrange(len(rpn)):
            item = rpn[i]
            if item in operatorSet:
                if item == '.':
                    b = nfaStack.pop()
                    a = nfaStack.pop()
                    del a[a['N']][None]
                    a[a['N']].update(b[b['S']])
                    for key, value in b.items():
                        if key in ['S', 'N']:
                            continue
                        if b['S'] in value.keys():
                            value[a['N']] = value[b['S']]
                            del value[b['S']]