expression

package
v0.1.11 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 21, 2023 License: MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

View Source
const (
	Quote              = '"'
	LeftRoundBracket   = '('
	RightRoundBracket  = ')'
	LeftSquareBracket  = '['
	RightSquareBracket = ']'
	Minus              = '-'
	Plus               = '+'
	Underline          = '_'
	Translate          = '\\'
	Space              = ' '
	Bitor              = "bitor"
	Dollar             = '$'
	VarSymbol          = '`'
)

Quote rune

Variables

This section is empty.

Functions

func Add

func Add(s rune) (ok bool, isComplete bool, retry bool, err error)

Add for EOF

Types

type Any

type Any interface{}

Any interface

type AnyToken

type AnyToken interface {
	Add(s rune) (bool, bool, bool, error)
	Validate(prevTokens []AnyToken) (AnyToken, error)
	SetStat(stat *TokenStat)
	GetStat() *TokenStat
}

AnyToken make sure is token type

type EOFToken

type EOFToken struct {
	Token
}

EOFToken struct

func (*EOFToken) Validate

func (eof *EOFToken) Validate(tokens []AnyToken) (retryToken AnyToken, err error)

Validate for EOF

type Expression

type Expression struct {
	Parser  *Parser
	Initial bool
}

Expression struct

func New

func New() *Expression

New return Expression

func (*Expression) Parse

func (exp *Expression) Parse(context string) (*Node, error)

Parse parse expression

type Flags

type Flags map[string]bool

Flags map

type IdentifierToken

type IdentifierToken struct {
	Token
}

IdentifierToken identifiers

func (*IdentifierToken) Add

func (identifier *IdentifierToken) Add(s rune) (ok bool, isComplete bool, retry bool, err error)

Add for identifiers

func (*IdentifierToken) Validate

func (identifier *IdentifierToken) Validate(tokens []AnyToken) (retryToken AnyToken, err error)

Validate for IdentifierToken

type Indexs

type Indexs = types.Indexs

Indexs alias

type LeftBracketToken

type LeftBracketToken struct {
	Token
}

LeftBracketToken struct

func (*LeftBracketToken) Add

func (bracket *LeftBracketToken) Add(s rune) (ok bool, isComplete bool, retry bool, err error)

Add for LeftBracketToken

func (*LeftBracketToken) Validate

func (bracket *LeftBracketToken) Validate(tokens []AnyToken) (retryToken AnyToken, err error)

Validate for LeftBracketToken

type LeftSquareBracketToken

type LeftSquareBracketToken struct {
	Token
}

LeftSquareBracketToken struct

func (*LeftSquareBracketToken) Add

func (bracket *LeftSquareBracketToken) Add(s rune) (ok bool, isComplete bool, retry bool, err error)

Add for LeftSquareBracketToken

func (*LeftSquareBracketToken) Validate

func (bracket *LeftSquareBracketToken) Validate(tokens []AnyToken) (retryToken AnyToken, err error)

Validate for LeftSquareBracketToken

type Node

type Node struct {
	Left      *Node    // The left part of the tree
	Right     *Node    // The right part of the tree
	Root      *Node    // The root node, if is a chain object root or a function name node
	Token     AnyToken // Token
	Type      string   // The node type
	Operator  string   // The operator of left and right node
	Arguments []*Node  // If is a parameter of a function
	Function  *Node    // If is a function parameter node, the Function point to the Function node
}

Node struct

type NumberToken

type NumberToken struct {
	Token
	Base     int
	Dicimals Runes
	Power    *NumberToken
}

NumberToken numbers

func (*NumberToken) Add

func (number *NumberToken) Add(s rune) (ok bool, isComplete bool, retry bool, err error)

Add for string

func (*NumberToken) ToNumber

func (number *NumberToken) ToNumber() float64

ToNumber for number token

func (*NumberToken) Validate

func (number *NumberToken) Validate(tokens []AnyToken) (retryToken AnyToken, err error)

Validate for NumberToken

type Operator

type Operator struct {
	Runes    Runes
	Priority int
}

Operator string

type OperatorList

type OperatorList struct {
	Keys   []string
	Values map[string]*Operator
}

OperatorList data

type OperatorToken

type OperatorToken struct {
	CompareIndex int
	Name         string
	Keyword      string
	Maybes       []string
	Exact        *Operator
	Token
}

OperatorToken spaces

func (*OperatorToken) Add

func (op *OperatorToken) Add(s rune) (ok bool, isComplete bool, retry bool, err error)

