internal override void Check() { // Number of children fits required number of args TreeAnalyzer.AssertTree(Children.Count == SyntaxInfo.GetFuncArg(Name), "Wrong number of children"); // Checks whether the function exist TreeAnalyzer.AssertTree(Const.IsReservedName(Name), "Unknown function"); }
internal override void Check() { // Var has no children TreeAnalyzer.AssertTree(Children.Count == 0, "A variable cannot have children"); // Reserved word (e. g. "sumf") can't be a var's name TreeAnalyzer.AssertTree(!Const.IsReservedName(Name), "`" + Name + "` is a reserved word"); }
internal override void Check() { // Only binary operators are available so far TreeAnalyzer.AssertTree(Children.Count == 2, "Wrong number of children"); // If operator exists TreeAnalyzer.AssertTree(Const.IsReservedName(Name), "Unknown operator"); // Detect division by 0 TreeAnalyzer.AssertTree(Name != "divf" || Children[1] != 0, "Division by zero"); }
internal override void Check() { // Can't have other name TreeAnalyzer.AssertTree(Name == "tensort", "Tensors must have Name=tensort"); // Tensor can't be scalar TreeAnalyzer.AssertTree(Dimensions > 0, "Dimensions can't be equal to 0"); // All elements are not null for (int i = 0; i < Data.Length; i++) { TreeAnalyzer.AssertTree(Data[i] != null, "One tensor's element is null"); } }
internal override void Check() { // Number has no children TreeAnalyzer.AssertTree(Children.Count == 0, "A number cannot have children"); }