Subversion Repositories programming

Rev

Rev 136 | Rev 138 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 136 Rev 137
Line 150... Line 150...
150
 
150
 
151
        print
151
        print
152
        print
152
        print
153
        print 'Initial State: %s' % (0, )
153
        print 'Initial State: %s' % (0, )
154
        print
154
        print
155
        print ' Final     #   NFA  let1  let2'
-
 
156
        print '------------------------------'
-
 
157
 
-
 
158
        self.__generate_dfa_table()
155
        self.__generate_dfa_table()
-
 
156
        self.__print_dfa_table()
-
 
157
 
-
 
158
    def __print_dfa_table(self):
-
 
159
        header1 = '%-8s%-8s%-20s' % ('Final', 'Number', 'NFA Equiv')
-
 
160
        header2 = ''
-
 
161
 
-
 
162
        for l in self.possible_letters:
-
 
163
            header2 = '%s%-4s' % (header2, l)
-
 
164
 
-
 
165
        heading = '%s %s' % (header1, header2)
-
 
166
        hdr_line = ''
-
 
167
        
-
 
168
        for i in range(len(heading)):
-
 
169
            hdr_line = '%s-' % (hdr_line, )
-
 
170
 
-
 
171
        print heading
-
 
172
        print hdr_line
-
 
173
 
159
        for i in self.dfa_table:
174
        for rec in self.dfa_table:
-
 
175
            line1 = '%-8s%-8s%-20s' % (rec[0], rec[1], rec[2])
160
            tempstr = ''
176
            line2 = ''
161
            for j in i:
177
            
-
 
178
            for l in range(len(self.possible_letters)):
162
                tempstr = '%s%6s' % (tempstr, j)
179
                line2 = '%s%-4s' % (line2, rec[l+3])
163
 
180
 
164
            print tempstr
181
            print '%s %s' % (line1, line2)
165
 
182
 
166
    def __next_states(self, state, letter):
183
    def __next_states(self, state, letter):
167
        """Return the next states for the key (state, letter)"""
184
        """Return the next states for the key (state, letter)"""
168
 
185
 
169
        try:
186
        try:
Line 266... Line 283...
266
 
283
 
267
        # get the list of all letters
284
        # get the list of all letters
268
        possible_letters = []
285
        possible_letters = []
269
 
286
 
270
        for (state, letter) in self.trans_func.keys():
287
        for (state, letter) in self.trans_func.keys():
271
            if letter not in possible_letters:
288
            if letter not in possible_letters and letter != '^':
272
                possible_letters.append(letter)
289
                possible_letters.append(letter)
273
 
290
 
274
        self.possible_letters = possible_letters
291
        self.possible_letters = possible_letters
275
 
292
 
276
        #prime the dfa table
293
        #prime the dfa table