Versions in this module Expand all Collapse all v0 v0.5.0 Oct 31, 2020 Changes in this version + var Literal = ExprFirst(literal) + type AnnotatedNode struct + Annotation string + Node Node + func NewAnnotatedNode(node Node, annotation string) *AnnotatedNode + func (an *AnnotatedNode) Children() []Node + func (an *AnnotatedNode) Location() scanner.Location + func (an *AnnotatedNode) String() string + type BaseState struct + Tab Table + func (bs *BaseState) Table() Table + type BinaryOperator struct + L Node + Loc scanner.Location + Op *lexer.Token + R Node + func (b *BinaryOperator) Children() []Node + func (b *BinaryOperator) Location() scanner.Location + func (b *BinaryOperator) String() string type ExprFirst + func Prefix(factory func(p *Parser, op *lexer.Token, exp Node) (Node, error), power int) ExprFirst type ExprNext + func Infix(factory func(p *Parser, l, r Node, op *lexer.Token) (Node, error)) ExprNext + func InfixR(factory func(p *Parser, l, r Node, op *lexer.Token) (Node, error)) ExprNext + type IPushBackLexer interface + PushBack func(tok *lexer.Token) + type Node interface + Children func() []Node + Location func() scanner.Location + String func() string + func BinaryFactory(p *Parser, l, r Node, op *lexer.Token) (Node, error) + func UnaryFactory(p *Parser, op *lexer.Token, exp Node) (Node, error) type Parser + Lexer IPushBackLexer + State State + type PushBackLexer struct + Lexer lexer.ILexer + func NewPushBackLexer(l lexer.ILexer) *PushBackLexer + func (pbl *PushBackLexer) Next() *lexer.Token + func (pbl *PushBackLexer) PushBack(tok *lexer.Token) + type TokenNode struct + func (tn *TokenNode) Children() []Node + type UnaryOperator struct + Exp Node + Loc scanner.Location + Op *lexer.Token + func (u *UnaryOperator) Children() []Node + func (u *UnaryOperator) Location() scanner.Location + func (u *UnaryOperator) String() string v0.4.0 Mar 18, 2020 v0.3.0 Mar 15, 2020 v0.2.0 Mar 13, 2020 Changes in this version type MockParser + func (m *MockParser) Table() Table type MockState + func (m *MockState) AppState() interface{} + func (m *MockState) Parser() Parser + func (m *MockState) PopAppState() interface{} + func (m *MockState) PushAppState(state interface{}) + func (m *MockState) SetAppState(state interface{}) interface{} + type Option func(state State) + func AppState(state interface{}) Option type Parser + Table func() Table type State + AppState func() interface{} + Parser func() Parser + PopAppState func() interface{} + PushAppState func(state interface{}) + SetAppState func(state interface{}) interface{} v0.1.1 Mar 13, 2020 v0.1.0 Mar 12, 2020 Changes in this version + var ErrExpectedToken = errors.New("No tokens available") + var ErrNoTable = errors.New("Programming error: Parse table missing") + var ErrSplitLocation = errors.New("Attempt to range file location through an incompatible location") + var ErrUnexpectedToken = errors.New("Unexpected token") + var ErrUnknownTokenType = errors.New("Unknown token type") + func ExpectedToken(types ...string) error + func UnexpectedToken(tok *common.Token, types ...string) error + func UnknownTokenType(tok *common.Token, types ...string) error + type Entry struct + First ExprFirst + Next ExprNext + Power int + Stmt Statement + type ExprFirst func(p Parser, state State, power int, tok *common.Token) (common.Node, error) + type ExprNext func(p Parser, state State, power int, left common.Node, tok *common.Token) (common.Node, error) + type MockParser struct + func (m *MockParser) Expression(stream common.TokenStream) (common.Node, error) + func (m *MockParser) Statement(stream common.TokenStream) (common.Node, error) + func (m *MockParser) Statements(stream common.TokenStream) ([]common.Node, error) + type MockState struct + func (m *MockState) Expression(p Parser, rbp int) (common.Node, error) + func (m *MockState) MoreTokens() bool + func (m *MockState) NextToken() *common.Token + func (m *MockState) PopStream() common.TokenStream + func (m *MockState) PopTable() Table + func (m *MockState) PushStream(ts common.TokenStream) + func (m *MockState) PushTable(tab Table) + func (m *MockState) PushToken(tok *common.Token) + func (m *MockState) SetStream(ts common.TokenStream) common.TokenStream + func (m *MockState) SetTable(tab Table) Table + func (m *MockState) Statement(p Parser) (common.Node, error) + func (m *MockState) Stream() common.TokenStream + func (m *MockState) Table() Table + func (m *MockState) Token() *common.Token + type Parser interface + Expression func(stream common.TokenStream) (common.Node, error) + Statement func(stream common.TokenStream) (common.Node, error) + Statements func(stream common.TokenStream) ([]common.Node, error) + func New(table Table) Parser + type State interface + Expression func(p Parser, rbp int) (common.Node, error) + MoreTokens func() bool + NextToken func() *common.Token + PopStream func() common.TokenStream + PopTable func() Table + PushStream func(ts common.TokenStream) + PushTable func(tab Table) + PushToken func(tok *common.Token) + SetStream func(ts common.TokenStream) common.TokenStream + SetTable func(tab Table) Table + Statement func(p Parser) (common.Node, error) + Stream func() common.TokenStream + Table func() Table + Token func() *common.Token + func NewState(table Table, stream common.TokenStream) State + type Statement func(p Parser, state State, tok *common.Token) (common.Node, error) + type Table map[string]Entry