|
@@ -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)))
|
|
|
}
|