Documentation
¶
Overview ¶
Package goparser implements a structured parser for Go.
Index ¶
- Variables
- func IsExported(name string) bool
- func MatchFileName(name string, ctx *buildContext) bool
- func MatchFileNameFor(name, goos, goarch string) bool
- func PackageName(importPath string) string
- type ErrUndefined
- type Parser
- func (p *Parser) ImportPackageValues(m map[string]map[string]reflect.Value)
- func (p *Parser) ParseAll(name, src string) (out []Tokens, err error)
- func (p *Parser) ParseDecl(toks Tokens) (handled bool, err error)
- func (p *Parser) ParseOneStmt(toks Tokens) (Tokens, error)
- func (p *Parser) SetBuildContext(goos, goarch string)
- func (p *Parser) SetPkgfs(pkgPath string)
- func (p *Parser) SetStdlibFS(fsys fs.FS)
- func (p *Parser) SymAdd(i int, name string, v vm.Value, k symbol.Kind, t *vm.Type)
- func (p *Parser) SymSet(key string, sym *symbol.Symbol)
- type SelectCaseDesc
- type Token
- type Tokens
Constants ¶
This section is empty.
Variables ¶
var ( ErrEllipsisArray = errors.New("[...] array") ErrFuncType = errors.New("invalid function type") ErrInvalidType = errors.New("invalid type") ErrMissingType = errors.New("missing type") ErrSize = errors.New("invalid size") ErrSyntax = errors.New("syntax error") ErrNotImplemented = errors.New("not implemented") )
Type parsing error definitions.
Functions ¶
func IsExported ¶
IsExported reports whether the given name starts with an upper-case letter.
func MatchFileName ¶
MatchFileName reports whether name (a .go file basename) matches the given build context's GOOS/GOARCH constraints encoded in the file name.
func MatchFileNameFor ¶
MatchFileNameFor reports whether name matches the given GOOS/GOARCH constraints encoded in the file name. It is like MatchFileName but for an explicit platform.
func PackageName ¶
PackageName returns the identifier used to reference the package given its import path: the last segment, or the second-to-last when the last matches "v[0-9]*" (module versioning suffix).
Types ¶
type ErrUndefined ¶
type ErrUndefined struct{ Name string }
ErrUndefined is returned during parsing when a referenced symbol is not yet defined. It is retryable: the lazy fixpoint loop in interp.Eval defers the declaration and retries after other declarations have been processed.
func (ErrUndefined) Error ¶
func (e ErrUndefined) Error() string
type Parser ¶
type Parser struct {
*scan.Scanner
Symbols symbol.SymMap
Packages map[string]*symbol.Package
InitFuncs []string // ordered list of init function internal names
// contains filtered or unexported fields
}
Parser represents the state of a parser.
func (*Parser) ImportPackageValues ¶
ImportPackageValues populates packages with values.
func (*Parser) ParseAll ¶
ParseAll parses code and its dependencies, and returns slices of Tokens or an error.
func (*Parser) ParseDecl ¶
ParseDecl resolves a declaration's symbols (Phase 1) without emitting code. Returns handled=true if fully resolved, false if code generation is needed.
func (*Parser) ParseOneStmt ¶
ParseOneStmt parses a single pre-scanned statement token slice.
func (*Parser) SetBuildContext ¶
SetBuildContext overrides the parser's target GOOS/GOARCH for build constraint filtering.
func (*Parser) SetStdlibFS ¶
SetStdlibFS installs a fallback filesystem for resolving imported source packages that are not present in the primary pkgfs. This is used to resolve generics-first stdlib packages (cmp, slices, maps, ...) whose sources are embedded in the interpreter binary.
type SelectCaseDesc ¶
type SelectCaseDesc struct {
Dir reflect.SelectDir
ValName string // scoped name of recv value var ("" if none)
OkName string // scoped name of recv ok var ("" if none)
}
SelectCaseDesc describes one case of a select statement for the compiler.
type Tokens ¶
type Tokens []Token
Tokens represents slice of tokens.
func (Tokens) SplitStart ¶
SplitStart is similar to Split, except the first token in toks is skipped.