ctrl.go 508 B

1234567891011121314151617181920212223242526272829
  1. package main
  2. import (
  3. "bufio"
  4. "fmt"
  5. "strings"
  6. )
  7. func opRun(val1 value) value {
  8. if !isList(val1.val) {
  9. panic(fmt.Errorf("run: %s (%s)", errListExpected, val1.val))
  10. }
  11. return interpret(bufio.NewScanner(strings.NewReader(val1.val[1 : len(val1.val)-1])))
  12. }
  13. func opIf(val1, val2, val3 value) value {
  14. b1 := toBool(val1.val)
  15. if b1 {
  16. return opRun(val2)
  17. }
  18. return opRun(val3)
  19. }
  20. func opReturn(val1 value) value {
  21. if isList(val1.val) && val1.body == "" {
  22. return parseFunc(val1.val)
  23. }
  24. return val1
  25. }