parser

package
v0.3.0 Latest Latest
Warning

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

Go to latest
Published: Mar 24, 2026 License: MIT Imports: 5 Imported by: 0

Documentation

Index

Constants

View Source
const (
	LOWEST    = iota // 最低优先级
	ASSIGN           // 赋值运算符优先级(=, +=, -=, *=, /= 等)
	LOGIC            // 逻辑运算符优先级(&&, ||)
	BIT              // 位运算符优先级(^, &, |, <<, >>)
	EQUALS           // 相等性运算符优先级(==, !=)
	CONTAINS         // 包含运算符优先级(contains)
	COMPARE          // 比较运算符优先级(<, <=, >, >=)
	RANGE            // 范围运算符优先级(..)
	SUM              // 加减运算符优先级(+, -)
	MUL              // 乘除运算符优先级(*, /, %)
	PREFIX           // 前缀运算符优先级(!, -, ~, +)
	POSTFIX          // 后缀运算符优先级(++, --)
	CALL             // 函数调用优先级(fn())
	NAMESPACE        // 命名空间访问符优先级(::)
)

运算符优先级常量定义,数值越大优先级越高

Variables

This section is empty.

Functions

This section is empty.

Types

type Parser

type Parser struct {
	L              *lexer.Lexer                                              // 词法分析器实例
	CurrToken      *lexer.Token                                              // 当前正在处理的token
	NextToken      *lexer.Token                                              // 下一个待处理的token
	Err            error                                                     // 解析过程中产生的错误
	PrefixParseFns map[string]func(*util.Pos) ast.Expression                 // 前缀表达式解析函数映射表
	InfixParseFns  map[string]func(ast.Expression, *util.Pos) ast.Expression // 中缀表达式解析函数映射表
}

Parser 语法解析器结构体,负责将词法分析器产生的token流解析为AST

func NewParser

func NewParser(l *lexer.Lexer) (*Parser, error)

NewParser 创建一个新的语法解析器实例

参数:

l - 词法分析器实例

返回值:

新的Parser实例和可能的初始化错误

func (*Parser) Advance

func (p *Parser) Advance()

Advance 前进到下一个token,更新CurrToken和NextToken

func (*Parser) CheckNextAndAdvance

func (p *Parser) CheckNextAndAdvance(excepted string)

CheckNextAndAdvance 检查下一个token是否为预期类型,如果是则前进,否则设置错误

参数:

excepted - 预期的token类型

func (*Parser) ParseExpression

func (p *Parser) ParseExpression(precedence int) ast.Expression

ParseExpression 解析表达式,根据运算符优先级递归构建表达式节点

参数:

precedence - 当前表达式的最低优先级要求

返回值:

解析得到的表达式节点

func (*Parser) ParseProgram

func (p *Parser) ParseProgram() *ast.Program

ParseProgram 解析整个程序,生成AST的根节点Program

返回值:

包含所有语句的Program节点

type SyntaxError

type SyntaxError struct {
	Message  string    // 错误描述文本
	PosStart *util.Pos // 错误起始位置
	PosEnd   *util.Pos // 错误结束位置
}

SyntaxError 语法错误,表示遇到非法语法 实现 error 接口

func (*SyntaxError) Error

func (e *SyntaxError) Error() string

Error 生成格式化的非法令牌错误信息 包含错误位置、源代码片段和错误类型标识

返回值:

string - 格式化的非法令牌错误信息

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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