コード例 #1
0
 public IEnumerable <MemberDeclarationSyntax> Transpile(IDeclarationSyntax declaration)
 {
     return(declaration switch
     {
         JassTypeDeclarationSyntax typeDeclaration => new[] { Transpile(typeDeclaration) },
         JassGlobalDeclarationListSyntax globalDeclarationList => Transpile(globalDeclarationList),
         JassGlobalDeclarationSyntax globalDeclaration => new[] { Transpile(globalDeclaration) },
         JassNativeFunctionDeclarationSyntax nativeFunctionDeclaration => new[] { Transpile(nativeFunctionDeclaration) },
         JassFunctionDeclarationSyntax functionDeclaration => new[] { Transpile(functionDeclaration) },
         _ => Array.Empty <MemberDeclarationSyntax>(),
     });
コード例 #2
0
        public IEnumerable <LuaStatementSyntax> Transpile(IDeclarationSyntax declaration)
        {
            if (declaration is JassNativeFunctionDeclarationSyntax nativeFunctionDeclaration)
            {
                RegisterFunctionReturnType(nativeFunctionDeclaration.FunctionDeclarator);
            }

            return(declaration switch
            {
                JassEmptyDeclarationSyntax emptyDeclaration => IgnoreEmptyDeclarations?Array.Empty <LuaStatementSyntax>() : new[] { Transpile(emptyDeclaration) },
                JassCommentDeclarationSyntax commentDeclaration => IgnoreComments?Array.Empty <LuaStatementSyntax>() : new[] { Transpile(commentDeclaration) },
                JassGlobalDeclarationListSyntax globalDeclarationList => Transpile(globalDeclarationList),
                JassGlobalDeclarationSyntax globalDeclaration => new[] { Transpile(globalDeclaration) },
                JassFunctionDeclarationSyntax functionDeclaration => IgnoreEmptyDeclarations && KeepFunctionsSeparated ? new[] { Transpile(functionDeclaration), LuaBlankLinesStatement.One } : new[] { Transpile(functionDeclaration) },
                _ => Array.Empty <LuaStatementSyntax>(),
            });
コード例 #3
0
        public void Render(IDeclarationSyntax declaration)
        {
            switch (declaration)
            {
            case JassCommentDeclarationSyntax commentDeclaration: Render(commentDeclaration); break;

            case JassTypeDeclarationSyntax typeDeclaration: Render(typeDeclaration); break;

            case JassGlobalDeclarationListSyntax globalDeclarationList: Render(globalDeclarationList); break;

            case JassGlobalDeclarationSyntax globalDeclaration: Render(globalDeclaration); break;

            case JassNativeFunctionDeclarationSyntax nativeFunctionDeclaration: Render(nativeFunctionDeclaration); break;

            case JassFunctionDeclarationSyntax functionDeclaration: Render(functionDeclaration); break;
            }
        }