public LuaStatementSyntax Transpile(JassSetStatementSyntax setStatement) { return(new LuaAssignmentExpressionSyntax( setStatement.Indexer is null ? Transpile(setStatement.IdentifierName) : new LuaTableIndexAccessExpressionSyntax(Transpile(setStatement.IdentifierName), Transpile(setStatement.Indexer, out _)), Transpile(setStatement.Value))); }
private bool TryAdaptStatement(JassMapScriptAdapterContext context, IStatementSyntax statement, [NotNullWhen(true)] out IStatementSyntax?adaptedStatement) { return(statement switch { JassLocalVariableDeclarationStatementSyntax localVariableDeclarationStatement => TryAdaptLocalVariableDeclarationStatement(context, localVariableDeclarationStatement, out adaptedStatement), JassSetStatementSyntax setStatement => TryAdaptSetStatement(context, setStatement, out adaptedStatement), JassCallStatementSyntax callStatement => TryAdaptCallStatement(context, callStatement, out adaptedStatement), JassIfStatementSyntax ifStatement => TryAdaptIfStatement(context, ifStatement, out adaptedStatement), JassLoopStatementSyntax loopStatement => TryAdaptLoopStatement(context, loopStatement, out adaptedStatement), JassExitStatementSyntax exitStatement => TryAdaptExitStatement(context, exitStatement, out adaptedStatement), JassReturnStatementSyntax returnStatement => TryAdaptReturnStatement(context, returnStatement, out adaptedStatement), JassDebugStatementSyntax debugStatement => TryAdaptDebugStatement(context, debugStatement, out adaptedStatement), _ => TryAdaptDummy(context, statement, out adaptedStatement), });
public LuaStatementSyntax Transpile(IStatementSyntax statement) { return(statement switch { JassEmptyStatementSyntax emptyStatement => Transpile(emptyStatement), JassCommentStatementSyntax commentStatement => Transpile(commentStatement), JassLocalVariableDeclarationStatementSyntax localVariableDeclarationStatement => Transpile(localVariableDeclarationStatement), JassSetStatementSyntax setStatement => Transpile(setStatement), JassCallStatementSyntax callStatement => Transpile(callStatement), JassIfStatementSyntax ifStatement => Transpile(ifStatement), JassLoopStatementSyntax loopStatement => Transpile(loopStatement), JassExitStatementSyntax exitStatement => Transpile(exitStatement), JassReturnStatementSyntax returnStatement => Transpile(returnStatement), JassDebugStatementSyntax debugStatement => Transpile(debugStatement), });
public void Render(JassSetStatementSyntax setStatement) { Write($"{JassKeyword.Set} "); Render(setStatement.IdentifierName); if (setStatement.Indexer is not null) { Write(JassSymbol.LeftSquareBracket); Render(setStatement.Indexer); Write(JassSymbol.RightSquareBracket); } Write(' '); Render(setStatement.Value); }
public StatementSyntax Transpile(JassSetStatementSyntax setStatement) { if (setStatement.Indexer is null) { return(SyntaxFactory.ExpressionStatement(SyntaxFactory.AssignmentExpression( SyntaxKind.SimpleAssignmentExpression, SyntaxFactory.IdentifierName(Transpile(setStatement.IdentifierName)), Transpile(setStatement.Value.Expression)))); } else { return(SyntaxFactory.ExpressionStatement(SyntaxFactory.AssignmentExpression( SyntaxKind.SimpleAssignmentExpression, SyntaxFactory.ElementAccessExpression( SyntaxFactory.IdentifierName(Transpile(setStatement.IdentifierName)), SyntaxFactory.BracketedArgumentList(SyntaxFactory.SingletonSeparatedList(SyntaxFactory.Argument(Transpile(setStatement.Indexer))))), Transpile(setStatement.Value.Expression)))); } }
private bool TryAdaptSetStatement(JassMapScriptAdapterContext context, JassSetStatementSyntax setStatement, [NotNullWhen(true)] out IStatementSyntax?adaptedSetStatement) { if (!context.KnownLocalVariables.ContainsKey(setStatement.IdentifierName.Name) && !context.KnownGlobalVariables.ContainsKey(setStatement.IdentifierName.Name)) { context.Diagnostics.Add($"Unknown variable '{setStatement.IdentifierName}'."); } if (TryAdaptExpression(context, setStatement.Indexer, out var adaptedIndexer) | TryAdaptEqualsValueClause(context, setStatement.Value, out var adaptedValue)) { adaptedSetStatement = new JassSetStatementSyntax( setStatement.IdentifierName, adaptedIndexer ?? setStatement.Indexer, adaptedValue ?? setStatement.Value); return(true); } adaptedSetStatement = null; return(false); }