using uCalcSoftware;

var uc = new uCalc();

static void ItemCallback(uCalc.Callback cb) {
   var itm = cb.Item;
   Console.WriteLine($"Name: {itm.Name}");
   Console.WriteLine($"Data type: {itm.DataType.Name}");
   Console.WriteLine($"Param count: {(itm.Count).ToString()}");
   Console.Write("Procedure type: ");
   if (itm.IsProperty(ItemIs.Operator)) {
      Console.WriteLine("Operator");
   } else if (itm.IsProperty(ItemIs.Function)) {
      Console.WriteLine("Function");
   }
   Console.WriteLine($"Definition: {itm.Text}");
   Console.WriteLine($"Description: {itm.Description}");
   Console.WriteLine("---");
}

uc.DefineFunction("AAA() As Double", ItemCallback).Description = "Does this and that";
uc.DefineFunction("BBB(x, y, z) As String", ItemCallback).Description = "Does something else";
uc.DefineOperator("{x} CCC {y} As Int32", 55, Associativity.LeftToRight, ItemCallback);

uc.EvalStr("AAA()");
uc.EvalStr("BBB(9, 8, 7)");
uc.EvalStr("5 CCC 4");