forge/rep: work in progress: compilation and execution
This commit is contained in:
parent
f9cb596252
commit
704ff5f2fd
5 changed files with 15 additions and 6 deletions
|
@ -17,6 +17,11 @@ func NewVoc[V any](parent *Vocabulary[V]) *Vocabulary[V] {
|
||||||
data: VocData[V]{},
|
data: VocData[V]{},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (voc *Vocabulary[V]) Parent() *Vocabulary[V] {
|
||||||
|
return voc.parent
|
||||||
|
}
|
||||||
|
|
||||||
func (voc *Vocabulary[V]) Register(name string, it V) {
|
func (voc *Vocabulary[V]) Register(name string, it V) {
|
||||||
vi, ok := voc.data[name]
|
vi, ok := voc.data[name]
|
||||||
if ok {
|
if ok {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Package forge implements sort of a stack-based interpreter.
|
// Package forge implements a stack-based interpreter.
|
||||||
package forge
|
package forge
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
@ -8,12 +8,16 @@ import (
|
||||||
|
|
||||||
func ParseJson(inp string) coderep {
|
func ParseJson(inp string) coderep {
|
||||||
var raw interface{}
|
var raw interface{}
|
||||||
err := json.Unmarshal([]byte(inp), &raw)
|
return ParseJsonToTarget(inp, &raw)
|
||||||
|
}
|
||||||
|
|
||||||
|
func ParseJsonToTarget(inp string, target *interface{}) coderep {
|
||||||
|
err := json.Unmarshal([]byte(inp), target)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error(err).Msg("rep.ParseJson")
|
log.Error(err).Msg("rep.ParseJson")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
rep := prepare(raw)
|
rep := prepare(*target)
|
||||||
return rep
|
return rep
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -72,7 +72,7 @@ func makeCode(ri []interface{}) code {
|
||||||
return c
|
return c
|
||||||
}
|
}
|
||||||
|
|
||||||
// module - code definitions, represented by a map
|
// module - code definitions, represented by a map that is used as a forge vocabulary
|
||||||
|
|
||||||
type module map[string]citem
|
type module map[string]citem
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,7 @@ func (it *gofunc) Code() fptr {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (it *gofunc) Name() string {
|
func (it *gofunc) Name() string {
|
||||||
return string(it.name)
|
return it.name
|
||||||
}
|
}
|
||||||
|
|
||||||
// acode: anonymous forge code
|
// acode: anonymous forge code
|
||||||
|
@ -70,5 +70,5 @@ func FCode(n string, c fptr) XT {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (it *fcode) Name() string {
|
func (it *fcode) Name() string {
|
||||||
return string(it.name)
|
return it.name
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue