Jelajahi Sumber

отладил модуль математики, обновил дампы, более простая система имен.

kpmy 10 tahun lalu
induk
melakukan
d052452f68
46 mengubah file dengan 38 tambahan dan 10 penghapusan
  1. TEMPAT SAMPAH
      code/Cons.oz
  2. TEMPAT SAMPAH
      code/Console.oz
  3. TEMPAT SAMPAH
      code/Core.oz
  4. TEMPAT SAMPAH
      code/Mathe.oz
  5. TEMPAT SAMPAH
      code/Out.oz
  6. TEMPAT SAMPAH
      code/Start.oz
  7. TEMPAT SAMPAH
      code/Str.oz
  8. TEMPAT SAMPAH
      code/TestA0.oz
  9. TEMPAT SAMPAH
      code/TestA1.oz
  10. TEMPAT SAMPAH
      code/TestA2.oz
  11. TEMPAT SAMPAH
      code/TestMath.oz
  12. TEMPAT SAMPAH
      code/TestStrings.oz
  13. TEMPAT SAMPAH
      code/XevConsole.oz
  14. TEMPAT SAMPAH
      code/XevCore.oz
  15. TEMPAT SAMPAH
      code/XevDemo0.oz
  16. TEMPAT SAMPAH
      code/XevDemo1.oz
  17. TEMPAT SAMPAH
      code/XevDemo10.oz
  18. TEMPAT SAMPAH
      code/XevDemo11.oz
  19. TEMPAT SAMPAH
      code/XevDemo12.oz
  20. TEMPAT SAMPAH
      code/XevDemo14.oz
  21. TEMPAT SAMPAH
      code/XevDemo15.oz
  22. TEMPAT SAMPAH
      code/XevDemo16.oz
  23. TEMPAT SAMPAH
      code/XevDemo17.oz
  24. TEMPAT SAMPAH
      code/XevDemo18.oz
  25. TEMPAT SAMPAH
      code/XevDemo19.oz
  26. TEMPAT SAMPAH
      code/XevDemo21.oz
  27. TEMPAT SAMPAH
      code/XevDemo3.oz
  28. TEMPAT SAMPAH
      code/XevDemo5.oz
  29. TEMPAT SAMPAH
      code/XevDemo6.oz
  30. TEMPAT SAMPAH
      code/XevDemo8.oz
  31. TEMPAT SAMPAH
      code/XevDemo9.oz
  32. TEMPAT SAMPAH
      code/XevInit.oz
  33. TEMPAT SAMPAH
      code/XevLog.oz
  34. TEMPAT SAMPAH
      code/XevMath.oz
  35. TEMPAT SAMPAH
      code/XevStrings.oz
  36. TEMPAT SAMPAH
      code/XevTest0.oz
  37. TEMPAT SAMPAH
      code/XevTest1.oz
  38. TEMPAT SAMPAH
      code/XevTest2.oz
  39. TEMPAT SAMPAH
      code/XevTestMath.oz
  40. TEMPAT SAMPAH
      code/XevTestStrings.oz
  41. TEMPAT SAMPAH
      code/XevXLog.oz
  42. 1 1
      fw.go
  43. 2 2
      fw_test_all.bat
  44. 3 6
      rt2/rules/call.go
  45. 30 0
      rt2/scope/modern/val.go
  46. 2 1
      xev/cmds.go

TEMPAT SAMPAH
code/Cons.oz


TEMPAT SAMPAH
code/Console.oz


TEMPAT SAMPAH
code/Core.oz


TEMPAT SAMPAH
code/Mathe.oz


TEMPAT SAMPAH
code/Out.oz


TEMPAT SAMPAH
code/Start.oz


TEMPAT SAMPAH
code/Str.oz


TEMPAT SAMPAH
code/TestA0.oz


TEMPAT SAMPAH
code/TestA1.oz


TEMPAT SAMPAH
code/TestA2.oz


TEMPAT SAMPAH
code/TestMath.oz


TEMPAT SAMPAH
code/TestStrings.oz


TEMPAT SAMPAH
code/XevConsole.oz


TEMPAT SAMPAH
code/XevCore.oz


TEMPAT SAMPAH
code/XevDemo0.oz


TEMPAT SAMPAH
code/XevDemo1.oz


TEMPAT SAMPAH
code/XevDemo10.oz


TEMPAT SAMPAH
code/XevDemo11.oz


TEMPAT SAMPAH
code/XevDemo12.oz


TEMPAT SAMPAH
code/XevDemo14.oz


TEMPAT SAMPAH
code/XevDemo15.oz


TEMPAT SAMPAH
code/XevDemo16.oz


TEMPAT SAMPAH
code/XevDemo17.oz


TEMPAT SAMPAH
code/XevDemo18.oz


TEMPAT SAMPAH
code/XevDemo19.oz


TEMPAT SAMPAH
code/XevDemo21.oz


TEMPAT SAMPAH
code/XevDemo3.oz


TEMPAT SAMPAH
code/XevDemo5.oz


TEMPAT SAMPAH
code/XevDemo6.oz


TEMPAT SAMPAH
code/XevDemo8.oz


TEMPAT SAMPAH
code/XevDemo9.oz


