q/src/core/Identifier.go

25 lines
462 B
Go

package core
import (
"fmt"
"git.akyoto.dev/cli/q/src/scope"
)
// Identifier looks up an identifier which can be a variable or a function.
func (f *Function) Identifier(name string) (*scope.Variable, *Function) {
variable := f.VariableByName(name)
if variable != nil {
return variable, nil
}
uniqueName := fmt.Sprintf("%s.%s", f.Package, name)
function, exists := f.Functions[uniqueName]
if exists {
return nil, function
}
return nil, nil
}