parsego

package
v0.9.0-alpha.2 Latest Latest
Warning

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

Go to latest
Published: Apr 18, 2024 License: Apache-2.0 Imports: 14 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// ParseHeader specifies that the main package declaration and imports are needed.
	// This is the mode used when attempting to examine the package graph structure.
	ParseHeader = parser.AllErrors | parser.ParseComments | parser.ImportsOnly | parser.SkipObjectResolution

	// ParseFull specifies the full AST is needed.
	// This is used for files of direct interest where the entire contents must
	// be considered.
	ParseFull = parser.AllErrors | parser.ParseComments | parser.SkipObjectResolution
)

Common parse modes; these should be reused wherever possible to increase cache hits.

Variables

This section is empty.

Functions

This section is empty.

Types

type File

type File struct {
	URI  protocol.DocumentURI
	Mode parser.Mode
	File *ast.File
	Tok  *token.File
	// Source code used to build the AST. It may be different from the
	// actual content of the file if we have fixed the AST.
	Src []byte

	Mapper   *protocol.Mapper // may map fixed Src, not file content
	ParseErr scanner.ErrorList
	// contains filtered or unexported fields
}

A File contains the results of parsing a Go file.

func Parse

func Parse(ctx context.Context, fset *token.FileSet, uri protocol.DocumentURI, src []byte, mode parser.Mode, purgeFuncBodies bool) (res *File, fixes []fixType)

Parse parses a buffer of Go source, repairing the tree if necessary.

The provided ctx is used only for logging.

func (File) Fixed

func (p File) Fixed() bool

Fixed reports whether p was "Fixed", meaning that its source or positions may not correlate with the original file.

func (*File) NodeLocation

func (pgf *File) NodeLocation(node ast.Node) (protocol.Location, error)

NodeLocation returns a protocol Location for the ast.Node interval in this file.

func (*File) NodeMappedRange

func (pgf *File) NodeMappedRange(node ast.Node) (protocol.MappedRange, error)

NodeMappedRange returns a MappedRange for the ast.Node interval in this file. A MappedRange can be converted to any other form.

func (*File) NodeRange

func (pgf *File) NodeRange(node ast.Node) (protocol.Range, error)

NodeRange returns a protocol Range for the ast.Node interval in this file.

func (*File) PosLocation

func (pgf *File) PosLocation(start, end token.Pos) (protocol.Location, error)

PosLocation returns a protocol Location for the token.Pos interval in this file.

func (*File) PosMappedRange

func (pgf *File) PosMappedRange(start, end token.Pos) (protocol.MappedRange, error)

PosMappedRange returns a MappedRange for the token.Pos interval in this file. A MappedRange can be converted to any other form.

func (*File) PosRange

func (pgf *File) PosRange(start, end token.Pos) (protocol.Range, error)

PosRange returns a protocol Range for the token.Pos interval in this file.

func (*File) PositionPos

func (pgf *File) PositionPos(p protocol.Position) (token.Pos, error)

PositionPos returns the token.Pos of protocol position p within the file.

func (*File) RangePos

func (pgf *File) RangePos(r protocol.Range) (token.Pos, token.Pos, error)

RangePos parses a protocol Range back into the go/token domain.

Jump to

Keyboard shortcuts

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