TEMPAT SAMPAH
code/XevInit.oz


TEMPAT SAMPAH
code/XevLog.oz


TEMPAT SAMPAH
code/XevMath.oz


TEMPAT SAMPAH
code/XevStrings.oz


TEMPAT SAMPAH
code/XevTest0.oz


TEMPAT SAMPAH
code/XevTest1.oz


TEMPAT SAMPAH
code/XevTest2.oz


TEMPAT SAMPAH
code/XevTestMath.oz


TEMPAT SAMPAH
code/XevTestStrings.oz


TEMPAT SAMPAH
code/XevXLog.oz


+ 1 - 1
fw.go

@@ -33,7 +33,7 @@ func close() {
 func main() {
 	flag.Parse()
 	if name == "" {
-		name = "XevInit"
+		name = "Start"
 		utils.Debug(false)
 	}
 	global := &stdDomain{god: true}

+ 2 - 2
fw_test_all.bat

@@ -23,5 +23,5 @@ start fw_test XevDemo20
 start fw_test XevDemo21
 start fw_test XevDemo22
 
-start fw_test XevTest0
-start fw_test XevInit
+start fw_test TestA0
+start fw_test Start

+ 3 - 6
rt2/rules/call.go

@@ -15,10 +15,10 @@ import (
 	"fw/rt2/scope"
 	"fw/utils"
 	"math"
-	"math/big"
 	"reflect"
 	"ypk/assert"
 	"ypk/halt"
+	"ypk/mathe"
 )
 
 /**
@@ -138,15 +138,12 @@ func go_math(f frame.Frame, par node.Node) (seq frame.Sequence, ret frame.WAIT)
 		case LN:
 			res = math.Log(rv[1])
 		case MANT:
-			_ = big.NewRat(1, 1).SetFloat64(rv[1])
-			panic(0)
+			res, _ = mathe.Me(rv[1])
 		case EXP:
-			me(rv[1])
-			panic(0)
+			_, res = mathe.Me(rv[1])
 		default:
 			halt.As(100, rv[0])
 		}
-		fmt.Println(rv)
 	default:
 		halt.As(100, reflect.TypeOf(p))
 	}

+ 30 - 0
rt2/scope/modern/val.go

@@ -782,6 +782,13 @@ func (o *ops) Sub(a, b scope.Value) scope.Value {
 				default:
 					panic(fmt.Sprintln(reflect.TypeOf(y)))
 				}
+			case REAL:
+				switch y := b.(type) {
+				case REAL:
+					return REAL(x - y)
+				default:
+					panic(fmt.Sprintln(reflect.TypeOf(y)))
+				}
 			case LONGINT:
 				switch y := b.(type) {
 				case LONGINT:
@@ -1274,6 +1281,8 @@ func (o *ops) Conv(a scope.Value, typ object.Type, comp ...object.ComplexType) s
 			return o.Conv(vfrom(x), typ)
 		case LONGINT:
 			return CHAR(rune(x))
+		case INTEGER:
+			return CHAR(rune(x))
 		default:
 			halt.As(100, reflect.TypeOf(x))
 		}
@@ -1441,6 +1450,13 @@ func (o *ops) Neq(a, b scope.Value) scope.Value {
 				default:
 					panic(fmt.Sprintln(reflect.TypeOf(y)))
 				}
+			case REAL:
+				switch y := b.(type) {
+				case REAL:
+					return BOOLEAN(x != y)
+				default:
+					panic(fmt.Sprintln(reflect.TypeOf(y)))
+				}
 			case LONGINT:
 				switch y := b.(type) {
 				case LONGINT:
@@ -1494,6 +1510,13 @@ func (o *ops) Lss(a, b scope.Value) scope.Value {
 				default:
 					panic(fmt.Sprintln(reflect.TypeOf(y)))
 				}
+			case REAL:
+				switch y := b.(type) {
+				case REAL:
+					return BOOLEAN(x < y)
+				default:
+					panic(fmt.Sprintln(reflect.TypeOf(y)))
+				}
 			case LONGINT:
 				switch y := b.(type) {
 				case LONGINT:
@@ -1598,6 +1621,13 @@ func (o *ops) Geq(a, b scope.Value) scope.Value {
 				default:
 					panic(fmt.Sprintln(reflect.TypeOf(y)))
 				}
+			case REAL:
+				switch y := b.(type) {
+				case REAL:
+					return BOOLEAN(x >= y)
+				default:
+					panic(fmt.Sprintln(reflect.TypeOf(y)))
+				}
 			default:
 				panic(fmt.Sprintln(reflect.TypeOf(x)))
 			}

+ 2 - 1
xev/cmds.go

@@ -2,6 +2,7 @@ package xev
 
 import (
 	"archive/zip"
+	"fmt"
 	"fw/cp/module"
 	"io"
 	"path/filepath"
@@ -11,7 +12,7 @@ import (
 const CODE = "code"
 
 func Load(path, name string) (ret *module.Module) {
-	//fmt.Println(path + ` ` + name)
+	fmt.Println(path + ` ` + name)
 	//var data []byte
 	var rd io.Reader
 	r, err := zip.OpenReader(filepath.Join(path, CODE, name))