Exemple #1
0
 internal void Render(LuaCompilationUnitSyntax node)
 {
     foreach (var statement in node.Statements)
     {
         statement.Render(this);
     }
 }
Exemple #2
0
 private void Write(LuaCompilationUnitSyntax luaCompilationUnit, string outFile)
 {
     using (var writer = new StreamWriter(outFile, false, Encoding)) {
         LuaRenderer rener = new LuaRenderer(this, writer);
         luaCompilationUnit.Render(rener);
     }
 }
Exemple #3
0
        public override void BuildConfigFunction(string path, string mapName, string mapDescription, string lobbyMusic, params PlayerSlot[] playerSlots)
        {
            var fileSyntax = new LuaCompilationUnitSyntax();

            fileSyntax.AddStatement(GetConfigFunctionSyntax(mapName, mapDescription, lobbyMusic, playerSlots));
            RenderFunctionToFile(path, fileSyntax);
        }
Exemple #4
0
        public override void BuildMainFunction(string path, float left, float right, float top, float bottom, Tileset light, SoundEnvironment sound, params string[] initFunctions)
        {
            var fileSyntax = new LuaCompilationUnitSyntax();

            fileSyntax.AddStatement(GetMainFunctionSyntax(left, right, top, bottom, light, sound, initFunctions));
            RenderFunctionToFile(path, fileSyntax);
        }
        public LuaCompilationUnitSyntax Transpile(JassCompilationUnitSyntax compilationUnit)
        {
            var luaCompilationUnit = new LuaCompilationUnitSyntax(hasGeneratedMark: false);

            luaCompilationUnit.Statements.AddRange(compilationUnit.Declarations.SelectMany(Transpile));

            return(luaCompilationUnit);
        }
Exemple #6
0
        private void ExportManifestFile(List <string> modules, string outFolder)
        {
            const string kDir          = "dir";
            const string kDirInitCode  = "dir = (dir and #dir > 0) and (dir .. '.') or \"\"";
            const string kRequire      = "require";
            const string kLoadCode     = "local load = function(module) return require(dir .. module) end";
            const string kLoad         = "load";
            const string kInit         = "System.init";
            const string kManifestFile = "manifest.lua";

            if (modules.Count > 0)
            {
                modules.Sort();
                var types = GetExportTypes();
                if (types.Count > 0)
                {
                    LuaFunctionExpressionSyntax functionExpression = new LuaFunctionExpressionSyntax();
                    functionExpression.AddParameter(new LuaIdentifierNameSyntax(kDir));
                    functionExpression.AddStatement(new LuaIdentifierNameSyntax(kDirInitCode));

                    LuaIdentifierNameSyntax requireIdentifier = new LuaIdentifierNameSyntax(kRequire);
                    functionExpression.AddStatement(new LuaLocalVariableDeclaratorSyntax(requireIdentifier, requireIdentifier));

                    functionExpression.AddStatement(new LuaIdentifierNameSyntax(kLoadCode));
                    functionExpression.AddStatement(LuaBlankLinesStatement.One);

                    LuaIdentifierNameSyntax loadIdentifier = new LuaIdentifierNameSyntax(kLoad);
                    foreach (string module in modules)
                    {
                        var argument   = new LuaStringLiteralExpressionSyntax(new LuaIdentifierNameSyntax(module));
                        var invocation = new LuaInvocationExpressionSyntax(loadIdentifier, argument);
                        functionExpression.AddStatement(invocation);
                    }
                    functionExpression.AddStatement(LuaBlankLinesStatement.One);

                    LuaTableInitializerExpression typeTable = new LuaTableInitializerExpression();
                    foreach (var type in types)
                    {
                        LuaIdentifierNameSyntax typeName = XmlMetaProvider.GetTypeShortName(type);
                        typeTable.Items.Add(new LuaSingleTableItemSyntax(new LuaStringLiteralExpressionSyntax(typeName)));
                    }

                    LuaInvocationExpressionSyntax initInvocation = new LuaInvocationExpressionSyntax(new LuaIdentifierNameSyntax(kInit), typeTable);
                    FillManifestInitConf(initInvocation);
                    functionExpression.AddStatement(initInvocation);

                    LuaCompilationUnitSyntax luaCompilationUnit = new LuaCompilationUnitSyntax();
                    luaCompilationUnit.Statements.Add(new LuaReturnStatementSyntax(functionExpression));

                    string outFile = Path.Combine(outFolder, kManifestFile);
                    Write(luaCompilationUnit, outFile);
                }
            }
        }
Exemple #7
0
        private static void RenderFunctionToFile(string path, LuaCompilationUnitSyntax luaCompilationUnit)
        {
            using (var fileStream = File.Create(path))
            {
                using (var writer = new StreamWriter(fileStream, new UTF8Encoding(false, true)))
                {
                    var renderSettings = new LuaSyntaxGenerator.SettingInfo();
                    renderSettings.Indent = 4;

                    var renderer = new LuaRenderer(renderSettings, writer);
                    renderer.RenderCompilationUnit(luaCompilationUnit);
                }
            }
        }
Exemple #8
0
        private void RenderToFile(string path, IEnumerable <LuaVariableListDeclarationSyntax> functions)
        {
            using (var fileStream = FileProvider.OpenNewWrite(path))
            {
                using (var writer = new StreamWriter(fileStream, new UTF8Encoding(false, true)))
                {
                    var renderer = new LuaRenderer(_rendererOptions, writer);

                    var compilationUnitSyntax = new LuaCompilationUnitSyntax();
                    foreach (var function in functions)
                    {
                        compilationUnitSyntax.AddStatement(function);
                    }

                    renderer.RenderCompilationUnit(compilationUnitSyntax);
                }
            }
        }
Exemple #9
0
 internal void Render(LuaCompilationUnitSyntax node)
 {
     WriteNodes(node.Statements);
 }
Exemple #10
0
        internal void AddPartialTypeDeclaration(INamedTypeSymbol typeSymbol, TypeDeclarationSyntax node, LuaTypeDeclarationSyntax luaNode, LuaCompilationUnitSyntax compilationUnit)
        {
            var list = partialTypes_.GetOrDefault(typeSymbol);

            if (list == null)
            {
                list = new List <PartialTypeDeclaration>();
                partialTypes_.Add(typeSymbol, list);
            }
            list.Add(new PartialTypeDeclaration()
            {
                Symbol          = typeSymbol,
                Node            = node,
                TypeDeclaration = luaNode,
                CompilationUnit = compilationUnit,
            });
        }
Exemple #11
0
 public LuaEnumDeclarationSyntax(string fullName, LuaIdentifierNameSyntax name, LuaCompilationUnitSyntax compilationUnit)
 {
     FullName        = fullName;
     CompilationUnit = compilationUnit;
     UpdateIdentifiers(name, LuaIdentifierNameSyntax.Namespace, LuaIdentifierNameSyntax.Enum);
 }
Exemple #12
0
 public void RenderCompilationUnit(LuaCompilationUnitSyntax luaCompilationUnit)
 {
     luaCompilationUnit.Render(this);
 }