lexer

package
v0.0.0-...-36354eb Latest Latest
Warning

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

Go to latest
Published: Jun 3, 2024 License: MIT Imports: 3 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var KeywordMap = map[string]TokenType{
	"select": TokenTypeSelect,
	"from":   TokenTypeFrom,
	"where":  TokenTypeWhere,
	"and":    TokenTypeAnd,
	"or":     TokenTypeOr,
	"not":    TokenTypeNot,
	"in":     TokenTypeIn,
	"is":     TokenTypeIs,
	"null":   TokenTypeNull,
	"left":   TokenTypeLeft,
	"right":  TokenTypeRight,
	"inner":  TokenTypeInner,
	"outer":  TokenTypeOuter,
	"join":   TokenTypeJoin,
	"on":     TokenTypeOn,
	"true":   TokenTypeTrue,
	"false":  TokenTypeFalse,
}

Functions

func PrintTokens

func PrintTokens(tokens []Token) string

Types

type BinaryOperator

type BinaryOperator int
const (
	BinaryOperatorEq BinaryOperator = iota
	BinaryOperatorNotEq
	BinaryOperatorLt
	BinaryOperatorLte
	BinaryOperatorGt
	BinaryOperatorGte
)

func (BinaryOperator) String

func (b BinaryOperator) String() string

type Lexer

type Lexer struct {
	// contains filtered or unexported fields
}

func NewLexer

func NewLexer(input string) *Lexer

func (*Lexer) Lex

func (l *Lexer) Lex() ([]Token, error)

type LexerState

type LexerState int
const (
	LexerStateInitial LexerState = iota
	LexerStateIdentifier
	LexerStatePunctuation
	LexerStateNumber
	LexerStateString
)

type SyntaxError

type SyntaxError struct {
	Message  string
	Position int
}

func (SyntaxError) Error

func (e SyntaxError) Error() string

type Token

type Token struct {
	Type     TokenType
	Value    string
	From, To int
}

func Tokenize

func Tokenize(input string) ([]Token, error)

func (Token) String

func (t Token) String() string

type TokenList

type TokenList struct {
	Input  string
	Tokens []Token
}

TokenList is a list of tokens with helper methods to utilise them.

func (*TokenList) Consume

func (t *TokenList) Consume(expected ...TokenType) error

Consume consumes/removes the first token in the list if it matches the expected type.

func (*TokenList) ExpectedEnd

func (t *TokenList) ExpectedEnd() error

func (*TokenList) Get

func (t *TokenList) Get(expected ...TokenType) (Token, error)

Get returns and removes the first token in the list if it matches the expected type.

func (*TokenList) Len

func (t *TokenList) Len() int

func (*TokenList) Peek

func (t *TokenList) Peek(expected ...TokenType) (Token, error)

Peek returns the first token in the list without modifying it, if it matches the expected type.

type TokenType

type TokenType int
const (
	TokenTypeIdentifier TokenType = iota
	TokenTypeString
	TokenTypeNumber

	TokenTypeComma
	TokenTypeDot
	TokenTypeStar
	TokenTypeSemicolon
	TokenTypeOpenParen
	TokenTypeCloseParen
	TokenTypeEq
	TokenTypeNotEq
	TokenTypeLt
	TokenTypeLte
	TokenTypeGt
	TokenTypeGte

	TokenTypeSelect
	TokenTypeFrom
	TokenTypeWhere
	TokenTypeAnd
	TokenTypeOr
	TokenTypeNot
	TokenTypeIn
	TokenTypeIs
	TokenTypeNull
	TokenTypeLeft
	TokenTypeRight
	TokenTypeInner
	TokenTypeOuter
	TokenTypeJoin
	TokenTypeOn
	TokenTypeTrue
	TokenTypeFalse
)

func (TokenType) String

func (t TokenType) String() string

Jump to

Keyboard shortcuts

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