Using DSL grammar
Using Domain-specific Language (DSL) grammar, you can combine different regex expressions in intuitive ways to bring out new functionality while creating custom profiler rules.
The two behaviors available in this framework are the following:
falseIdentity- Always evaluates to false, regardless of the input.trueIdentity- Always evaluates to true, regardless of the input.
These two behaviors are used in the following examples and descriptions.
Binary AND operator
Keyword: AND
AND works the same way it does other languages. Hence following
observations.
falseIdentity and trueIdentity == falseIdentity
falseIdentity and falseIdentity == falseIdentity
trueIdentity and trueIdentity == trueIdentity
trueIdentity and falseIdentity == falseIdentity
Here we are using == to show their equality.
Binary OR operator
The OR operator works the same way it does in other languages.
falseIdentity or trueIdentity == trueIdentity
falseIdentity or falseIdentity == falseIdentity
trueIdentity or trueIdentity == trueIdentity
trueIdentity or falseIdentity == trueIdentity
Expand DSL to use as follows.
val rule1= falseIdentity and trueIdentity and trueIdentity
val rule2= trueIdentity and trueIdentity and trueIdentity
val rule3=rule1 and rule2
rule3 or trueIdentity
The above expression evaluates to true.
Unary NOT operator
The NOT operator negates the value of a regex expression ( from
TRUE to FALSE and vice versa).
not(falseIdentity) == trueIdentity
not(trueIdentity) == falseIdentity
Use the not operator as follows.
val rule1= falseIdentity and trueIdentity and trueIdentity
val rule2= trueIdentity and trueIdentity and trueIdentity
val rule3=rule1 and rule2
val rule4=rule3 or trueIdentity
rule4 and not(falseIdentity)
The above expression evaluates to true.
