parser

package
v0.3.0 Latest Latest
Warning

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

Go to latest
Published: Jul 26, 2025 License: MIT Imports: 14 Imported by: 0

Documentation

Overview

Copyright 2025 The Hulo Authors. All rights reserved. Use of this source code is governed by a MIT-style license that can be found in the LICENSE file.

Copyright 2025 The Hulo Authors. All rights reserved. Use of this source code is governed by a MIT-style license that can be found in the LICENSE file.

Copyright 2025 The Hulo Authors. All rights reserved. Use of this source code is governed by a MIT-style license that can be found in the LICENSE file.

Copyright 2025 The Hulo Authors. All rights reserved. Use of this source code is governed by a MIT-style license that can be found in the LICENSE file.

Copyright 2025 The Hulo Authors. All rights reserved. Use of this source code is governed by a MIT-style license that can be found in the LICENSE file.

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrFailToParseFile   = errors.New("fail to parse file")
	ErrFailToParseInput  = errors.New("fail to parse input")
	ErrFailToParseReader = errors.New("fail to parse reader")
)

Functions

func ParseReader

func ParseReader(reader io.Reader, opts ...ParserOptions) (*ast.File, error)

func ParseSourceFile

func ParseSourceFile(filename string, opts ...ParserOptions) (*ast.File, error)

func ParseSourceScript

func ParseSourceScript(input string, opts ...ParserOptions) (*ast.File, error)

Types

type Analyzer

type Analyzer struct {
	*generated.BasehuloParserVisitor

	*Tracer
	// contains filtered or unexported fields
}

func NewAnalyzer

func NewAnalyzer(input antlr.CharStream, opts ...ParserOptions) (*Analyzer, error)

func (*Analyzer) VisitAddSubExpression

func (a *Analyzer) VisitAddSubExpression(ctx *generated.AddSubExpressionContext) any

VisitAddSubExpression implements the Visitor interface for AddSubExpression

func (*Analyzer) VisitAssignStatement

func (a *Analyzer) VisitAssignStatement(ctx *generated.AssignStatementContext) any

VisitAssignStatement implements the Visitor interface for AssignStatement

func (*Analyzer) VisitBlock

func (a *Analyzer) VisitBlock(ctx *generated.BlockContext) any

VisitBlock implements the Visitor interface for Block

func (*Analyzer) VisitBreakStatement

func (a *Analyzer) VisitBreakStatement(ctx *generated.BreakStatementContext) any

VisitBreakStatement implements the Visitor interface for BreakStatement

func (*Analyzer) VisitCallExpression

func (a *Analyzer) VisitCallExpression(ctx *generated.CallExpressionContext) any

func (*Analyzer) VisitCallExpressionLinkedList added in v0.2.0

func (a *Analyzer) VisitCallExpressionLinkedList(ctx *generated.CallExpressionLinkedListContext) any

func (*Analyzer) VisitClassBody

func (a *Analyzer) VisitClassBody(ctx *generated.ClassBodyContext) any

VisitClassBody implements the Visitor interface for ClassBody

func (*Analyzer) VisitClassBuiltinMethod

func (a *Analyzer) VisitClassBuiltinMethod(ctx *generated.ClassBuiltinMethodContext) any

VisitClassBuiltinMethod implements the Visitor interface for ClassBuiltinMethod

func (*Analyzer) VisitClassDeclaration

func (a *Analyzer) VisitClassDeclaration(ctx *generated.ClassDeclarationContext) any

VisitClassDeclaration implements the Visitor interface for ClassDeclaration

func (*Analyzer) VisitClassMember

func (a *Analyzer) VisitClassMember(ctx *generated.ClassMemberContext) any

VisitClassMember implements the Visitor interface for ClassMember

func (*Analyzer) VisitClassMethod

func (a *Analyzer) VisitClassMethod(ctx *generated.ClassMethodContext) any

VisitClassMethod implements the Visitor interface for ClassMethod

func (*Analyzer) VisitCommandArgument added in v0.2.0

func (a *Analyzer) VisitCommandArgument(ctx *generated.CommandArgumentContext) any

func (*Analyzer) VisitCommandExpression

