Example #1
0
 public override void GenerateCode(Writer.Writer Writer, API api)
 {
     Writer.WriteString($"\t\tfor ({identifier} of ");
     expression.GenerateCode(Writer, api);
     Writer.WriteStringLine(") {");
     this.body.GenerateCode(Writer, api);
     Writer.WriteStringLine("\t\t}");
 }
Example #2
0
        public override void GenerateCode(Writer.Writer writer, API api)
        {
            var name = api.getNamespaceForType(this).Identifier.ToString() == "default" ? this.Identifier.ToString() : $"{api.getNamespaceForType(this).Identifier}.{this.Identifier}";

            writer.WriteStringLine($"GeneratedNamespace.{name} = {{");

            foreach (var _enum in this.EnumItems)
            {
                writer.WriteStringLine($"\t{_enum.Identifier} : {_enum.value},");
            }

            writer.WriteStringLine($"}}");
            this.generated = true;
        }
 public override void GenerateCode(Writer.Writer Writer, API api)
 {
     Writer.WriteStringLine($"\t\tfor (");
     if (this.Initializer != null)
     {
         this.Initializer.GenerateCode(Writer, api);
     }
     Writer.WriteString(";");
     if (this.expression != null)
     {
         expression.GenerateCode(Writer, api);
     }
     Writer.WriteString(";");
     Writer.WriteStringLine(") {");
     if (this.StatementBlock != null)
     {
         StatementBlock.GenerateCode(Writer, api);
     }
     Writer.WriteStringLine("\t\t}");
 }
        public override void GenerateCode(Writer.Writer Writer, API api)
        {
            if (this.generated)
            {
                return;
            }
            var name = api.getNamespaceForType(this).Identifier.ToString() == "default" ? this.Identifier.ToString() : $"{api.getNamespaceForType(this).Identifier}.{this.Identifier}";

            var parentName = "GeneratedNamespace.Object";

            if (this.parents.Count != 0)
            {
                foreach (var parent in parents)
                {
                    if (parent.Value is ClassTypeNode)
                    {
                        parent.Value.GenerateCode(Writer, api);
                        parentName = api.getFullName(parent.Value) + "." + parent.Key;
                    }
                }
            }

            Writer.WriteStringLine($"GeneratedNamespace.{name} = class extends {parentName} {{");

            foreach (var constructor in Constructors)
            {
                var paramNames      = api.getParamNames(constructor.parameters);
                var constructorName = api.buildFixedParams(constructor.parameters);
                constructorName = constructorName.Replace("(", "");
                constructorName = constructorName.Replace(")", "");
                constructorName = constructorName.Replace(",", "_");
                var constName = constructorName == "" ? constructorName : "_" + constructorName;
                Writer.WriteString($"\t{this.Identifier}{constName}{paramNames} {{\n");
                constructor.statementBlock.GenerateCode(Writer, api);
                Writer.WriteString($"\t}}\n");
            }

            foreach (var method in Methods)
            {
                var paramNames = api.getParamNames(method.methodHeaderNode.fixedParams);
                var methodName = api.buildFixedParams(method.methodHeaderNode.fixedParams);
                methodName = methodName.Replace("(", "");
                methodName = methodName.Replace(")", "");
                methodName = methodName.Replace(",", "_");
                var methodHheaderName = methodName == "" ? methodName : "_" + methodName;
                Writer.WriteString($"\t{method.methodHeaderNode.Identifier}{methodHheaderName}{paramNames} {{\n");
                if (method.statemetBlock != null)
                {
                    method.statemetBlock.GenerateCode(Writer, api);
                }
                Writer.WriteString($"\t}}\n");
            }

            Writer.WriteString($"\tconstructor(){{\n");

            foreach (var field in Fields)
            {
                if (field.isStatic)
                {
                    continue;
                }
                var val = "null";
                Writer.WriteString($"\t\tthis.{field.identifier} = {val};\n");
            }
            var defaultArgs = @"
        let argumentos = Array.from(arguments);
        let argus = argumentos.slice(1);
        if (argumentos.length >= 1) this[arguments[0]](...argus);";

            Writer.WriteString(defaultArgs);

            Writer.WriteString($"\n\t}}\n");
            Writer.WriteString($"}}\n");

            foreach (var field in Fields)
            {
                if (!field.isStatic)
                {
                    continue;
                }
                var val = "null";
                Writer.WriteString($"GeneratedNamespace.{name}.{field.identifier} = {val};\n");
            }
            this.generated = true;
        }