func (e *Expression) IsOperator() bool {
	return e.IsLogicalOperator() || e.IsRelationalOperator()
}
IsOperator returns true if this Expression holds a SCIM filter operator (either logical or relational).
package expr
import "strings"
const (
	path exprType = iota
	logicalOp
	relationalOp
	literal
	parenthesis
)
type (
	exprType int
	Expression struct {
		token string
		typ   exprType
		next  *Expression
		left  *Expression
		right *Expression
	}
)
func (e *Expression) Token() string {
	return e.token
}
func (e *Expression) Next() *Expression {
	return e.next
}
func (e *Expression) Left() *Expression {
	return e.left
}
func (e *Expression) Right() *Expression {
	return e.right
}
func (e *Expression) IsPath() bool {
	return e.typ == path
}