func (a *Analyzer) VisitCommandExpression(ctx *generated.CommandExpressionContext) any

func (*Analyzer) VisitCompositeType

func (a *Analyzer) VisitCompositeType(ctx *generated.CompositeTypeContext) any

VisitCompositeType implements the Visitor interface for CompositeType

func (*Analyzer) VisitComptimeExpression

func (a *Analyzer) VisitComptimeExpression(ctx *generated.ComptimeExpressionContext) any

VisitComptimeExpression implements the Visitor interface for ComptimeExpression

func (*Analyzer) VisitConditionalBoolExpression

func (a *Analyzer) VisitConditionalBoolExpression(ctx *generated.ConditionalBoolExpressionContext) any

VisitConditionalBoolExpression implements the Visitor interface for ConditionalBoolExpression

func (*Analyzer) VisitConditionalExpression

func (a *Analyzer) VisitConditionalExpression(ctx *generated.ConditionalExpressionContext) any

VisitConditionalExpression implements the Visitor interface for ConditionalExpression

func (*Analyzer) VisitContinueStatement

func (a *Analyzer) VisitContinueStatement(ctx *generated.ContinueStatementContext) any

VisitContinueStatement implements the Visitor interface for ContinueStatement

func (*Analyzer) VisitDeclareStatement

func (a *Analyzer) VisitDeclareStatement(ctx *generated.DeclareStatementContext) any

VisitDeclareStatement implements the Visitor interface for DeclareStatement

func (*Analyzer) VisitDoWhileStatement

func (a *Analyzer) VisitDoWhileStatement(ctx *generated.DoWhileStatementContext) any

VisitDoWhileStatement implements the Visitor interface for DoWhileStatement

func (*Analyzer) VisitEnumAssociatedConstructor

func (a *Analyzer) VisitEnumAssociatedConstructor(ctx *generated.EnumAssociatedConstructorContext) any

func (*Analyzer) VisitEnumAssociatedField

func (a *Analyzer) VisitEnumAssociatedField(ctx *generated.EnumAssociatedFieldContext) any

func (*Analyzer) VisitEnumAssociatedFields

func (a *Analyzer) VisitEnumAssociatedFields(ctx *generated.EnumAssociatedFieldsContext) any

func (*Analyzer) VisitEnumAssociatedMethods

func (a *Analyzer) VisitEnumAssociatedMethods(ctx *generated.EnumAssociatedMethodsContext) any

func (*Analyzer) VisitEnumAssociatedValue

func (a *Analyzer) VisitEnumAssociatedValue(ctx *generated.EnumAssociatedValueContext) any

func (*Analyzer) VisitEnumBodyADT

func (a *Analyzer) VisitEnumBodyADT(ctx *generated.EnumBodyADTContext) any

func (*Analyzer) VisitEnumBodyAssociated

func (a *Analyzer) VisitEnumBodyAssociated(ctx *generated.EnumBodyAssociatedContext) any

func (*Analyzer) VisitEnumBodySimple

func (a *Analyzer) VisitEnumBodySimple(ctx *generated.EnumBodySimpleContext) any

func (*Analyzer) VisitEnumConstructor

func (a *Analyzer) VisitEnumConstructor(ctx *generated.EnumConstructorContext) any

func (*Analyzer) VisitEnumConstructorDirectInit

func (a *Analyzer) VisitEnumConstructorDirectInit(ctx *generated.EnumConstructorDirectInitContext) any

func (*Analyzer) VisitEnumConstructorInit

func (a *Analyzer) VisitEnumConstructorInit(ctx *generated.EnumConstructorInitContext) any

func (*Analyzer) VisitEnumConstructorName

func (a *Analyzer) VisitEnumConstructorName(ctx *generated.EnumConstructorNameContext) any

func (*Analyzer) VisitEnumConstructorParameters

func (a *Analyzer) VisitEnumConstructorParameters(ctx *generated.EnumConstructorParametersContext) any

func (*Analyzer) VisitEnumDeclaration

func (a *Analyzer) VisitEnumDeclaration(ctx *generated.EnumDeclarationContext) any

