00902944f6 
					 
					
						
						
							
							Added code to match capturing groups and store into a Group (used to be MatchIndex)  
						
						
						
						
					 
					
						2024-12-09 01:28:18 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						80ea262064 
					 
					
						
						
							
							Updated test-case structs to reflect the name of the new type  
						
						
						
						
					 
					
						2024-12-09 01:06:18 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						f5eb9c8218 
					 
					
						
						
							
							Defined postfixNodes for LPAREN and RPAREN  
						
						
						
						
					 
					
						2024-12-09 01:05:47 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						20fbd20994 
					 
					
						
						
							
							Added helper function to expand a slice to a given length  
						
						
						
						
					 
					
						2024-12-09 01:05:26 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						11f7f1d746 
					 
					
						
						
							
							Added fields to state, to determine capturing group information. 0th group refers to entire match  
						
						
						
						
					 
					
						2024-12-09 01:05:01 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						822d1f319f 
					 
					
						
						
							
							Added initial support for capturing groups  
						
						
						
						
					 
					
						2024-12-09 01:04:31 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						745fab9639 
					 
					
						
						
							
							Clone lookaroundNFA when cloning a state; use compiled regex for  
						
						... 
						
						
						
						lookarounds instead of compiling a new one 
						
						
					 
					
						2024-11-27 12:15:30 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						34e9aedbd6 
					 
					
						
						
							
							Compile lookaround regex to avoid compiling each time we want to use it  
						
						
						
						
					 
					
						2024-11-27 12:15:01 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						6208f32710 
					 
					
						
						
							
							Added support for numeric ranges: <5-38> will match all numbers between 5 and 38, inclusive on both ends. Also print line number on which matches occur, if we are in printing (and single line) mode  
						
						
						
						
					 
					
						2024-11-27 11:48:04 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						cbd6ea136b 
					 
					
						
						
							
							If the NFA starts with an assertion, make sure it's true before doing anything else. Also, check for last-state _lookaround_ rather than just last state, before breaking (instead of aborting) when the assertion fails  
						
						
						
						
					 
					
						2024-11-27 11:46:38 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						eb6a044ecf 
					 
					
						
						
							
							Added angle brackets to list of special characters (which need to be escaped to be used literally  
						
						
						
						
					 
					
						2024-11-27 11:45:27 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						393769f152 
					 
					
						
						
							
							Accounted for last character being a newline when checking for EOS (we can be at the second-last character if the last one is a newline  
						
						
						
						
					 
					
						2024-11-27 11:44:39 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						e36310b32d 
					 
					
						
						
							
							Added function (and helper functions) to generate a regex that matches all numbers in a range  
						
						
						
						
					 
					
						2024-11-27 11:43:57 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						298285e44c 
					 
					
						
						
							
							Added more test cases  
						
						
						
						
					 
					
						2024-11-27 11:43:34 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						0de3a94ce3 
					 
					
						
						
							
							Fixed bug with lookaheads: f(?=f) would not match anything in 'ffa', because of the 'a' at the end of the string. Fixed by checking if there are other last states when an assertion fails, rather than immediately aborting  
						
						
						
						
					 
					
						2024-11-24 15:04:51 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						fe1136c54c 
					 
					
						
						
							
							Fixed bug with parentheses in lookaround regex; fixed bug with reading last line of test string (if it doesn't end in a newline)  
						
						
						
						
					 
					
						2024-11-24 15:02:58 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						25c333bea4 
					 
					
						
						
							
							Added function to determine if a state is a lookaround  
						
						
						
						
					 
					
						2024-11-24 15:01:06 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						74c177324b 
					 
					
						
						
							
							Added more test cases  
						
						
						
						
					 
					
						2024-11-24 15:00:47 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						7916629c4d 
					 
					
						
						
							
							Added substitute flag - substitute matched text with given text  
						
						
						
						
					 
					
						2024-11-23 10:12:22 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						ee02e7575e 
					 
					
						
						
							
							Added function to generate all case variations of a rune  
						
						
						
						
					 
					
						2024-11-23 09:26:27 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						c87a4b7136 
					 
					
						
						
							
							Added case-insensitve flag  
						
						
						
						
					 
					
						2024-11-23 09:26:11 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						924e2a8dbc 
					 
					
						
						
							
							Added some AI-generated test cases (llama3.1:405b)  
						
						
						
						
					 
					
						2024-11-22 00:12:41 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						21b2d5a2a9 
					 
					
						
						
							
							Added lookaround-related fields to postfixNode struct  
						
						
						
						
					 
					
						2024-11-22 00:12:22 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						77d19cd84e 
					 
					
						
						
							
							Added lookaround-related fields to State struct, added lookaround support to checkAssertion()  
						
						
						
						
					 
					
						2024-11-22 00:11:51 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						051a8551f3 
					 
					
						
						
							
							Match zero-length match at end of string, even if the start node is an assertion (end of string, lookarounds, etc.)  
						
						
						
						
					 
					
						2024-11-22 00:10:58 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						11c0a0552f 
					 
					
						
						
							
							Added support for lokarounds; parsing and adding nodes for different lookarounds  
						
						
						
						
					 
					
						2024-11-22 00:10:15 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						c807d6664e 
					 
					
						
						
							
							Changed generation of characters for non-whitespace, non-digit and non-word characters - it's basically an inverted character class now  
						
						
						
						
					 
					
						2024-11-20 10:39:24 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						d986999001 
					 
					
						
						
							
							Added more tests  
						
						
						
						
					 
					
						2024-11-20 10:38:57 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						ea64ddc88a 
					 
					
						
						
							
							Removed unnecessary duplication of assertion checking  
						
						
						
						
					 
					
						2024-11-20 10:38:41 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						1ba871d618 
					 
					
						
						
							
							Removed dotChars() function, moved notDotChars() setting to main()  
						
						
						
						
					 
					
						2024-11-20 10:38:22 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						1a1a8f4f9c 
					 
					
						
						
							
							Moved flag-checking after flag.Parse()  
						
						
						
						
					 
					
						2024-11-20 10:37:33 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						e882f41400 
					 
					
						
						
							
							Added fields to denote all the characters that an 'allChars' postfixNode _shouldn't_ represent (useful for inverting character classes)  
						
						
						
						
					 
					
						2024-11-20 09:41:37 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						b3ee1fe5e8 
					 
					
						
						
							
							Convert an inverting character class into an 'allChars' node, with the characters marked as exceptions  
						
						
						
						
					 
					
						2024-11-20 09:40:40 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						708a9e1303 
					 
					
						
						
							
							Added field to denote all characters which an 'allChars' node _shouldn't_ match (useful for invertinc character classes  
						
						
						
						
					 
					
						2024-11-20 09:39:24 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						c694c47be7 
					 
					
						
						
							
							Added flag to print match indices, and to enable multi-line mode  
						
						
						
						
					 
					
						2024-11-20 01:06:23 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						2569f52552 
					 
					
						
						
							
							Wrote toString function for MatchIndex  
						
						
						
						
					 
					
						2024-11-20 01:04:31 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						160b2f9215 
					 
					
						
						
							
							Added newline character as an escaped node  
						
						
						
						
					 
					
						2024-11-20 01:04:01 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						992c5a9300 
					 
					
						
						
							
							Replaced isAlphaNum() with isNormalChar(), which returns true if the character isn't special (also returns true for unicode characters, which the previous function didn't  
						
						
						
						
					 
					
						2024-11-20 00:24:43 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						1e0502c6aa 
					 
					
						
						
							
							Added unicode tests  
						
						
						
						
					 
					
						2024-11-20 00:23:57 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						c56d81a335 
					 
					
						
						
							
							Added unicode support to dot metacharacter - it now matches _any_ unicode character (almost)  
						
						
						
						
					 
					
						2024-11-18 16:44:43 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						8a1f1dc621 
					 
					
						
						
							
							Added unicode support  
						
						... 
						
						
						
						Replaced strings with rune-slices, which capture unicode codepoints more
accurately. 
						
						
					 
					
						2024-11-18 10:41:50 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						805766a5ba 
					 
					
						
						
							
							Added support for -l : only print lines with at least one match (or with exactly 0 matches, if -v is enabled  
						
						
						
						
					 
					
						2024-11-18 10:02:34 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						dcd712dceb 
					 
					
						
						
							
							Added support for -o flag: only print matching content  
						
						
						
						
					 
					
						2024-11-18 09:36:16 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						f2b8812b05 
					 
					
						
						
							
							Added support for -v flag, to invert which values are printed in color. Also got rid of unecessary 'else' clause  
						
						
						
						
					 
					
						2024-11-17 22:19:55 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						11641596fa 
					 
					
						
						
							
							Read multiple lines from stdin and apply regex to each one; Convert the array of matchIndex structs into a flat array of indices; speeds up process of checking if we have to print a character in color  
						
						
						
						
					 
					
						2024-11-17 21:49:11 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						b55b80ec6c 
					 
					
						
						
							
							Updated TODO  
						
						... 
						
						
						
						I didn't like the existing capturing group implementation, so I moved
that to a separate branch. This branch does not (at the moment) any code
relating to capturing groups. 
						
						
					 
					
						2024-11-17 21:29:18 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						137ea3c746 
					 
					
						
						
							
							Made findAllMatchesHelper non-recursive, added pruneIndices (improved performance) and more changes  
						
						... 
						
						
						
						I made findAllMatchesHelper a non-recursive function. It now only
returns the first match it finds in the string (so I should probably
rename it).
These indices are collected by findAllMatches and pruned (to
remove overlaps). The overlap function has also been rewritten, to make
it (I believe) less than O(n^2). I also used the uniq_arr type to make
checking for uniqueness O(1) instaed of O(n) (as it was with
unique_append()). This has resulted in massive performance gains.
There's been a lot of changes here, and I probably haven't documented
all of them. 
						
						
					 
					
						2024-11-07 16:16:50 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						9201ed49bd 
					 
					
						
						
							
							Changed type from matchIndex to MatchIndex  
						
						
						
						
					 
					
						2024-11-07 16:12:21 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						9a073aa514 
					 
					
						
						
							
							Added node types for left and right parentheses  
						
						
						
						
					 
					
						2024-11-07 15:55:37 -05:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						7d265495f5 
					 
					
						
						
							
							Got rid of list for uniq_arr (O(n) deletion) and instead have separate method to create list (O(n) list creation)  
						
						
						
						
					 
					
						2024-11-07 15:55:13 -05:00