public override void CodeGen(CodeBuilder builder)
        {
            if (BaseExpression != null)
            {
                BaseExpression.CodeGen(builder);
                builder.AppendToken(".");
                builder.ForceNoWhitespace();
            }

            builder.AppendToken(Function);
            builder.ForceNoWhitespace();
            builder.AppendToken("(");
            builder.ForceNoWhitespace();
            builder.BeginSeparatedList(",");

            foreach (var argument in Arguments)
            {
                argument.CodeGen(builder);
                builder.EndOfSeparatedListItem();
            }

            builder.EndOfSeparatedList();
            builder.AppendToken(")");

            builder.EndOfStatement();
        }
        private void CodeGenConstructor(CodeBuilder builder, IReadOnlyList <PropertyBuilder> constructorProperties)
        {
            builder.AppendToken("public");
            builder.AppendToken(Name);
            builder.ForceNoWhitespace();
            builder.AppendToken("(");
            builder.ForceNoWhitespace();
            builder.BeginSeparatedList(",");

            foreach (var property in constructorProperties)
            {
                property.Type.CodeGen(builder);
                builder.AppendToken(property.GenerateParameterName());
                builder.EndOfSeparatedListItem();
            }

            builder.EndOfSeparatedList();
            builder.AppendToken(")");

            builder.BeginBlock();

            foreach (var property in constructorProperties)
            {
                builder.AppendToken(property.Name);
                builder.AppendToken("=");
                builder.AppendToken(property.GenerateParameterName());
                builder.EndOfStatement();
            }

            builder.EndBlock();
        }
        public override void CodeGen(CodeBuilder builder)
        {
            builder.AppendToken("return");

            Expression.CodeGen(builder);

            builder.EndOfStatement();
        }
Exemple #4
0
        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();
        }
Exemple #5
0
        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();
            }
        }
Exemple #6
0
        public void CodeGen(CodeBuilder builder)
        {
            if (string.IsNullOrEmpty(Namespace))
            {
                throw new InvalidOperationException("Kein Namespace angegeben");
            }

            // Header
            if (!string.IsNullOrEmpty(Header))
            {
                builder.AppendMultiLineComment(Header);
            }

            // Using-Direktiven
            foreach (string u in Usings)
            {
                builder.AppendToken("using");
                builder.AppendToken(u);
                builder.EndOfStatement();
            }

            builder.EndOfLineBlock();

            // Namespace
            builder.AppendToken("namespace");
            builder.AppendToken(Namespace);
            builder.BeginBlock();

            // Inhalt
            foreach (var module in Modules)
            {
                module.CodeGen(builder);
            }

            builder.EndBlock();
        }