Add for OperatorToken

func (*OperatorToken) Validate

func (op *OperatorToken) Validate(tokens []AnyToken) (retryToken AnyToken, err error)

Validate for OperatorToken

type Parser

type Parser struct {
	Current AnyToken
	Tokens  []AnyToken
	// round bracket level
	RBLevel int
	// nested round bracket level
	RBSubLevel int
	// square bracket level
	SBLevel int
	// nested square bracket level
	SBSubLevel   int
	BLList       map[int]int
	SLList       map[int]int
	CurBrSqLevel [2]int
	CurSqBrLevel [2]int
	LeftBrackets []*LeftBracketToken
	Asserts      map[int]AnyToken
	TokenIndex   int
	Context      Runes
	IgnoreIndex  int
	TokenStat    *TokenStat
	NextMustBe   ValidateNextFn
	NextValids   int
}

Parser struct

func (*Parser) Add

func (parser *Parser) Add(s rune) error

Add for parser

func (*Parser) Init

func (parser *Parser) Init()

Init parserer

func (*Parser) Next

func (parser *Parser) Next()

Next for Parser

func (*Parser) Reset

func (parser *Parser) Reset()

Reset for parser

func (*Parser) Reuse

func (parser *Parser) Reuse()

Reuse for parser

func (*Parser) SetToken

func (parser *Parser) SetToken(token AnyToken)

SetToken for parser

type RightBracketToken

type RightBracketToken struct {
	Token
}

RightBracketToken struct

func (*RightBracketToken) Add

func (bracket *RightBracketToken) Add(s rune) (ok bool, isComplete bool, retry bool, err error)

Add for SpaceToken

func (*RightBracketToken) Validate

func (bracket *RightBracketToken) Validate(tokens []AnyToken) (retryToken AnyToken, err error)

Validate for RightBracketToken

type RightSquareBracketToken

type RightSquareBracketToken struct {
	Token
}

RightSquareBracketToken struct

func (*RightSquareBracketToken) Add

func (bracket *RightSquareBracketToken) Add(s rune) (ok bool, isComplete bool, retry bool, err error)

Add for SpaceToken

func (*RightSquareBracketToken) Validate

func (bracket *RightSquareBracketToken) Validate(tokens []AnyToken) (retryToken AnyToken, err error)

Validate for RightSquareBracketToken

type Runes

type Runes []rune

Runes rune slice

type SpaceToken

type SpaceToken struct {
	Token
}

SpaceToken spaces

func (*SpaceToken) Add

func (space *SpaceToken) Add(s rune) (ok bool, isComplete bool, retry bool, err error)

Add for SpaceToken

type StringToken

type StringToken struct {
	Token
	Variables []*Indexs
}

StringToken strings

func (*StringToken) Add

func (str *StringToken) Add(s rune) (ok bool, isComplete bool, retry bool, err error)

Add for string

func (*StringToken) Validate

func (str *StringToken) Validate(tokens []AnyToken) (retryToken AnyToken, err error)

Validate for StringToken

type Token

type Token struct {
	IsComplete bool
	IsBegin    bool
	Stat       *TokenStat
}

Token struct

func (*Token) AddBracket

func (token *Token) AddBracket(s rune, bracket rune) (ok bool, isComplete bool, retry bool, err error)

AddBracket for token

func (*Token) GetStat

func (token *Token) GetStat() *TokenStat

GetStat for token

func (*Token) Judge

func (token *Token) Judge() (ok bool, isComplete bool, retry bool, err error)

Judge for token

func (*Token) SetStat

func (token *Token) SetStat(stat *TokenStat)

SetStat for token

func (*Token) Validate

func (token *Token) Validate(tokens []AnyToken) (retryToken AnyToken, err error)

Validate for token

type TokenNode

type TokenNode struct {
	Type string
	Node *Node
	Token
}

TokenNode for translate

func (*TokenNode) Add

func (node *TokenNode) Add(s rune) (ok bool, isComplete bool, retry bool, err error)

Add for nodetoken

type TokenStat

type TokenStat struct {
	StartIndex  int
	Index       int
	ParseIndex  int
	RBLevel     int
	RBSubLevel  int
	SBLevel     int
	SBSubLevel  int
	Logics      Flags
	Context     *Runes
	Values      Runes
	LeftBracket *LeftBracketToken
}

TokenStat struct

type Type

type Type int

Type token

type ValidateNextFn

type ValidateNextFn func(token AnyToken) error

ValidateNextFn func

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL