parser

package
v0.9.3 Latest Latest
Warning

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

Go to latest
Published: Jun 14, 2026 License: MIT Imports: 2 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AttributeNode

type AttributeNode struct {
	Name     Node // PrimaryExprNode or IdentStreamNode
	ColonTok *lexer.Token
	Value    Node // may be nil
}

func (*AttributeNode) FirstToken

func (n *AttributeNode) FirstToken() lexer.Token

func (*AttributeNode) LastToken

func (n *AttributeNode) LastToken() lexer.Token

func (*AttributeNode) ToJSON

func (n *AttributeNode) ToJSON() interface{}

type BlockExprNode

type BlockExprNode struct {
	Open  lexer.Token
	Body  []Node
	Close lexer.Token
}

func (*BlockExprNode) FirstToken

func (n *BlockExprNode) FirstToken() lexer.Token

func (*BlockExprNode) LastToken

func (n *BlockExprNode) LastToken() lexer.Token

func (*BlockExprNode) ToJSON

func (n *BlockExprNode) ToJSON() interface{}

type ElementDeclNode

type ElementDeclNode struct {
	Type  lexer.Token
	Name  Node // may be nil
	As    *lexer.Token
	Alias Node
	Attrs Node // ListExprNode, may be nil
	Colon *lexer.Token
	Body  Node // BlockExprNode or expression
}

func (*ElementDeclNode) FirstToken

func (n *ElementDeclNode) FirstToken() lexer.Token

func (*ElementDeclNode) LastToken

func (n *ElementDeclNode) LastToken() lexer.Token

func (*ElementDeclNode) ToJSON

func (n *ElementDeclNode) ToJSON() interface{}

type Error

type Error struct {
	Message  string
	Position lexer.Position
}

func (Error) Error

func (e Error) Error() string

type FuncAppNode

type FuncAppNode struct {
	Callee Node
	Args   []Node
}

func (*FuncAppNode) FirstToken

func (n *FuncAppNode) FirstToken() lexer.Token

func (*FuncAppNode) LastToken

func (n *FuncAppNode) LastToken() lexer.Token

func (*FuncAppNode) ToJSON

func (n *FuncAppNode) ToJSON() interface{}

type IdentStreamNode

type IdentStreamNode struct {
	Tokens []lexer.Token
}

func (*IdentStreamNode) FirstToken

func (n *IdentStreamNode) FirstToken() lexer.Token

func (*IdentStreamNode) LastToken

func (n *IdentStreamNode) LastToken() lexer.Token

func (*IdentStreamNode) ToJSON

func (n *IdentStreamNode) ToJSON() interface{}

type InfixExprNode

type InfixExprNode struct {
	Left  Node
	Op    lexer.Token
	Right Node
}

func (*InfixExprNode) FirstToken

func (n *InfixExprNode) FirstToken() lexer.Token

func (*InfixExprNode) LastToken

func (n *InfixExprNode) LastToken() lexer.Token

func (*InfixExprNode) ToJSON

func (n *InfixExprNode) ToJSON() interface{}

type ListExprNode

type ListExprNode struct {
	Open  lexer.Token
	Items []Node
	Seps  []lexer.Token
	Close lexer.Token
}

func (*ListExprNode) FirstToken

func (n *ListExprNode) FirstToken() lexer.Token

func (*ListExprNode) LastToken

func (n *ListExprNode) LastToken() lexer.Token

func (*ListExprNode) ToJSON

func (n *ListExprNode) ToJSON() interface{}

type LiteralNode

type LiteralNode struct {
	Token lexer.Token
}

func (*LiteralNode) FirstToken

func (n *LiteralNode) FirstToken() lexer.Token

func (*LiteralNode) LastToken

func (n *LiteralNode) LastToken() lexer.Token

func (*LiteralNode) ToJSON

func (n *LiteralNode) ToJSON() interface{}

type Node

type Node interface {
	ToJSON() interface{}
	FirstToken() lexer.Token
	LastToken() lexer.Token
}

type Parser

type Parser struct {
	Errors []Error
	// contains filtered or unexported fields
}

func New

func New(tokens []lexer.Token, source string) *Parser

func (*Parser) Parse

func (p *Parser) Parse() *ProgramNode

type PrimaryExprNode

type PrimaryExprNode struct {
	Expr Node // VariableNode or LiteralNode
}

func (*PrimaryExprNode) FirstToken

func (n *PrimaryExprNode) FirstToken() lexer.Token

func (*PrimaryExprNode) LastToken

func (n *PrimaryExprNode) LastToken() lexer.Token

func (*PrimaryExprNode) ToJSON

func (n *PrimaryExprNode) ToJSON() interface{}

type ProgramNode

type ProgramNode struct {
	Source string
	Body   []Node
	First  lexer.Token // first body token (or EOF)
	Last   lexer.Token // last body token (or EOF)
}

func (*ProgramNode) FirstToken

func (n *ProgramNode) FirstToken() lexer.Token

func (*ProgramNode) LastToken

func (n *ProgramNode) LastToken() lexer.Token

func (*ProgramNode) ToJSON

func (n *ProgramNode) ToJSON() interface{}

type TupleExprNode

type TupleExprNode struct {
	Open  lexer.Token
	Items []Node
	Seps  []lexer.Token
	Close lexer.Token
}

func (*TupleExprNode) FirstToken

func (n *TupleExprNode) FirstToken() lexer.Token

func (*TupleExprNode) LastToken

func (n *TupleExprNode) LastToken() lexer.Token

func (*TupleExprNode) ToJSON

func (n *TupleExprNode) ToJSON() interface{}

type VariableNode

type VariableNode struct {
	Token lexer.Token
}

func (*VariableNode) FirstToken

func (n *VariableNode) FirstToken() lexer.Token

func (*VariableNode) LastToken

func (n *VariableNode) LastToken() lexer.Token

func (*VariableNode) ToJSON

func (n *VariableNode) ToJSON() interface{}

Jump to

Keyboard shortcuts

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