call.go 536 B

1234567891011121314151617181920212223242526
  1. package rules
  2. import (
  3. "cp/node"
  4. "rt2/frame"
  5. mod "rt2/module"
  6. "rt2/nodeframe"
  7. )
  8. func callSeq(f frame.Frame) (seq frame.Sequence, ret frame.WAIT) {
  9. var fu nodeframe.FrameUtils
  10. n := fu.NodeOf(f)
  11. switch n.Left().(type) {
  12. case node.ProcedureNode:
  13. m := mod.DomainModule(f.Domain())
  14. proc := m.NodeByObject(n.Left().Object())
  15. f.Root().Push(fu.New(proc))
  16. seq = func(f frame.Frame) (seq frame.Sequence, ret frame.WAIT) {
  17. return frame.End()
  18. }
  19. ret = frame.SKIP
  20. default:
  21. panic("unknown call left")
  22. }
  23. return seq, ret
  24. }