public override void CodeGen(CodeBuilder builder) { base.CodeGen(builder); Visibility.CodeGen(builder); Type.CodeGen(builder); builder.AppendToken(Name); builder.BeginBlock(); // Getter builder.AppendToken("get"); builder.BeginBlock(); GetterStatement.CodeGen(builder); builder.EndBlock(); builder.EndOfLine(); // EndBlock-Verhalten überschreiben, sodass keine Leerzeile entsteht // Setter builder.AppendToken("set"); builder.BeginBlock(); SetterStatement.CodeGen(builder); builder.EndBlock(); builder.EndBlock(); }
public void CodeGen(CodeBuilder builder) { if (Summary != null) { builder.AppendSummary(Summary); } Visibility.CodeGen(builder); if (ReturnType != null) { ReturnType.CodeGen(builder); } else { builder.AppendToken("void"); } builder.AppendToken(Name); builder.ForceNoWhitespace(); builder.AppendToken("()"); builder.BeginBlock(); Body.CodeGen(builder); builder.EndBlock(); }
public void CodeGen(CodeBuilder builder) { if (Summary != null) { builder.AppendSummary(Summary); } Visibility.CodeGen(builder); if (CompileTimeConstant) { builder.AppendToken("const"); } else { builder.AppendToken("static readonly"); } Type.CodeGen(builder); builder.AppendToken(Name); builder.AppendToken("="); Expression.CodeGen(builder); builder.EndOfStatement(); }
public override void CodeGen(CodeBuilder builder) { base.CodeGen(builder); Visibility.CodeGen(builder); Type.CodeGen(builder); builder.AppendToken(Name); builder.AppendToken("=>"); Expression.CodeGen(builder); builder.EndOfStatement(); builder.EndOfLineBlock(); }
public override void CodeGen(CodeBuilder builder) { base.CodeGen(builder); if (!Getter && !Setter) { throw new InvalidOperationException("Property muss einen Getter oder Setter haben"); } Visibility.CodeGen(builder); Type.CodeGen(builder); builder.AppendToken(Name); builder.AppendToken("{"); if (Getter) { builder.AppendToken("get;"); } if (Setter) { builder.AppendToken("set;"); } builder.AppendToken("}"); if (DefaultExpression != null) { builder.AppendToken("="); DefaultExpression.CodeGen(builder); builder.EndOfStatement(); builder.EndOfLineBlock(); } else { builder.EndOfLineBlock(); } }
public void CodeGen(CodeBuilder builder) { Visibility.CodeGen(builder); switch (ModuleType) { case ModuleTypes.Class: builder.AppendToken("class"); break; case ModuleTypes.Struct: builder.AppendToken("struct"); break; default: throw new ArgumentOutOfRangeException(); } builder.AppendToken(Name); if (Inheritations.Any()) { builder.AppendToken(":"); builder.BeginSeparatedList(","); foreach (var inheritation in Inheritations) { inheritation.CodeGen(builder); builder.EndOfSeparatedListItem(); } builder.EndOfSeparatedList(); } builder.BeginBlock(); foreach (var constant in Constants) { constant.CodeGen(builder); } // Leerzeile nach den Konstanten if (Constants.Any()) { builder.EndOfLineBlock(); } // Konstruktor erzeugen var constructorProperties = Properties.Where(p => p.SetInConstructor).ToList(); if (constructorProperties.Any()) { CodeGenConstructor(builder, constructorProperties); } foreach (var property in Properties) { property.CodeGen(builder); } foreach (var method in Methods) { method.CodeGen(builder); } foreach (string code in StaticCode) { builder.AppendStaticCode(code); } builder.EndBlock(); }