public override TreeNode GetAstCodeGenerator(SymbolTable t) { switch (op) { case "<": var less = new Lt((MIPSCodeGenerator.Expression)Left.GetAstCodeGenerator(t), (MIPSCodeGenerator.Expression)Rigth.GetAstCodeGenerator(t), Line); SetGeneratorType(less); return(less); case "<=": var lesseq = new Leq((MIPSCodeGenerator.Expression)Left.GetAstCodeGenerator(t), (MIPSCodeGenerator.Expression)Rigth.GetAstCodeGenerator(t), Line); SetGeneratorType(lesseq); return(lesseq); case "=": var eq = new Eq((MIPSCodeGenerator.Expression)Left.GetAstCodeGenerator(t), (MIPSCodeGenerator.Expression)Rigth.GetAstCodeGenerator(t), Line); SetGeneratorType(eq); return(eq); case ">": var greater = new Lt((MIPSCodeGenerator.Expression)Rigth.GetAstCodeGenerator(t), (MIPSCodeGenerator.Expression)Left.GetAstCodeGenerator(t), Line); SetGeneratorType(greater); return(greater); case ">=": var greaterEq = new Leq((MIPSCodeGenerator.Expression)Rigth.GetAstCodeGenerator(t), (MIPSCodeGenerator.Expression)Left.GetAstCodeGenerator(t), Line); SetGeneratorType(greaterEq); return(greaterEq); default: throw new InvalidOperationException(); } }
/// <summary> /// Add a <Leq>-Tag /// </summary> /// <returns><see cref="BaseCoreComparingGroupElement{T}"/></returns> public static T Leq <T>(this T parent, Action <Leq> action) where T : BaseCoreComparingGroupElement <T> { var leq = new Leq(); action(leq); parent.Childs.Add(leq); return(parent); }