示例#1
0
        private bool TryAdaptDeclaration(JassMapScriptAdapterContext context, ITopLevelDeclarationSyntax declaration, [NotNullWhen(true)] out ITopLevelDeclarationSyntax?adaptedDeclaration)
        {
            return(declaration switch
            {
                JassGlobalDeclarationListSyntax globalDeclarationList => TryAdaptGlobalDeclarationList(context, globalDeclarationList, out adaptedDeclaration),
                JassNativeFunctionDeclarationSyntax nativeFunctionDeclaration => TryAdaptNativeFunctionDeclaration(context, nativeFunctionDeclaration, out adaptedDeclaration),
                JassFunctionDeclarationSyntax functionDeclaration => TryAdaptFunctionDeclaration(context, functionDeclaration, out adaptedDeclaration),
                JassTypeDeclarationSyntax typeDeclaration => TryAdaptTypeDeclaration(context, typeDeclaration, out adaptedDeclaration),

                _ => TryAdaptDummy(context, declaration, out adaptedDeclaration),
            });
示例#2
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>(),
     });
        private bool TryAdaptNativeFunctionDeclaration(JassMapScriptAdapterContext context, JassNativeFunctionDeclarationSyntax nativeFunctionDeclaration, [NotNullWhen(true)] out ITopLevelDeclarationSyntax?adaptedNativeFunctionDeclaration)
        {
            if (TryAdaptFunctionDeclarator(context, nativeFunctionDeclaration.FunctionDeclarator, out var adaptedFunctionDeclarator))
            {
                adaptedNativeFunctionDeclaration = new JassNativeFunctionDeclarationSyntax(adaptedFunctionDeclarator);
                return(true);
            }

            adaptedNativeFunctionDeclaration = null;
            return(false);
        }
 public void Render(JassNativeFunctionDeclarationSyntax nativeFunctionDeclaration)
 {
     Write($"{JassKeyword.Native} ");
     Render(nativeFunctionDeclaration.FunctionDeclarator);
 }
 public MemberDeclarationSyntax Transpile(JassNativeFunctionDeclarationSyntax nativeFunctionDeclaration)
 {
     return(SyntaxFactory.MethodDeclaration(