parser

package
v0.0.7 Latest Latest
Warning

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

Go to latest
Published: Feb 12, 2026 License: MIT Imports: 14 Imported by: 0

Documentation

Overview

Package parser provides Go package loading using go/packages for type-aware AST parsing, type information, and import graph resolution.

Package parser provides source code parsing for Go, Python, and TypeScript.

Tree-sitter parsers require CGO_ENABLED=1. The TreeSitterParser provides pooled parsers for Python, TypeScript, and TSX. Every Tree and Parser must be explicitly closed to avoid memory leaks.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CloseAll

func CloseAll(files []*ParsedTreeSitterFile)

CloseAll closes all trees in a slice of ParsedTreeSitterFile. Safe to call with nil or empty slice.

Types

type GoPackagesParser

type GoPackagesParser struct{}

GoPackagesParser loads Go packages from a module directory using go/packages.

func (*GoPackagesParser) Parse

func (p *GoPackagesParser) Parse(rootDir string) ([]*ParsedPackage, error)

Parse loads all packages in the given root directory using go/packages.Load. It returns source packages and test packages separately identified via ForTest. Packages with errors are skipped with a log warning.

type ParsedPackage

type ParsedPackage struct {
	ID        string                       // Unique package identifier from go/packages
	Name      string                       // Package name (e.g., "main", "parser")
	PkgPath   string                       // Full import path
	GoFiles   []string                     // .go source file paths
	Syntax    []*ast.File                  // Parsed AST for each file
	Fset      *token.FileSet               // Shared file set for position info
	Types     *types.Package               // Type-checked package
	TypesInfo *types.Info                  // Detailed type info (uses, defs, etc.)
	Imports   map[string]*packages.Package // Direct imports (path -> package)
	ForTest   string                       // Non-empty if this is a test package
}

ParsedPackage holds all analysis-relevant data for a single Go package loaded via go/packages.

type ParsedTreeSitterFile

type ParsedTreeSitterFile struct {
	Path     string
	RelPath  string
	Tree     *tree_sitter.Tree
	Content  []byte
	Language types.Language
}

ParsedTreeSitterFile holds a parsed Tree-sitter syntax tree with its source content. Caller must call Tree.Close() when done, or use CloseAll.

type TreeSitterParser

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

TreeSitterParser holds pooled Tree-sitter parsers for Python, TypeScript, and TSX. Tree-sitter parsers are NOT thread-safe, so all parse operations are serialized via a mutex. Trees returned from parsing are safe to use concurrently after parsing.

func NewTreeSitterParser

func NewTreeSitterParser() (*TreeSitterParser, error)

NewTreeSitterParser creates parsers for Python, TypeScript, and TSX. Returns an error if any language fails to initialize.

func (*TreeSitterParser) Close

func (p *TreeSitterParser) Close()

Close releases all parser resources. Must be called when done.

func (*TreeSitterParser) ParseFile

func (p *TreeSitterParser) ParseFile(lang types.Language, ext string, content []byte) (*tree_sitter.Tree, error)

ParseFile parses source content for the given language and file extension. The ext parameter is used to distinguish .ts from .tsx for TypeScript. Returns a Tree that the caller must close. This method is thread-safe; parsing is serialized internally.

func (*TreeSitterParser) ParseTargetFiles

func (p *TreeSitterParser) ParseTargetFiles(target *types.AnalysisTarget) ([]*ParsedTreeSitterFile, error)

ParseTargetFiles parses all source files in an AnalysisTarget, returning parsed trees. Caller must close all returned trees (use CloseAll helper). Only parses Python and TypeScript files; Go files are skipped.

Jump to

Keyboard shortcuts

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