فهرست منبع

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

kpmy 10 سال پیش
والد
کامیت
225e7d6f6b
18فایلهای تغییر یافته به همراه19 افزوده شده و 6 حذف شده
  1. BIN
      code/Cons.oz
  2. BIN
      code/Console.oz
  3. BIN
      code/JSonFormatter.oz
  4. BIN
      code/JSonGenerator.oz
  5. BIN
      code/JSonObxNoModel.oz
  6. BIN
      code/JSonParser.oz
  7. BIN
      code/Mathe.oz
  8. BIN
      code/Out.oz
  9. BIN
      code/Start3.oz
  10. BIN
      code/Str.oz
  11. BIN
      code/TestA0.oz
  12. BIN
      code/TestA1.oz
  13. BIN
      code/TestA2.oz
  14. BIN
      code/TestMath.oz
  15. BIN
      code/TestStrDyn.oz
  16. BIN
      code/TestStrings.oz
  17. 1 1
      rt2/rules/assign.go
  18. 18 5
      rt2/scope/modern/ms.go

BIN
code/Cons.oz


BIN
code/Console.oz


BIN
code/JSonFormatter.oz


BIN
code/JSonGenerator.oz


BIN
code/JSonObxNoModel.oz


BIN
code/JSonParser.oz


BIN
code/Mathe.oz


BIN
code/Out.oz


BIN
code/Start3.oz


BIN
code/Str.oz


BIN
code/TestA0.oz


BIN
code/TestA1.oz


BIN
code/TestA2.oz


BIN
code/TestMath.oz


BIN
code/TestStrDyn.oz


BIN
code/TestStrings.oz


+ 1 - 1
rt2/rules/assign.go

@@ -232,7 +232,7 @@ func assignSeq(f frame.Frame) (seq frame.Sequence, ret frame.WAIT) {
 				panic(0)
 			}))
 		} else {
-			//fmt.Println("NEW here")
+			//fmt.Println("NEW here", a.Left().Adr())
 			fn := heap.Allocate(a.Left())
 			sc.Update(a.Left().Object().Adr(), fn)
 			return frame.End()

+ 18 - 5
rt2/scope/modern/ms.go

@@ -116,7 +116,14 @@ func (l *level) alloc(d context.Domain, mod *cpm.Module, root node.Node, ol []ob
 					for rec := t; rec != nil; {
 						for x := rec.Link(); x != nil; x = x.Link() {
 							//fmt.Println(o.Name(), ".", x.Name(), x.Adr())
-							fl = append(fl, x)
+							switch x.(type) {
+							case object.FieldObject:
+								fl = append(fl, x)
+							case object.ParameterObject, object.ProcedureObject, object.VariableObject:
+								//do nothing
+							default:
+								halt.As(100, reflect.TypeOf(x))
+							}
 						}
 						if rec.BaseRec() == nil {
 							x := ml.NewTypeCalc()
@@ -142,11 +149,17 @@ func (l *level) alloc(d context.Domain, mod *cpm.Module, root node.Node, ol []ob
 			case object.TypeObject, object.ConstantObject, object.ProcedureObject, object.Module:
 				//do nothing
 			case object.ParameterObject:
-				if root.(node.EnterNode).Enter() == enter.PROCEDURE {
-					l.r[l.next] = newRef(x)
-					l.k[x.Adr()] = l.next
-					l.next++
+				switch r := root.(type) {
+				case node.EnterNode:
+					if r.Enter() == enter.PROCEDURE {
+						l.r[l.next] = newRef(x)
+						l.k[x.Adr()] = l.next
+						l.next++
+					}
+				default:
+					halt.As(100, reflect.TypeOf(r), x.Adr())
 				}
+
 			default:
 				halt.As(20, reflect.TypeOf(x))
 			}