public void Add(object oS, params object[] o2) { var fixedRules = new SyntaticObject[rules.Length + 1][]; Array.Copy(rules, 0, fixedRules, 0, rules.Length); List <SyntaticObject> list = new List <SyntaticObject>(); var o = new object[o2.Length + 1]; o[0] = oS; Array.Copy(o2, 0, o, 1, o2.Length); foreach (object o1 in o) { if (o1 is string) { list.Add(new Token(o1 as string)); } else if (o1 is SyntaticObject) { list.Add(o1 as SyntaticObject); } else if (o1 is char) { list.Add(new Terminal((char)o1)); } } fixedRules[fixedRules.Length - 1] = list.ToArray(); rules = fixedRules; }
public void Add() { var fixedRules = new SyntaticObject[rules.Length + 1][]; Array.Copy(rules, 0, fixedRules, 0, rules.Length); fixedRules[fixedRules.Length - 1] = new SyntaticObject[0]; rules = fixedRules; }
public void Add(SyntaticObject o1, params SyntaticObject[] o2) { var fixedRules = new SyntaticObject[rules.Length + 1][]; Array.Copy(rules, 0, fixedRules, 0, rules.Length); var o = new SyntaticObject[o2.Length + 1]; o[0] = o1; Array.Copy(o2, 0, o, 1, o2.Length); fixedRules[fixedRules.Length - 1] = o; rules = fixedRules; }