public void Render(JassArrayReferenceExpressionSyntax arrayReferenceExpression) { Render(arrayReferenceExpression.IdentifierName); Write(JassSymbol.LeftSquareBracket); Render(arrayReferenceExpression.Indexer); Write(JassSymbol.RightSquareBracket); }
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); }
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)))))); }