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)));
 }
Example #2
0
        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),
            });
Example #3
0
 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),
     });
Example #4
0
        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))));
     }
 }
Example #6
0
        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);
        }