示例#1
0
 def test_ab_babb_bb( self ):
     words = [ 'ab' , 'babb' , 'bb' ]
     d = build_dma_default( words )
     # check automaton
     self.assertEqual( d.to_dict() , { 'initial':0 , 'finals':[ 2 , 5 , 6 , 7 ] , 'outputs':{ 2:[ 'ab' ] , 5:[ 'ab' ] , 6:[ 'babb' , 'bb' ] , 7:[ 'bb' ] }, 'transitions':{ 0:{ 'a':1 , 'b':3 } , 1:{ 'a':1 , 'b':2 } , 2:{ 'a':4 , 'b':7 } , 3:{ 'a':4 , 'b':7 } , 4:{ 'a':1 , 'b':5 } , 5:{ 'a':4 , 'b':6 } , 6:{ 'a':4 , 'b':7 } , 7:{ 'a':4 , 'b':7 } } } )
     # test det_search on babba
     # babba
     # 012345
     self.assertEqual( d.det_search( 'babba' ) , [ ( 'ab' , 1 , 3 ) , ( 'babb' , 0 , 4 ) , ( 'bb' , 2 , 4 ) ] )
示例#2
0
 def test_aa_abaaa_abab( self ):
     words = [ 'aa' , 'abaaa' , 'abab' ]
     d = build_dma_default( words )
     # check automaton
     self.assertEqual( d.to_dict() , { 'initial':0 , 'finals':[ 2 , 5 , 6 , 7 ] , 'outputs':{ 2:[ 'aa' ] , 5:[ 'aa' ] , 6:[ 'aa' , 'abaaa' ] , 7:[ 'abab' ] } , 'transitions':{ 0:{ 'a':1 , 'b':0 } , 1:{ 'a':2 , 'b':3 } , 2:{ 'a':2 , 'b':3 } , 3:{ 'a':4 , 'b':0 } , 4:{ 'a':5 , 'b':7 } , 5:{ 'a':6 , 'b':3 } , 6:{ 'a':2 , 'b':3 } , 7:{ 'a':4 , 'b':0 } } } )
     # check accepted words
     self.assertFalse( d.accept( '' ) )
     self.assertFalse( d.accept( 'a' ) )
     self.assertFalse( d.accept( 'b' ) )
     self.assertTrue( d.accept( 'aa' ) )
     self.assertFalse( d.accept( 'ab' ) )
     self.assertTrue( d.accept( 'abab' ) )
     self.assertTrue( d.accept( 'abaaa' ) )
     self.assertFalse( d.accept( 'c' ) )
     self.assertFalse( d.accept( 'ac' ) )
示例#3
0
 def test_ab_babb_bb(self):
     words = ['ab', 'babb', 'bb']
     d = build_dma_default(words)
     # check automaton
     self.assertEqual(d.to_dict(), {'initial': 0, 'finals': {2, 5, 6, 7},
                                    'outputs': {2: ['ab'], 5: ['ab'], 6: ['babb', 'bb'], 7: ['bb']},
                                    'transitions': {0: {'a': 1, 'b': 3}, 1: {'a': 1, 'b': 2}, 2: {'a': 4, 'b': 7},
                                                    3: {'a': 4, 'b': 7}, 4: {'a': 1, 'b': 5}, 5: {'a': 4, 'b': 6},
                                                    6: {'a': 4, 'b': 7}, 7: {'a': 4, 'b': 7}}})
     # test search on babba
     # babba
     # 012345
     self.assertEqual(d.search('babba'), [('ab', 1, 3), ('babb', 0, 4), ('bb', 2, 4)])
     # test iterative search on babba
     it = d.iterative_search('babba')
     self.assertEqual(next(it), ('ab', 1, 3))
     self.assertEqual(next(it), ('babb', 0, 4))
     self.assertEqual(next(it), ('bb', 2, 4))
示例#4
0
 def test_aa_abaaa_abab(self):
     words = ['aa', 'abaaa', 'abab']
     d = build_dma_default(words)
     # check automaton
     self.assertEqual(d.to_dict(), {'initial': 0, 'finals': {2, 5, 6, 7},
                                    'outputs': {2: ['aa'], 5: ['aa'], 6: ['aa', 'abaaa'], 7: ['abab']},
                                    'transitions': {0: {'a': 1, 'b': 0}, 1: {'a': 2, 'b': 3}, 2: {'a': 2, 'b': 3},
                                                    3: {'a': 4, 'b': 0}, 4: {'a': 5, 'b': 7}, 5: {'a': 6, 'b': 3},
                                                    6: {'a': 2, 'b': 3}, 7: {'a': 4, 'b': 0}}})
     # check accepted words
     self.assertFalse(d.accept(''))
     self.assertFalse(d.accept('a'))
     self.assertFalse(d.accept('b'))
     self.assertTrue(d.accept('aa'))
     self.assertFalse(d.accept('ab'))
     self.assertTrue(d.accept('abab'))
     self.assertTrue(d.accept('abaaa'))
     self.assertFalse(d.accept('c'))
     self.assertFalse(d.accept('ac'))
示例#5
0
 def test_a_ab(self):
     words = ['a', 'ab']
     d = build_dma_default(words)
     # check automaton
     self.assertEqual(d.to_dict(), {'initial': 0, 'finals': {1, 2}, 'outputs': {1: ['a'], 2: ['ab']},
                                    'transitions': {0: {'a': 1, 'b': 0}, 1: {'a': 1, 'b': 2}, 2: {'a': 1, 'b': 0}}})
示例#6
0
 def test_a_ab( self ):
     words = [ 'a' , 'ab' ]
     d = build_dma_default( words )
     # check automaton
     self.assertEqual( d.to_dict() , { 'initial':0 , 'finals':[ 1 , 2 ] , 'outputs':{ 1:[ 'a' ] , 2:[ 'ab' ] } , 'transitions':{ 0:{ 'a':1 , 'b':0 } , 1:{ 'a':1 , 'b':2 } , 2:{ 'a':1 , 'b':0 } } } )
示例#7
0
# -*- coding: utf-8 -*-
# @author <*****@*****.**>

from automaton.dma import build_dma_complete
from automaton.dma import build_dma_default

words = ["aa", "abaaa", "abab"]

dma = build_dma_complete(words)
dma.dump_dot("dma.dot")

dmad = build_dma_default(words)
dmad.dump_dot("dmad.dot")
示例#8
0
# -*- coding: utf-8 -*-
# @author <*****@*****.**>

from automaton.dma import build_dma_complete
from automaton.dma import build_dma_default

words = ['aa', 'abaaa', 'abab']

dma = build_dma_complete(words)
dma.dump_dot('dma.dot')

dmad = build_dma_default(words)
dmad.dump_dot('dmad.dot')