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.