VisitEnumDeclaration implements the Visitor interface for EnumDeclaration

func (*Analyzer) VisitEnumField

func (a *Analyzer) VisitEnumField(ctx *generated.EnumFieldContext) any

func (*Analyzer) VisitEnumFieldModifier

func (a *Analyzer) VisitEnumFieldModifier(ctx *generated.EnumFieldModifierContext) any

func (*Analyzer) VisitEnumMethod

func (a *Analyzer) VisitEnumMethod(ctx *generated.EnumMethodContext) any

func (*Analyzer) VisitEnumValue

func (a *Analyzer) VisitEnumValue(ctx *generated.EnumValueContext) any

func (*Analyzer) VisitEnumVariant

func (a *Analyzer) VisitEnumVariant(ctx *generated.EnumVariantContext) any

func (*Analyzer) VisitExpression

func (a *Analyzer) VisitExpression(ctx *generated.ExpressionContext) any

VisitExpression implements the Visitor interface for Expression

func (*Analyzer) VisitExpressionList

func (a *Analyzer) VisitExpressionList(ctx *generated.ExpressionListContext) any

VisitExpressionList implements the Visitor interface for ExpressionList

func (*Analyzer) VisitExpressionStatement

func (a *Analyzer) VisitExpressionStatement(ctx *generated.ExpressionStatementContext) any

VisitExpressionStatement implements the Visitor interface for ExpressionStatement

func (*Analyzer) VisitExternDeclaration

func (a *Analyzer) VisitExternDeclaration(ctx *generated.ExternDeclarationContext) any

VisitExternDeclaration implements the Visitor interface for ExternDeclaration

func (*Analyzer) VisitExternItem

func (a *Analyzer) VisitExternItem(ctx *generated.ExternItemContext) any

VisitExternItem implements the Visitor interface for ExternItem

func (*Analyzer) VisitExternList

func (a *Analyzer) VisitExternList(ctx *generated.ExternListContext) any

VisitExternList implements the Visitor interface for ExternList

func (*Analyzer) VisitFactor

func (a *Analyzer) VisitFactor(ctx *generated.FactorContext) any

VisitFactor implements the Visitor interface for Factor

func (*Analyzer) VisitFile

func (a *Analyzer) VisitFile(ctx *generated.FileContext) any

VisitFile implements the Visitor interface for File

func (*Analyzer) VisitForStatement

func (a *Analyzer) VisitForStatement(ctx *generated.ForStatementContext) any

VisitForStatement implements the Visitor interface for ForStatement

func (*Analyzer) VisitForeachStatement

func (a *Analyzer) VisitForeachStatement(ctx *generated.ForeachStatementContext) any

VisitForeachStatement implements the Visitor interface for ForeachStatement

func (*Analyzer) VisitForeachVariableName

func (a *Analyzer) VisitForeachVariableName(ctx *generated.ForeachVariableNameContext) any

VisitForeachVariableName implements the Visitor interface for ForeachVariableName

func (*Analyzer) VisitFunctionDeclaration

func (a *Analyzer) VisitFunctionDeclaration(ctx *generated.FunctionDeclarationContext) any

VisitFunctionDeclaration implements the Visitor interface for FunctionDeclaration

func (*Analyzer) VisitFunctionReturnValue

func (a *Analyzer) VisitFunctionReturnValue(ctx *generated.FunctionReturnValueContext) any

VisitFunctionReturnValue implements the Visitor interface for FunctionReturnValue

func (*Analyzer) VisitFunctionSignature

func (a *Analyzer) VisitFunctionSignature(ctx *generated.FunctionSignatureContext) any

VisitFunctionSignature implements the Visitor interface for FunctionSignature

func (*Analyzer) VisitFunctionType

func (a *Analyzer) VisitFunctionType(ctx *generated.FunctionTypeContext) any

VisitFunctionType implements the Visitor interface for FunctionType

func (*Analyzer) VisitGenericParameter

func (a *Analyzer) VisitGenericParameter(ctx *generated.GenericParameterContext) any

VisitGenericParameter implements the Visitor interface for GenericParameter

func (*Analyzer) VisitGenericParameterList

