public void Render(JassArrayReferenceExpressionSyntax arrayReferenceExpression)
 {
     Render(arrayReferenceExpression.IdentifierName);
     Write(JassSymbol.LeftSquareBracket);
     Render(arrayReferenceExpression.Indexer);
     Write(JassSymbol.RightSquareBracket);
 }
Exemplo n.º 2
0
        public LuaExpressionSyntax Transpile(JassArrayReferenceExpressionSyntax arrayReferenceExpression, out JassTypeSyntax type)
        {
            type = GetVariableType(arrayReferenceExpression.IdentifierName);

            return(new LuaTableIndexAccessExpressionSyntax(
                       Transpile(arrayReferenceExpression.IdentifierName),
                       Transpile(arrayReferenceExpression.Indexer, out _)));
        }
        private bool TryAdaptArrayReferenceExpression(JassMapScriptAdapterContext context, JassArrayReferenceExpressionSyntax arrayReferenceExpression, [NotNullWhen(true)] out IExpressionSyntax?adaptedArrayReferenceExpression)
        {
            if (!context.KnownLocalVariables.ContainsKey(arrayReferenceExpression.IdentifierName.Name) &&
                !context.KnownGlobalVariables.ContainsKey(arrayReferenceExpression.IdentifierName.Name))
            {
                context.Diagnostics.Add($"Unknown array '{arrayReferenceExpression.IdentifierName}'.");
            }

            if (TryAdaptExpression(context, arrayReferenceExpression.Indexer, out var adaptedIndexer))
            {
                adaptedArrayReferenceExpression = new JassArrayReferenceExpressionSyntax(
                    arrayReferenceExpression.IdentifierName,
                    adaptedIndexer);

                return(true);
            }

            adaptedArrayReferenceExpression = null;
            return(false);
        }
Exemplo n.º 4
0
 public ExpressionSyntax Transpile(IExpressionSyntax expression)
 {
     return(expression switch
     {
         JassCharacterLiteralExpressionSyntax characterLiteralExpression => Transpile(characterLiteralExpression),
         JassFourCCLiteralExpressionSyntax fourCCLiteralExpression => Transpile(fourCCLiteralExpression),
         JassHexadecimalLiteralExpressionSyntax hexadecimalLiteralExpression => Transpile(hexadecimalLiteralExpression),
         JassRealLiteralExpressionSyntax realLiteralExpression => Transpile(realLiteralExpression),
         JassOctalLiteralExpressionSyntax octalLiteralExpression => Transpile(octalLiteralExpression),
         JassDecimalLiteralExpressionSyntax decimalLiteralExpression => Transpile(decimalLiteralExpression),
         JassBooleanLiteralExpressionSyntax booleanLiteralExpression => Transpile(booleanLiteralExpression),
         JassStringLiteralExpressionSyntax stringLiteralExpression => Transpile(stringLiteralExpression),
         JassNullLiteralExpressionSyntax nullLiteralExpression => Transpile(nullLiteralExpression),
         JassFunctionReferenceExpressionSyntax functionReferenceExpression => Transpile(functionReferenceExpression),
         JassInvocationExpressionSyntax invocationExpression => Transpile(invocationExpression),
         JassArrayReferenceExpressionSyntax arrayReferenceExpression => Transpile(arrayReferenceExpression),
         JassVariableReferenceExpressionSyntax variableReferenceExpression => Transpile(variableReferenceExpression),
         JassParenthesizedExpressionSyntax parenthesizedExpression => Transpile(parenthesizedExpression),
         JassUnaryExpressionSyntax unaryExpression => Transpile(unaryExpression),
         JassBinaryExpressionSyntax binaryExpression => Transpile(binaryExpression),
     });
 public ExpressionSyntax Transpile(JassArrayReferenceExpressionSyntax arrayReferenceExpression)
 {
     return(SyntaxFactory.ElementAccessExpression(
                SyntaxFactory.IdentifierName(Transpile(arrayReferenceExpression.IdentifierName)),
                SyntaxFactory.BracketedArgumentList(SyntaxFactory.SingletonSeparatedList(SyntaxFactory.Argument(Transpile(arrayReferenceExpression.Indexer))))));
 }