d1958f289c 
					 
					
						
						
							
							Commented out tests that would only pass with Longest()  
						
						 
						
						
						
						
					 
					
						2025-02-09 16:08:16 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						15ee49f42e 
					 
					
						
						
							
							Rename method receivers from 'regex' to 're' (it's shorter)  
						
						 
						
						
						
						
					 
					
						2025-02-09 15:51:46 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						b60ded4136 
					 
					
						
						
							
							Don't break when a match is found, if we are looking for the longest match  
						
						 
						
						
						
						
					 
					
						2025-02-09 15:48:33 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						9fbb99f86c 
					 
					
						
						
							
							Wrote example for Longest()  
						
						 
						
						
						
						
					 
					
						2025-02-09 15:47:57 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						af15904f3b 
					 
					
						
						
							
							Updated documentation  
						
						 
						
						
						
						
					 
					
						2025-02-09 15:41:13 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						d522f50b50 
					 
					
						
						
							
							Wrote new example functions  
						
						 
						
						
						
						
					 
					
						2025-02-09 15:40:59 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						fb47e082eb 
					 
					
						
						
							
							Wrote new methods Expand() and preferLongest(); Use new function signatures (with preferLongest); only characters should be added to next state list  
						
						 
						
						
						
						
					 
					
						2025-02-09 15:40:39 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						1f5a363539 
					 
					
						
						
							
							Use new function signatures (with preferLongest)  
						
						 
						
						
						
						
					 
					
						2025-02-09 15:39:09 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						9e12f9dcb3 
					 
					
						
						
							
							Added field to Reg, denoting if we prefer longest match (POSIX style) or not (perl style)  
						
						 
						
						
						
						
					 
					
						2025-02-09 15:38:26 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						47f88c817f 
					 
					
						
						
							
							Fixed typo  
						
						 
						
						
						
						
					 
					
						2025-02-09 15:14:17 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						835d495990 
					 
					
						
						
							
							Removed capitalization for error message (staticcheck)  
						
						 
						
						
						
						
					 
					
						2025-02-09 09:14:45 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						76e0170cb9 
					 
					
						
						
							
							Removed unused function  
						
						 
						
						
						
						
					 
					
						2025-02-09 09:13:52 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						d172a58258 
					 
					
						
						
							
							Throw error if match isn't found but test.result has >0 elements  
						
						 
						
						
						
						
					 
					
						2025-02-09 09:13:29 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						7231169270 
					 
					
						
						
							
							Removed unused functions  
						
						 
						
						
						
						
					 
					
						2025-02-09 09:13:03 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						b7467a00f1 
					 
					
						
						
							
							Removed priorityQueue (unused)  
						
						 
						
						
						
						
					 
					
						2025-02-09 09:07:43 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						c6ad4caa0d 
					 
					
						
						
							
							Removed a bunch of unused code (let's go!!!)  
						
						 
						
						
						
						
					 
					
						2025-02-09 09:06:40 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						6334435b83 
					 
					
						
						
							
							Updated tests since the engine uses Perl matching instead of POSIX matching; added tests for FindStringSubmatch  
						
						 
						
						
						
						
					 
					
						2025-02-09 09:01:42 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						78fb5606dd 
					 
					
						
						
							
							Use new definition of Reg  
						
						 
						
						
						
						
					 
					
						2025-02-09 08:59:16 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						eddd2ae700 
					 
					
						
						
							
							Updated documentation  
						
						 
						
						
						
						
					 
					
						2025-02-09 08:58:58 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						c577064977 
					 
					
						
						
							
							Added string field to Reg, that contains the expression string; wrote method to return the string  
						
						 
						
						
						
						
					 
					
						2025-02-09 08:58:46 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						d4e3942d27 
					 
					
						
						
							
							Added Match() and FindStringSubmatch(); removed old code; updated comments  
						
						 
						
						
						
						
					 
					
						2025-02-09 08:58:09 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						f15a5cae34 
					 
					
						
						
							
							Store all states visited in a single run of 'addStateToList()' in a slice  
						
						 
						
						
						
						
					 
					
						2025-02-08 16:07:01 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						62ca1a872a 
					 
					
						
						
							
							Made zeroLengthMatchState() return a pointer; reduced the number of comparisons performd by nfaState.equals  
						
						 
						
						
						
						
					 
					
						2025-02-08 16:06:14 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						99230b49de 
					 
					
						
						
							
							Use new function signature for zeroLengthMatchState()  
						
						 
						
						
						
						
					 
					
						2025-02-08 16:05:35 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						22ead83625 
					 
					
						
						
							
							Fixed assertion matching  
						
						 
						
						
						
						
					 
					
						2025-02-07 16:19:36 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						3604486a9b 
					 
					
						
						
							
							Used Pike's algorithm (an extension to Thompson's algorithm) (see Russ Cox's 2nd article); I think I almost have a working PCRE-style engine  
						
						 
						
						
						
						
					 
					
						2025-02-07 16:06:45 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						052de55826 
					 
					
						
						
							
							question() now returns 2 values  
						
						 
						
						
						
						
					 
					
						2025-02-07 16:04:46 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						d2ad0d95a8 
					 
					
						
						
							
							Modified question operator so that it doesn't create an unnecessary zero-state  
						
						 
						
						
						
						
					 
					
						2025-02-07 16:04:26 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						ccf3b3b299 
					 
					
						
						
							
							More progress on implementing PCRE matching  
						
						 
						
						
						
						
					 
					
						2025-02-06 22:08:56 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						1d4f695f8f 
					 
					
						
						
							
							Wrote function to check if a state is in an nfaState, based on the Equals function  
						
						 
						
						
						
						
					 
					
						2025-02-06 22:06:51 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						8534174ea1 
					 
					
						
						
							
							Use pointers instead of values  
						
						 
						
						
						
						
					 
					
						2025-02-06 22:06:22 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						ed4ffde64e 
					 
					
						
						
							
							REFACTOR NEEDED: Added another special case; insert instead of appending into currentStates  
						
						 
						
						
						
						
					 
					
						2025-02-05 22:51:55 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						fbc9bea9fb 
					 
					
						
						
							
							Commented out unused functions; use new nfaState parameters  
						
						 
						
						
						
						
					 
					
						2025-02-05 22:23:31 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						cca8c7cda2 
					 
					
						
						
							
							Got rid of transitions parameter, changed how kleene state is processed  
						
						 
						
						... 
						
						
						
						I replaced the transition parameter for nfaState, replacing it with a
single nfaState pointer. This is because any non-alternation state will
only have one next state, so the map was just added complexity.
I changed alternation processing - instead of having their own dedicated
fields, they just use the new 'next' parameter, and another one called
'splitState'.
I also changed the kleene state processing to remove the unecessary
empty state in the right-side alternation (it actually messed up my
matching). 
						
						
					 
					
						2025-02-05 22:20:28 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						858e535fba 
					 
					
						
						
							
							Continued implementing Thompson's algorithm  
						
						 
						
						
						
						
					 
					
						2025-02-05 18:01:36 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						7c62ba6bfd 
					 
					
						
						
							
							Started implementing Thompson's algorithm for matching, because the old one was completely backtracking (so it would enter infinite loops on something like '(a*)*' )  
						
						 
						
						... 
						
						
						
						The git diff claims that a ton of code was changed, but most of it was just indentation changes. 
						
						
					 
					
						2025-02-05 12:21:12 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						d4e8cb74fd 
					 
					
						
						
							
							Replaced pointer to nfaState with nfaState  
						
						 
						
						
						
						
					 
					
						2025-02-05 11:32:20 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						3ce611d121 
					 
					
						
						
							
							More work towards implementing PCRE matching  
						
						 
						
						
						
						
					 
					
						2025-02-04 14:09:24 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						e0253dfaf3 
					 
					
						
						
							
							Change kleene() to an alternation-style construct  
						
						 
						
						
						
						
					 
					
						2025-02-04 14:09:04 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						753e973d82 
					 
					
						
						
							
							Started rewrite of matching algorithm, got concatenation and alternation done, kleene and zero-state stuff is next  
						
						 
						
						
						
						
					 
					
						2025-02-03 22:01:52 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						5563a70568 
					 
					
						
						
							
							Reverse the order in which I pop states for alternation, because this messes with the left branch-right branch thing  
						
						 
						
						
						
						
					 
					
						2025-02-03 21:59:41 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						de0d7345a8 
					 
					
						
						
							
							Store left and right branches of alternation separately  
						
						 
						
						
						
						
					 
					
						2025-02-03 21:59:05 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						ad273b0c68 
					 
					
						
						
							
							Trying to emulate backtracking by using string pointers within threads (something similar to rsc's 2nd regexp article)  
						
						 
						
						
						
						
					 
					
						2025-02-03 16:50:11 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						e167cdb2cb 
					 
					
						
						
							
							Fixed mistake in test output  
						
						 
						
						
						
						
					 
					
						2025-02-03 16:49:30 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						1fd48ae614 
					 
					
						
						
							
							Store the current string pointer as a 'thread variable' (allows us to simulate backtracking)  
						
						 
						
						
						
						
					 
					
						2025-02-03 16:49:10 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						fbc9dfcc95 
					 
					
						
						
							
							Trying something out; we'll see if it works  
						
						 
						
						
						
						
					 
					
						2025-02-03 16:47:53 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						bc32e0cb76 
					 
					
						
						
							
							Started working on converting to PCRE matching rules (prefer left branch of alternation)  
						
						 
						
						
						
						
					 
					
						2025-02-03 14:06:14 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						ad0f7d0178 
					 
					
						
						
							
							Added new state fields to tell if a state is a question or alternation  
						
						 
						
						
						
						
					 
					
						2025-02-03 14:05:53 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						4e597f8eb1 
					 
					
						
						
							
							Implemented a priority-queue to use while matching  
						
						 
						
						
						
						
					 
					
						2025-02-03 14:05:30 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						ef476e8875 
					 
					
						
						
							
							Reverse the order of the numeric range before adding it, to maintain compatibility with PCRE matching rules (even though I don't implement them, if I do in the future)  
						
						 
						
						
						
						
					 
					
						2025-02-02 13:46:48 -05:00