2934e7a20f
Wrote tests for backreferences
2025-02-11 19:12:40 -05:00
f466d4a8d5
More progress on backreference implementation
2025-02-11 17:06:39 -05:00
8327450dd2
Started implementing backreferences (octal values should now be prefaced with \0)
2025-02-11 16:14:54 -05:00
073f231b89
Added function and examples for ReplaceAllFunc()
2025-02-10 21:35:51 -05:00
3b7257c921
Wrote function and example for ReplaceAllLiteral()
2025-02-10 21:25:49 -05:00
668df8b70a
Wrote MarshalText() and UnmarshalText() to implement TextMarshaler and TextUnmarshaler
2025-02-10 12:30:48 -05:00
214acf7e0f
Wrote example for ReplaceAll(); fixed out-of-bounds bug in Expand()
2025-02-10 12:30:17 -05:00
50221ff4d9
Wrote ReplaceAll(), to replace all matches of the regex with a given string
2025-02-10 12:29:54 -05:00
5ab95f512a
Updated docs
2025-02-10 09:36:00 -05:00
e7da678408
Removed obsolete documentation
2025-02-10 09:35:16 -05:00
ab363e2766
Rewrote test for 'FindString()' to use lookarounds
2025-02-10 09:24:47 -05:00
c803e45415
Added example for 'FindStringSubmatch()'
2025-02-10 09:19:24 -05:00
525296f239
Added examples for 'FindAllString()' , 'FindAllSubmatch()' and 'FindAllStringSubmatch()'
2025-02-10 09:10:39 -05:00
eb0ab9f7ec
Wrote test for FindAllStringSubmatch()
2025-02-10 08:39:20 -05:00
17a7dbae4c
Wrote FindAllStringSubmatch()
2025-02-10 08:39:10 -05:00
f2279acd98
Fixed mistake in docs
2025-02-10 08:12:09 -05:00
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