Refactor VM and operators
Some checks failed
Build / build (push) Failing after 5m54s
Publish Image / publish (push) Failing after 44s
Test / build (push) Failing after 5m21s

This commit is contained in:
Chuck Smith
2024-03-29 17:59:34 -04:00
parent 7435a993d9
commit 3b6df3e813
11 changed files with 979 additions and 639 deletions

View File

@@ -35,6 +35,24 @@ func (b *Boolean) Int() int {
return 0
}
func (b *Boolean) LogicalAnd(other Object) (Object, error) {
if !AssertTypes(other, BooleanType, IntegerType) {
return nil, NewBinaryOpError(b, other, "&&")
}
return &Boolean{b.Value && other.Bool()}, nil
}
func (b *Boolean) LogicalOr(other Object) (Object, error) {
if !AssertTypes(other, BooleanType, IntegerType) {
return nil, NewBinaryOpError(b, other, "||")
}
return &Boolean{b.Value || other.Bool()}, nil
}
func (b *Boolean) LogicalNot() Object {
return &Boolean{!b.Value}
}
func (b *Boolean) Compare(other Object) int {
if obj, ok := other.(*Boolean); ok {
return b.Int() - obj.Int()