Documentation ¶
Overview ¶
Package ast holds ast related files
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ArithmeticElement ¶ added in v0.46.0
type ArithmeticElement struct { Op string `parser:"@( \"+\" | \"-\" )"` Operand *BitOperation `parser:"@@"` }
ArithmeticElement defines an arithmetic element
type ArithmeticOperation ¶ added in v0.46.0
type ArithmeticOperation struct { Pos lexer.Position First *BitOperation `parser:"@@"` Rest []*ArithmeticElement `parser:"[ @@ { @@ } ]"` }
ArithmeticOperation describes an arithmetic operation
type Array ¶
type Array struct { Pos lexer.Position CIDR *string `parser:"@CIDR"` Variable *string `parser:"| @Variable"` Ident *string `parser:"| @Ident"` StringMembers []StringMember `parser:"| \"[\" @@ { \",\" @@ } \"]\""` CIDRMembers []CIDRMember `parser:"| \"[\" @@ { \",\" @@ } \"]\""` Numbers []int `parser:"| \"[\" @Int { \",\" @Int } \"]\""` Idents []string `parser:"| \"[\" @Ident { \",\" @Ident } \"]\""` }
Array describes an array of values
type ArrayComparison ¶
type ArrayComparison struct { Pos lexer.Position Op *string `parser:"( @( \"in\" | \"not\" \"in\" | \"allin\" )"` Array *Array `parser:"@@ )"` }
ArrayComparison describes an operation that tests membership in an array
type BitOperation ¶
type BitOperation struct { Pos lexer.Position Unary *Unary `parser:"@@"` Op *string `parser:"[ @( \"&\" | \"|\" | \"^\" )"` Next *BitOperation `parser:"@@ ]"` }
BitOperation describes an operation on bits
type BooleanExpression ¶
type BooleanExpression struct { Pos lexer.Position Expression *Expression `parser:"@@"` }
BooleanExpression describes a boolean expression
type CIDRMember ¶ added in v0.36.0
type CIDRMember struct { Pos lexer.Position IP *string `parser:"@IP"` CIDR *string `parser:"| @CIDR"` }
CIDRMember describes a CIDR based array member
type Comparison ¶
type Comparison struct { Pos lexer.Position ArithmeticOperation *ArithmeticOperation `parser:"@@"` ScalarComparison *ScalarComparison `parser:"[ @@"` ArrayComparison *ArrayComparison `parser:"| @@ ]"` }
Comparison describes a comparison
type Expression ¶
type Expression struct { Pos lexer.Position Comparison *Comparison `parser:"@@"` Op *string `parser:"[ @( \"|\" \"|\" | \"or\" | \"&\" \"&\" | \"and\" )"` Next *BooleanExpression `parser:"@@ ]"` }
Expression describes an expression
type Macro ¶
type Macro struct { Pos lexer.Position Expression *Expression `parser:"@@"` Array *Array `parser:"| @@"` Primary *Primary `parser:"| @@"` }
Macro describes a SECL macro
type ParsingContext ¶ added in v0.42.0
type ParsingContext struct {
// contains filtered or unexported fields
}
ParsingContext defines a parsing context
func NewParsingContext ¶ added in v0.42.0
func NewParsingContext(withRuleCache bool) *ParsingContext
NewParsingContext returns a new parsing context
func (*ParsingContext) ParseMacro ¶ added in v0.42.0
func (pc *ParsingContext) ParseMacro(expr string) (*Macro, error)
ParseMacro parses a SECL macro
type Primary ¶
type Primary struct { Pos lexer.Position Ident *string `parser:"@Ident"` CIDR *string `parser:"| @CIDR"` IP *string `parser:"| @IP"` Number *int `parser:"| @Int"` Variable *string `parser:"| @Variable"` String *string `parser:"| @String"` Pattern *string `parser:"| @Pattern"` Regexp *string `parser:"| @Regexp"` Duration *int `parser:"| @Duration"` SubExpression *Expression `parser:"| \"(\" @@ \")\""` }
Primary describes a single operand. It can be a simple identifier, a number, a string or a full expression in parenthesis
type Rule ¶
type Rule struct { Pos lexer.Position Expr string BooleanExpression *BooleanExpression `parser:"@@"` }
Rule describes a SECL rule
type ScalarComparison ¶
type ScalarComparison struct { Pos lexer.Position Op *string `parser:"@( \">\" \"=\" | \">\" | \"<\" \"=\" | \"<\" | \"!\" \"=\" | \"=\" \"=\" | \"=\" \"~\" | \"!\" \"~\" )"` Next *Comparison `parser:"@@"` }
ScalarComparison describes a scalar comparison : the operator with the right operand