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"`
FieldReference *string `parser:"| @FieldReference"`
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) ParseExpression ¶ added in v0.65.0
func (pc *ParsingContext) ParseExpression(expr string) (*Expression, error)
ParseExpression parses a SECL expression
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"`
FieldReference *string `parser:"| @FieldReference"`
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
type StringMember ¶
type StringMember struct {
Pos lexer.Position
String *string `parser:"@String"`
Pattern *string `parser:"| @Pattern"`
Regexp *string `parser:"| @Regexp"`
}
StringMember describes a String based array member