| 
									
										
										
										
											2009-02-19 01:11:45 -05:00
										 |  |  | ! Copyright (C) 2009 Daniel Ehrenberg | 
					
						
							|  |  |  | ! See http://factorcode.org/license.txt for BSD license. | 
					
						
							| 
									
										
										
										
											2009-03-02 13:39:01 -05:00
										 |  |  | USING: tools.test regexp.minimize assocs regexp | 
					
						
							| 
									
										
										
										
											2009-03-07 17:31:46 -05:00
										 |  |  | accessors regexp.transition-tables regexp.parser | 
					
						
							|  |  |  | regexp.classes regexp.negation ;
 | 
					
						
							| 
									
										
										
										
											2009-02-19 01:11:45 -05:00
										 |  |  | IN: regexp.minimize.tests | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-18 13:05:38 -04:00
										 |  |  | { t } [ 1 2 HS{ { 1 2 } } same-partition? ] unit-test | 
					
						
							|  |  |  | { t } [ 2 1 HS{ { 1 2 } } same-partition? ] unit-test | 
					
						
							|  |  |  | { f } [ 2 3 HS{ { 1 2 } } same-partition? ] unit-test | 
					
						
							| 
									
										
										
										
											2009-02-19 01:11:45 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { H{ { 1 1 } { 2 1 } { 3 3 } { 4 3 } } } | 
					
						
							| 
									
										
										
										
											2016-07-18 13:05:38 -04:00
										 |  |  | [ HS{ { 1 1 } { 1 2 } { 2 2 } { 3 3 } { 3 4 } { 4 4 } } partition>classes ] unit-test | 
					
						
							| 
									
										
										
										
											2009-02-19 01:11:45 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-04 16:54:56 -05:00
										 |  |  | : regexp-states ( string -- n )
 | 
					
						
							|  |  |  |     parse-regexp ast>dfa transitions>> assoc-size ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { 3 } [ "ab|ac" regexp-states ] unit-test | 
					
						
							|  |  |  | { 3 } [ "a(b|c)" regexp-states ] unit-test | 
					
						
							|  |  |  | { 1 } [ "((aa*)*)*" regexp-states ] unit-test | 
					
						
							|  |  |  | { 1 } [ "a|((aa*)*)*" regexp-states ] unit-test | 
					
						
							|  |  |  | { 2 } [ "ab|((aa*)*)*b" regexp-states ] unit-test | 
					
						
							|  |  |  | { 4 } [ "ab|cd" regexp-states ] unit-test | 
					
						
							|  |  |  | { 1 } [ "(?i:[a-z]*|[A-Z]*)" regexp-states ] unit-test | 
					
						
							| 
									
										
										
										
											2009-02-19 01:11:45 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2009-02-19 01:11:45 -05:00
										 |  |  |     T{ transition-table | 
					
						
							|  |  |  |         { transitions H{ | 
					
						
							|  |  |  |             { 0 H{ { CHAR: a 1 } { CHAR: b 1 } } } | 
					
						
							|  |  |  |             { 1 H{ { CHAR: a 2 } { CHAR: b 2 } } } | 
					
						
							|  |  |  |             { 2 H{ { CHAR: c 3 } } } | 
					
						
							|  |  |  |             { 3 H{ } } | 
					
						
							|  |  |  |         } } | 
					
						
							|  |  |  |         { start-state 0 } | 
					
						
							| 
									
										
										
										
											2010-03-02 18:05:37 -05:00
										 |  |  |         { final-states HS{ 3 } } | 
					
						
							| 
									
										
										
										
											2009-02-19 01:11:45 -05:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | } [ | 
					
						
							| 
									
										
										
										
											2009-02-19 01:11:45 -05:00
										 |  |  |     T{ transition-table | 
					
						
							|  |  |  |         { transitions H{ | 
					
						
							|  |  |  |             { 0 H{ { CHAR: a 1 } { CHAR: b 4 } } } | 
					
						
							|  |  |  |             { 1 H{ { CHAR: a 2 } { CHAR: b 5 } } } | 
					
						
							|  |  |  |             { 2 H{ { CHAR: c 3 } } } | 
					
						
							|  |  |  |             { 3 H{ } } | 
					
						
							|  |  |  |             { 4 H{ { CHAR: a 2 } { CHAR: b 5 } } } | 
					
						
							|  |  |  |             { 5 H{ { CHAR: c 6 } } } | 
					
						
							|  |  |  |             { 6 H{ } } | 
					
						
							|  |  |  |         } } | 
					
						
							|  |  |  |         { start-state 0 } | 
					
						
							| 
									
										
										
										
											2010-03-02 18:05:37 -05:00
										 |  |  |         { final-states HS{ 3 6 } } | 
					
						
							| 
									
										
										
										
											2009-02-19 01:11:45 -05:00
										 |  |  |     } combine-states | 
					
						
							|  |  |  | ] unit-test | 
					
						
							| 
									
										
										
										
											2009-03-04 01:36:03 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { H{ { T{ or-class f { 2 1 } } 3 } { 4 5 } } } | 
					
						
							| 
									
										
										
										
											2009-03-07 17:31:46 -05:00
										 |  |  | [ H{ { 1 3 } { 2 3 } { 4 5 } } combine-state-transitions ] unit-test |