github.com/lmorg/murex@v0.0.0-20240217211045-e081c89cd4ef/lang/expressions/exp03.go (about) 1 package expressions 2 3 import ( 4 "github.com/lmorg/murex/lang/expressions/primitives" 5 "github.com/lmorg/murex/lang/expressions/symbols" 6 ) 7 8 func expMultiply(tree *ParserT) error { 9 left, right, err := tree.getLeftAndRightSymbols() 10 if err != nil { 11 return err 12 } 13 14 lv, rv, err := validateNumericalDataTypes(tree, left, right, tree.currentSymbol()) 15 if err != nil { 16 return err 17 } 18 19 return tree.foldAst(&astNodeT{ 20 key: symbols.Number, 21 pos: tree.ast[tree.astPos].pos, 22 dt: primitives.NewPrimitive(primitives.Number, lv*rv), 23 }) 24 } 25 26 func expDivide(tree *ParserT) error { 27 left, right, err := tree.getLeftAndRightSymbols() 28 if err != nil { 29 return err 30 } 31 32 lv, rv, err := validateNumericalDataTypes(tree, left, right, tree.currentSymbol()) 33 if err != nil { 34 return err 35 } 36 37 return tree.foldAst(&astNodeT{ 38 key: symbols.Number, 39 pos: tree.ast[tree.astPos].pos, 40 dt: primitives.NewPrimitive(primitives.Number, lv/rv), 41 }) 42 }