/// <summary> /// Transfering a list of strings to a list of token elements /// </summary> /// <param name="ListS"> list of strings </param> /// <returns> list of token elements </returns> static List<Element> StringsToElements(List<string> ListS) { List<Element> ListE = new List<Element>(); foreach (string s in ListS) { Element n = new Element(s); switch (n.Type) { case C.Operation: n = new Operation(n); break; case C.Number: n = new Number(n); break; case C.Function: n = new FunctionElement(n); break; case C.Control: n = new Control(n); break; } ListE.Add(n); } return ListE; }
/// <summary> /// Creating an operation based on an existing element /// </summary> /// <param name="e"> existing element </param> public Operation(Element e) { iType = C.Operation; sValue = e.ToString(); switch (sValue) { case "+": iRank = 1; break; case "-": iRank = 1; break; case "*": iRank = 2; break; case "/": iRank = 2; break; case "%": iRank = 2; break; case "^": iRank = 3; break; } }
/// <summary> /// creating a number based on an existing element /// </summary> /// <param name="e"> existing element </param> public Number(Element e) { iType = C.Number; sValue = e.ToString(); try // Checking if it is supposed to be a variable { dValue = double.Parse(sValue); } catch { sName = sValue; // creating a new variable if it doesn't exist yet Number n = Variable.CheckName(sName); if (n == null) { Number num = new Number("0"); num.Name = sName; Variable.Add(num); } } }
/// <summary> /// Creating a control element based on an existing element /// </summary> /// <param name="e"> existing element </param> public Control(Element e) { iType = C.Control; sValue = e.ToString(); }
/// <summary> /// Creating a function element based on an existing element /// </summary> /// <param name="e"> existing element </param> public FunctionElement(Element e) { iType = C.Function; sValue = e.ToString(); }