Operator definitions; infix, prefix, postfix, data types, precedence

ID: 64

				
					using uCalcSoftware;

var uc = new uCalc();
uc.DefineOperator("{x} MyOp {y} = x + y", 0); // Infix operator with alphanumeric name
uc.DefineOperator("@@ {number} = number * 2", 0); // Prefix operator with symbolic name
uc.DefineOperator("{val} % = val / 100", 0); // Postfix operator with symbolic name
uc.DefineOperator("{a} times {b} = a * b", uc.ItemOf("*").Precedence); // Specifying precedence
uc.DefineOperator("{TextA As String} concat {TextB As String} As String = TextA + TextB", 0); // Specifying types

Console.WriteLine(uc.Eval("5 MyOp 4"));
Console.WriteLine(uc.Eval("@@5"));
Console.WriteLine(uc.Eval("5 %"));
Console.WriteLine(uc.Eval("3 times 5"));
Console.WriteLine(uc.EvalStr("'Hello' concat ' world!'"));
				
			
9
10
0.05
15
Hello world!
				
					#include <iostream>
#include "uCalc.h"

using namespace std;
using namespace uCalcSoftware;

int main() {
   uCalc uc;
   uc.DefineOperator("{x} MyOp {y} = x + y", 0); // Infix operator with alphanumeric name
   uc.DefineOperator("@@ {number} = number * 2", 0); // Prefix operator with symbolic name
   uc.DefineOperator("{val} % = val / 100", 0); // Postfix operator with symbolic name
   uc.DefineOperator("{a} times {b} = a * b", uc.ItemOf("*").Precedence()); // Specifying precedence
   uc.DefineOperator("{TextA As String} concat {TextB As String} As String = TextA + TextB", 0); // Specifying types

   cout << uc.Eval("5 MyOp 4") << endl;
   cout << uc.Eval("@@5") << endl;
   cout << uc.Eval("5 %") << endl;
   cout << uc.Eval("3 times 5") << endl;
   cout << uc.EvalStr("'Hello' concat ' world!'") << endl;
}
				
			
9
10
0.05
15
Hello world!
				
					Imports System
Imports uCalcSoftware
Public Module Program
   Public Sub Main()
      Dim uc As New uCalc()
      uc.DefineOperator("{x} MyOp {y} = x + y", 0) '// Infix operator with alphanumeric name
      uc.DefineOperator("@@ {number} = number * 2", 0) '// Prefix operator with symbolic name
      uc.DefineOperator("{val} % = val / 100", 0) '// Postfix operator with symbolic name
      uc.DefineOperator("{a} times {b} = a * b", uc.ItemOf("*").Precedence) '// Specifying precedence
      uc.DefineOperator("{TextA As String} concat {TextB As String} As String = TextA + TextB", 0) '// Specifying types
      
      Console.WriteLine(uc.Eval("5 MyOp 4"))
      Console.WriteLine(uc.Eval("@@5"))
      Console.WriteLine(uc.Eval("5 %"))
      Console.WriteLine(uc.Eval("3 times 5"))
      Console.WriteLine(uc.EvalStr("'Hello' concat ' world!'"))
   End Sub
End Module
				
			
9
10
0.05
15
Hello world!