func (a *Analyzer) VisitGenericParameterList(ctx *generated.GenericParameterListContext) any

VisitGenericParameterList implements the Visitor interface for GenericParameterList

func (*Analyzer) VisitGenericParameters

func (a *Analyzer) VisitGenericParameters(ctx *generated.GenericParametersContext) any

VisitGenericParameters implements the Visitor interface for GenericParameters

func (*Analyzer) VisitIdentifier

func (a *Analyzer) VisitIdentifier(node antlr.TerminalNode) any

VisitIdentifier implements the Visitor interface for Identifier

func (*Analyzer) VisitIdentifierAsIdentifier

func (a *Analyzer) VisitIdentifierAsIdentifier(ctx *generated.IdentifierAsIdentifierContext) any

VisitIdentifierAsIdentifier implements the Visitor interface for IdentifierAsIdentifier

func (*Analyzer) VisitIfStatement

func (a *Analyzer) VisitIfStatement(ctx *generated.IfStatementContext) any

VisitIfStatement implements the Visitor interface for IfStatement

func (*Analyzer) VisitImportAll

func (a *Analyzer) VisitImportAll(ctx *generated.ImportAllContext) any

VisitImportAll implements the Visitor interface for ImportAll

func (*Analyzer) VisitImportDeclaration

func (a *Analyzer) VisitImportDeclaration(ctx *generated.ImportDeclarationContext) any

VisitImportDeclaration implements the Visitor interface for ImportDeclaration

func (*Analyzer) VisitImportMulti

func (a *Analyzer) VisitImportMulti(ctx *generated.ImportMultiContext) any

VisitImportMulti implements the Visitor interface for ImportMulti

func (*Analyzer) VisitImportSingle

func (a *Analyzer) VisitImportSingle(ctx *generated.ImportSingleContext) any

VisitImportSingle implements the Visitor interface for ImportSingle

func (*Analyzer) VisitIncDecExpression

func (a *Analyzer) VisitIncDecExpression(ctx *generated.IncDecExpressionContext) any

VisitIncDecExpression implements the Visitor interface for IncDecExpression

func (*Analyzer) VisitLambdaAssignStatement

func (a *Analyzer) VisitLambdaAssignStatement(ctx *generated.LambdaAssignStatementContext) any

VisitLambdaAssignStatement implements the Visitor interface for LambdaAssignStatement

func (*Analyzer) VisitLambdaBody

func (a *Analyzer) VisitLambdaBody(ctx *generated.LambdaBodyContext) any

VisitLambdaBody implements the Visitor interface for LambdaBody

func (*Analyzer) VisitLambdaExpression

func (a *Analyzer) VisitLambdaExpression(ctx *generated.LambdaExpressionContext) any

VisitLambdaExpression implements the Visitor interface for LambdaExpression

func (*Analyzer) VisitLambdaFunctionDeclaration

func (a *Analyzer) VisitLambdaFunctionDeclaration(ctx *generated.LambdaFunctionDeclarationContext) any

VisitLambdaFunctionDeclaration implements the Visitor interface for LambdaFunctionDeclaration

func (*Analyzer) VisitListExpression

func (a *Analyzer) VisitListExpression(ctx *generated.ListExpressionContext) any

VisitListExpression implements the Visitor interface for ListExpression

func (*Analyzer) VisitLiteral

func (a *Analyzer) VisitLiteral(ctx *generated.LiteralContext) any

VisitLiteral implements the Visitor interface for Literal

func (*Analyzer) VisitLogicalExpression

func (a *Analyzer) VisitLogicalExpression(ctx *generated.LogicalExpressionContext) any

VisitLogicalExpression implements the Visitor interface for LogicalExpression

func (*Analyzer) VisitLoopStatement

func (a *Analyzer) VisitLoopStatement(ctx *generated.LoopStatementContext) any

VisitLoopStatement implements the Visitor interface for LoopStatement

func (*Analyzer) VisitMapExpression

func (a *Analyzer) VisitMapExpression(ctx *generated.MapExpressionContext) any

VisitMapExpression implements the Visitor interface for MapExpression

func (*Analyzer) VisitMatchCaseBody

