Help us shape the future of Go! Take the 2026 Go Developer Survey

lang

package
v0.3.4 Latest Latest
Warning

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

Go to latest
Published: Mar 3, 2026 License: MIT Imports: 0 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Register

func Register(spec *LanguageSpec)

Register adds a LanguageSpec to the global registry.

Types

type Language

type Language string

Language represents a supported programming language.

const (
	Python     Language = "python"
	JavaScript Language = "javascript"
	TypeScript Language = "typescript"
	Go         Language = "go"
	Rust       Language = "rust"
	Java       Language = "java"
	CPP        Language = "cpp"
	TSX        Language = "tsx"
	CSharp     Language = "c-sharp"
	PHP        Language = "php"
	Lua        Language = "lua"
	Scala      Language = "scala"
	Kotlin     Language = "kotlin"
	JSON       Language = "json" // Not in AllLanguages(); no LanguageSpec or tree-sitter grammar

	// Programming languages (Tier 1)
	Ruby       Language = "ruby"
	C          Language = "c"
	Bash       Language = "bash"
	Zig        Language = "zig"
	Elixir     Language = "elixir"
	Haskell    Language = "haskell"
	OCaml      Language = "ocaml"
	ObjectiveC Language = "objective-c"
	Swift      Language = "swift"
	Dart       Language = "dart"
	Perl       Language = "perl"
	Groovy     Language = "groovy"
	Erlang     Language = "erlang"
	R          Language = "r"

	// Helper languages (Tier 2)
	HTML       Language = "html"
	CSS        Language = "css"
	SCSS       Language = "scss"
	YAML       Language = "yaml"
	TOML       Language = "toml"
	HCL        Language = "hcl"
	SQL        Language = "sql"
	Dockerfile Language = "dockerfile"
)

func AllLanguages

func AllLanguages() []Language

AllLanguages returns all supported languages.

func LanguageForExtension

func LanguageForExtension(ext string) (Language, bool)

LanguageForExtension returns the Language for a file extension.

type LanguageSpec

type LanguageSpec struct {
	Language          Language
	FileExtensions    []string
	FunctionNodeTypes []string
	ClassNodeTypes    []string
	FieldNodeTypes    []string // tree-sitter node kinds for struct/class fields
	ModuleNodeTypes   []string
	CallNodeTypes     []string
	ImportNodeTypes   []string
	ImportFromTypes   []string
	PackageIndicators []string

	// BranchingNodeTypes lists AST node kinds counted for complexity metric.
	BranchingNodeTypes []string
	// VariableNodeTypes lists module-level variable declaration node kinds.
	VariableNodeTypes []string
	// AssignmentNodeTypes lists assignment expression/statement node kinds.
	AssignmentNodeTypes []string
	// ThrowNodeTypes lists throw/raise statement node kinds.
	ThrowNodeTypes []string
	// ThrowsClauseField is the field name for declared throws (e.g. Java "throws").
	ThrowsClauseField string
	// DecoratorNodeTypes lists decorator/annotation node kinds.
	DecoratorNodeTypes []string
	// EnvAccessFunctions lists function names used to read env vars (e.g. "os.Getenv").
	EnvAccessFunctions []string
	// EnvAccessMemberPatterns lists member access patterns for env vars (e.g. "process.env").
	EnvAccessMemberPatterns []string
}

LanguageSpec defines the tree-sitter node types for a language.

func ForExtension

func ForExtension(ext string) *LanguageSpec

ForExtension returns the LanguageSpec for a file extension (e.g. ".go").

func ForLanguage

func ForLanguage(lang Language) *LanguageSpec

ForLanguage returns the LanguageSpec for a language.

Jump to

Keyboard shortcuts

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