recognizer

package
v0.0.0-...-2932577 Latest Latest
Warning

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

Go to latest
Published: Jun 6, 2021 License: MIT Imports: 1 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrUnknownDomain = errors.New("unknown domain")
)

Возможные ошибки лексического анализа

Functions

This section is empty.

Types

type BracketToken

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

BracketToken представляет скобку

func (*BracketToken) Attr

func (t *BracketToken) Attr() interface{}

Attr возвращает код идентификатора представляемый целым числом

func (*BracketToken) Coords

func (t *BracketToken) Coords() Fragment

func (*BracketToken) Domain

func (t *BracketToken) Domain() Domain

type Domain

type Domain int

Domain представляет лексический домен

const (
	// WhitespaceDomain представляет лексический домен пробельных символов.
	WhitespaceDomain Domain = iota
	// IdentifierDomain представляет лексический домен идентификаторов.
	IdentifierDomain
	// LBracketDomain представляет лексический домен левой скобки.
	LBracketDomain
	// RBracketDomain представляет лексический домен правой скобки.
	RBracketDomain
	// AlternativeDomain представляет домен оператора альтернирования.
	AlternativeDomain
	// SequentialDomain представляет домен оператора последовательного выполнения.
	SequentialDomain
	// ParallelDomain представляет домен оператора параллельного выполнения.
	ParallelDomain
	// EndDomain представляет конец файла
	EndDomain
	// UnknownDomain представляет ошибочный домен
	UnknownDomain Domain = -1
)

func (Domain) String

func (d Domain) String() string

type EndToken

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

EndToken представляет конец программы

func (*EndToken) Attr

func (t *EndToken) Attr() interface{}

func (*EndToken) Coords

func (t *EndToken) Coords() Fragment

func (*EndToken) Domain

func (t *EndToken) Domain() Domain

type Fragment

type Fragment struct {
	Starting Position
	Ending   Position
}

Fragment задает координаты фрагмента исходного кода

type IdentifierToken

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

IdentifierToken представляет идентификатор

func (*IdentifierToken) Attr

func (t *IdentifierToken) Attr() interface{}

Attr возвращает код идентификатора представляемый целым числом

func (*IdentifierToken) Coords

func (t *IdentifierToken) Coords() Fragment

func (*IdentifierToken) Domain

func (t *IdentifierToken) Domain() Domain

type JumpTable

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

JumpTable задает функцию переходов лексического распознавателя в виде таблицы

func NewJumpTable

func NewJumpTable(table [][]int, factorization map[byte]int) JumpTable

NewJumpTable создает JumpTable

func (*JumpTable) Next

func (t *JumpTable) Next(state int, symbol byte) int

Next возвращает состояние, в которое осуществляется переход из state по символу symbol

type LexicalRecognizer

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

LexicalRecognizer конечный автомат, который выделяет токены в программе

func NewLexicalRecognizer

func NewLexicalRecognizer(prog string) *LexicalRecognizer

NewLexicalRecognizer создает LexicalRecognizer

func (*LexicalRecognizer) NextToken

func (l *LexicalRecognizer) NextToken() (Token, error)

NextToken возвращает следующий токен или синтаксическую ошибку

type OperatorToken

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

OperatorToken представляет оператор языка

func (*OperatorToken) Attr

func (t *OperatorToken) Attr() interface{}

Attr возвращает символ оператора

func (*OperatorToken) Coords

func (t *OperatorToken) Coords() Fragment

func (*OperatorToken) Domain

func (t *OperatorToken) Domain() Domain

type Position

type Position struct {
	Line  int
	Pos   int
	Index int
}

Position задает координаты кодовой точки

type Token

type Token interface {
	Domain() Domain
	Coords() Fragment
	Attr() interface{}
}

Token абстрактный токен, содержащий основные методы

type WhitespaceToken

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

WhitespaceToken представляет пробельные символы

func (*WhitespaceToken) Attr

func (t *WhitespaceToken) Attr() interface{}

func (*WhitespaceToken) Coords

func (t *WhitespaceToken) Coords() Fragment

func (*WhitespaceToken) Domain

func (t *WhitespaceToken) Domain() Domain

Jump to

Keyboard shortcuts

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