lexer

package
v0.0.0-...-7198e0a Latest Latest
Warning

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

Go to latest
Published: Jun 20, 2022 License: MIT Imports: 8 Imported by: 0

Documentation

Overview

Package lexer (通用)词法分析器模块

Index

Constants

View Source
const EndToken = "$"

EndToken 结束符号常量定义

Variables

This section is empty.

Functions

This section is empty.

Types

type Lexer

type Lexer struct {
	*util.Stream
	// contains filtered or unexported fields
}

Lexer 词法分析器

func NewLexer

func NewLexer(r io.Reader, et string) *Lexer

NewLexer 创建一个新的语法分析器

func (*Lexer) Analyse

func (l *Lexer) Analyse() []*Token

Analyse 分析 Token 列表

func (*Lexer) MakeComment

func (l *Lexer) MakeComment() *Token

MakeComment 分析注释 // 类

func (*Lexer) MakeComment2

func (l *Lexer) MakeComment2() *Token

MakeComment2 分析注释 /* ... */ 类

func (*Lexer) MakeErr

func (l *Lexer) MakeErr(prefix ...string) *Token

MakeErr 创建错误 创建报错

func (*Lexer) MakeNumber

func (l *Lexer) MakeNumber() *Token

MakeNumber 创建数字类型

func (*Lexer) MakeOp

func (l *Lexer) MakeOp() *Token

MakeOp 分析操作符 + - * / % = != < >

func (*Lexer) MakeString

func (l *Lexer) MakeString() *Token

MakeString 分析字符串

func (*Lexer) MakeVarOrKeyword

func (l *Lexer) MakeVarOrKeyword() *Token

MakeVarOrKeyword 分析变量或关键字

type Token

type Token struct {
	Typ    TokenType
	Value  string
	ID     int
	Column int
	Row    int
}

Token 结构体 标识处理每一个词法单元

func Analyse

func Analyse(source string) []*Token

Analyse 分析源代码

func FromFile

func FromFile(path string) []*Token

FromFile 从文件中读入源代码 返回分析后的 Token 列表

func NewToken

func NewToken(t TokenType, v string) *Token

NewToken 创建一个词法对象

func NewTokenWithLocation

func NewTokenWithLocation(t TokenType, v string, row int, column int) *Token

NewTokenWithLocation 创建一个带有位置信息的词法对象

func (*Token) IsBracket

func (t *Token) IsBracket() bool

IsKeyword 判断词法对象是否是括号类型

func (*Token) IsEnd

func (t *Token) IsEnd() bool

IsEnd 判断词法对象是否是结束类型

func (*Token) IsNumber

func (t *Token) IsNumber() bool

IsNumber 判断词法对象是否是数字类型

func (*Token) IsOperator

func (t *Token) IsOperator() bool

IsOperator 判断词法对象是否是操作符类型

func (*Token) IsScalar

func (t *Token) IsScalar() bool

IsScalar 判断词法对象是否是标量类型

func (*Token) IsType

func (t *Token) IsType() bool

IsType 判断词法对象是否是类型定义类型

func (*Token) IsValue

func (t *Token) IsValue() bool

IsValue 判断词法对象是否是变量或者标量

func (*Token) IsVariable

func (t *Token) IsVariable() bool

IsVariable 判断词法对象是否是变量类型

func (*Token) Show

func (t *Token) Show()

Show 输出词法对象 格式化输出结果

type TokenType

type TokenType int
const (
	KEYWORD  TokenType = 1  // 关键字类型为 1
	TYPE     TokenType = 2  // 类型类型为 2
	VARIABLE TokenType = 3  // 变量类型为 3
	OPERATOR TokenType = 4  // 操作符类型为 4
	BRACKET  TokenType = 5  // 括号类型为 5
	STRING   TokenType = 6  // 字符串类型为 6
	FLOAT    TokenType = 7  // 浮点数类型为 7
	BOOLEAN  TokenType = 8  // 布尔类型为 8
	INTEGER  TokenType = 9  // 整数类型为 9
	COMMENT  TokenType = 10 // 注释类型为 10
	ERROR    TokenType = -1 // 错误类型为 -1
	END      TokenType = -2 // 结束类型为 -2
)

func (TokenType) String

func (tt TokenType) String() string

判断 Token 类型 并创建其可输出的字符串 用于提示和输出

Directories

Path Synopsis
Package define 用于定义处理 正则表达式对 输入的字符进行解析
Package define 用于定义处理 正则表达式对 输入的字符进行解析

Jump to

Keyboard shortcuts

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