|
|
@ -77,6 +77,9 @@ func getPOSIXClass(str []rune) (bool, string) {
|
|
|
|
// Stores whether the case-insensitive flag has been enabled.
|
|
|
|
// Stores whether the case-insensitive flag has been enabled.
|
|
|
|
var caseInsensitive bool
|
|
|
|
var caseInsensitive bool
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Stores whether the multiline flag has been enabled.
|
|
|
|
|
|
|
|
var multilineMode bool
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
/*
|
|
|
|
The Shunting-Yard algorithm is used to convert the given infix (regeular) expression to postfix.
|
|
|
|
The Shunting-Yard algorithm is used to convert the given infix (regeular) expression to postfix.
|
|
|
|
The primary benefit of this is getting rid of parentheses.
|
|
|
|
The primary benefit of this is getting rid of parentheses.
|
|
|
@ -89,9 +92,11 @@ func shuntingYard(re string, flags ...ReFlag) ([]postfixNode, error) {
|
|
|
|
// Check which flags are enabled
|
|
|
|
// Check which flags are enabled
|
|
|
|
|
|
|
|
|
|
|
|
caseInsensitive = false
|
|
|
|
caseInsensitive = false
|
|
|
|
|
|
|
|
multilineMode = false
|
|
|
|
// In Multiline mode, the newline character is considered a
|
|
|
|
// In Multiline mode, the newline character is considered a
|
|
|
|
// 'dot' character ie. the dot metacharacter matches a newline as well.
|
|
|
|
// 'dot' character ie. the dot metacharacter matches a newline as well.
|
|
|
|
if slices.Contains(flags, RE_MULTILINE) {
|
|
|
|
if slices.Contains(flags, RE_MULTILINE) {
|
|
|
|
|
|
|
|
multilineMode = true
|
|
|
|
notDotChars = []rune{}
|
|
|
|
notDotChars = []rune{}
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
notDotChars = []rune{'\n'}
|
|
|
|
notDotChars = []rune{'\n'}
|
|
|
|