public override string Template() { var conditionFunc = Healpers.GetFunctionId(); var endFunc = Healpers.GetFunctionId(); var tmp = $"# for {Initialise};{Condition};{PostExpression}" + $"\n{Initialise.Template()}" + $"\n{conditionFunc}:" + $"\n# {Condition}" + $"\n{Condition.Template()}" + "\ncmpq\t$0,%rax\t# compare condition result to 0" + $"\nje\t{endFunc}\t# jump to end if condition false" + $"\n{Statement.Template()}"; var end = $"\n{PostExpression.Template()}" + $"\njmp\t{conditionFunc}\t# loop" + $"\n{endFunc}:\n"; var continuePoint = Scope.UseContinue(); var breakPoint = Scope.UseBreakpoint(); return(tmp + (continuePoint != null ? $"\n{continuePoint}:\t# Continue point" : "") + end + (breakPoint != null ? $"{breakPoint}:\t# Breakpoint\n" : "")); }
public override string ToString() { return(PostExpression.Aggregate(string.Empty, (word, token) => $"{token.Value} {word}").TrimEnd()); }