Added all source files
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
// op-registry.go
|
||||
package expr
|
||||
|
||||
const initialRegistryCapacity = 10
|
||||
|
||||
type termContructor func(tk *Token) *term
|
||||
|
||||
var constructorRegistry map[Symbol]termContructor = nil
|
||||
|
||||
func registerTermConstructor(sym Symbol, constructor termContructor) {
|
||||
if constructorRegistry == nil {
|
||||
constructorRegistry = make(map[Symbol]termContructor, initialRegistryCapacity)
|
||||
}
|
||||
constructorRegistry[sym] = constructor
|
||||
}
|
||||
|
||||
func newTerm(tk *Token, parent *term) (inst *term) {
|
||||
if constructorRegistry != nil {
|
||||
if construct, exists := constructorRegistry[tk.Sym]; exists {
|
||||
inst = construct(tk)
|
||||
inst.setParent(parent)
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user