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  }