func (a *Analyzer) VisitMatchCaseBody(ctx *generated.MatchCaseBodyContext) any

VisitMatchCaseBody implements the Visitor interface for MatchCaseBody

func (*Analyzer) VisitMatchCaseClause

func (a *Analyzer) VisitMatchCaseClause(ctx *generated.MatchCaseClauseContext) any

VisitMatchCaseClause implements the Visitor interface for MatchCaseClause

func (*Analyzer) VisitMatchDefaultClause

func (a *Analyzer) VisitMatchDefaultClause(ctx *generated.MatchDefaultClauseContext) any

VisitMatchDefaultClause implements the Visitor interface for MatchDefaultClause

func (*Analyzer) VisitMatchEnum

func (a *Analyzer) VisitMatchEnum(ctx *generated.MatchEnumContext) any

VisitMatchEnum implements the Visitor interface for MatchEnum

func (*Analyzer) VisitMatchStatement

func (a *Analyzer) VisitMatchStatement(ctx *generated.MatchStatementContext) any

VisitMatchStatement implements the Visitor interface for MatchStatement

func (*Analyzer) VisitMatchTriple

func (a *Analyzer) VisitMatchTriple(ctx *generated.MatchTripleContext) any

VisitMatchTriple implements the Visitor interface for MatchTriple

func (*Analyzer) VisitMemberAccess

func (a *Analyzer) VisitMemberAccess(ctx *generated.MemberAccessContext) any

func (*Analyzer) VisitMethodExpression

func (a *Analyzer) VisitMethodExpression(ctx *generated.MethodExpressionContext) any

func (*Analyzer) VisitMulDivExpression

func (a *Analyzer) VisitMulDivExpression(ctx *generated.MulDivExpressionContext) any

VisitMulDivExpression implements the Visitor interface for MulDivExpression

func (*Analyzer) VisitObjectType

func (a *Analyzer) VisitObjectType(ctx *generated.ObjectTypeContext) any

VisitObjectType implements the Visitor interface for ObjectType

func (*Analyzer) VisitObjectTypeMember

func (a *Analyzer) VisitObjectTypeMember(ctx *generated.ObjectTypeMemberContext) any

VisitObjectTypeMember implements the Visitor interface for ObjectTypeMember

func (*Analyzer) VisitOption added in v0.2.0

func (a *Analyzer) VisitOption(ctx *generated.OptionContext) any

func (*Analyzer) VisitPair

func (a *Analyzer) VisitPair(ctx *generated.PairContext) any

VisitPair implements the Visitor interface for Pair

func (*Analyzer) VisitPostIncDecExpression

func (a *Analyzer) VisitPostIncDecExpression(ctx *generated.PostIncDecExpressionContext) any

VisitPostIncDecExpression implements the Visitor interface for PostIncDecExpression

func (*Analyzer) VisitPreIncDecExpression

func (a *Analyzer) VisitPreIncDecExpression(ctx *generated.PreIncDecExpressionContext) any

VisitPreIncDecExpression implements the Visitor interface for PreIncDecExpression

func (*Analyzer) VisitRangeExpression

func (a *Analyzer) VisitRangeExpression(ctx *generated.RangeExpressionContext) any

VisitRangeExpression implements the Visitor interface for RangeExpression

func (*Analyzer) VisitRangeStatement

func (a *Analyzer) VisitRangeStatement(ctx *generated.RangeStatementContext) any

VisitRangeStatement implements the Visitor interface for RangeStatement

func (*Analyzer) VisitReceiverParameters

func (a *Analyzer) VisitReceiverParameters(ctx *generated.ReceiverParametersContext) any

VisitReceiverParameters implements the Visitor interface for ReceiverParameters

func (*Analyzer) VisitReturnStatement

func (a *Analyzer) VisitReturnStatement(ctx *generated.ReturnStatementContext) any

VisitReturnStatement implements the Visitor interface for ReturnStatement

func (*Analyzer) VisitShiftExpression

func (a *Analyzer) VisitShiftExpression(ctx *generated.ShiftExpressionContext) any

VisitShiftExpression implements the Visitor interface for ShiftExpression

