ast

package
v0.0.0-...-8b7caa0 Latest Latest
Warning

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

Go to latest
Published: Nov 25, 2023 License: MIT Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var AdditiveOperators = []string{"-", "+"}
View Source
var MultiplicativeOperators = []string{"*", "/", "&"}

Functions

This section is empty.

Types

type BinaryExpression

type BinaryExpression struct {
	Left     Expression
	Right    Expression
	Operator string
}

func (*BinaryExpression) Kind

func (e *BinaryExpression) Kind() NodeKind

type Expression

type Expression interface {
	Kind() NodeKind
}

type Identifier

type Identifier struct {
	Symbol string
}

func (*Identifier) Kind

func (e *Identifier) Kind() NodeKind

type NilLiteral

type NilLiteral struct{}

func (*NilLiteral) Kind

func (e *NilLiteral) Kind() NodeKind

type NodeKind

type NodeKind string
const (
	NodeKind_Program             NodeKind = "Program"
	NodeKind_Nil                 NodeKind = "Nil"
	NodeKind_NumericLiteral      NodeKind = "NumericLiteral"
	NodeKind_Identifier          NodeKind = "Identifier"
	NodeKind_BinaryExpression    NodeKind = "BinaryExpression"
	NodeKind_FunctionDeclaration NodeKind = "FunctionDeclaration"
)

type NumericLiteral

type NumericLiteral struct {
	Value float64
}

func (*NumericLiteral) Kind

func (e *NumericLiteral) Kind() NodeKind

type Program

type Program struct {
	Body []Expression
}

func BuildAST

func BuildAST(source string) Program

func (*Program) Kind

func (e *Program) Kind() NodeKind

type Token

type Token struct {
	Kind  TokenKind
	Value string
}

func Tokenize

func Tokenize(source string) []Token

type TokenKind

type TokenKind string
const (
	TokenKind_Nil            TokenKind = "Nil"
	TokenKind_Number         TokenKind = "Number"
	TokenKind_Indentifier    TokenKind = "Identifier"
	TokenKind_Let            TokenKind = "Let"
	TokenKind_BinaryOperator TokenKind = "BinaryOperator"
	TokenKind_Equals         TokenKind = "Equals"
	TokenKind_OpenParen      TokenKind = "OpenParen"
	TokenKind_CloseParen     TokenKind = "CloseParen"
	TokenKind_EOF            TokenKind = "EOF"
)

Jump to

Keyboard shortcuts

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