func (*Analyzer) VisitStandardFunctionDeclaration

func (a *Analyzer) VisitStandardFunctionDeclaration(ctx *generated.StandardFunctionDeclarationContext) any

VisitStandardFunctionDeclaration implements the Visitor interface for StandardFunctionDeclaration

func (*Analyzer) VisitStatement

func (a *Analyzer) VisitStatement(ctx *generated.StatementContext) any

VisitStatement implements the Visitor interface for Statement

func (*Analyzer) VisitTupleType

func (a *Analyzer) VisitTupleType(ctx *generated.TupleTypeContext) any

VisitTupleType implements the Visitor interface for TupleType

func (*Analyzer) VisitType

func (a *Analyzer) VisitType(ctx *generated.TypeContext) any

VisitType implements the Visitor interface for Type

func (*Analyzer) VisitTypeDeclaration

func (a *Analyzer) VisitTypeDeclaration(ctx *generated.TypeDeclarationContext) any

VisitTypeDeclaration implements the Visitor interface for TypeDeclaration

func (*Analyzer) VisitTypeList

func (a *Analyzer) VisitTypeList(ctx *generated.TypeListContext) any

VisitTypeList implements the Visitor interface for TypeList

func (*Analyzer) VisitVariableExpression

func (a *Analyzer) VisitVariableExpression(ctx *generated.VariableExpressionContext) any

func (*Analyzer) VisitVariableName

func (a *Analyzer) VisitVariableName(ctx *generated.VariableNameContext) any

VisitVariableName implements the Visitor interface for VariableName

func (*Analyzer) VisitWhileStatement

func (a *Analyzer) VisitWhileStatement(ctx *generated.WhileStatementContext) any

VisitWhileStatement implements the Visitor interface for WhileStatement

type NodeWatcher

type NodeWatcher interface {
	OnEnter(node ast.Node, pos Position)
	OnExit(node ast.Node, result any, err error)
}

NodeWatcher defines the node watcher interface

type ParserOptions

type ParserOptions func(*Analyzer) error

func OptionDisableTracer

func OptionDisableTracer() ParserOptions

func OptionTracerASTTree

func OptionTracerASTTree(w io.Writer) ParserOptions

func OptionTracerDisableTiming

func OptionTracerDisableTiming() ParserOptions

func OptionTracerIgnore

func OptionTracerIgnore(nodes ...string) ParserOptions

func OptionTracerLevel

func OptionTracerLevel(level log.Level) ParserOptions

func OptionTracerLevelOf

func OptionTracerLevelOf(s string) ParserOptions

func OptionTracerWatchNode

func OptionTracerWatchNode(nodeType string, onEnter func(ast.Node, Position), onExit func(ast.Node, any, error)) ParserOptions

func OptionTracerWriter

func OptionTracerWriter(w io.Writer) ParserOptions

type Position

type Position struct {
	Line   int // line number, starting at 1
	Column int // column number, starting at 1 (byte count)
}

type SymbolInfo

type SymbolInfo struct {
	Name string
	Node ast.Node
}

type SymbolTable

type SymbolTable struct{}

type TraceLevel

type TraceLevel int
const (
	DebugNone TraceLevel = iota
	DebugParseTree
	DebugAST
	DebugSymbols
	DebugAll
)

type Tracer

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

func NewTracer

func NewTracer() *Tracer

func (*Tracer) DisableTiming

func (d *Tracer) DisableTiming()

func (*Tracer) EmitError

func (d *Tracer) EmitError(err error)

func (*Tracer) Enter

func (d *Tracer) Enter(name string, nodeType string, pos Position)

TODO handles error at nodeType's type

func (*Tracer) Exit

func (d *Tracer) Exit(result any, err error)

func (*Tracer) IgnoreNodes

func (d *Tracer) IgnoreNodes(nodes ...string)

func (*Tracer) SetLevel

func (d *Tracer) SetLevel(level TraceLevel)

func (*Tracer) SetOutput

func (d *Tracer) SetOutput(w io.Writer)

func (*Tracer) WatchNode

func (d *Tracer) WatchNode(nodeType string, watcher NodeWatcher)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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