예제 #1
0
        /// <summary>
        /// Replaces the ForEachStatements in the mixin by ForStatements
        /// </summary>
        /// <param name="mixin">the mixin</param>
        private static void ExpandForEachStatements(ModuleMixin mixin)
        {
            foreach (var statementNodeCouple in mixin.ParsingInfo.ForEachStatements.Where(x => !(x.Statement as ForEachStatement).Variable.Qualifiers.Contains(ParadoxStorageQualifier.Extern)))
            {
                var newStatement = ExpandForEachStatement(statementNodeCouple.Statement as ForEachStatement);
                if (newStatement != null)
                {
                    var replace = new ParadoxReplaceVisitor(statementNodeCouple.Statement, newStatement);
                    replace.Run(statementNodeCouple.Node);
                }
            }

            mixin.InheritanceList.ForEach(ExpandForEachStatements);
        }
예제 #2
0
 /// <summary>
 /// Replace a MemberReferenceExpression by a VariableReferenceExpression in the AST
 /// </summary>
 /// <param name="memberReferenceExpression">the member reference expression.</param>
 /// <param name="variableReferenceExpression">the variable reference expression.</param>
 /// <param name="parentNode">the parent node.</param>
 private static void ReplaceMemberReferenceExpressionByVariableReferenceExpression(MemberReferenceExpression memberReferenceExpression, VariableReferenceExpression variableReferenceExpression, Node parentNode)
 {
     var replacor = new ParadoxReplaceVisitor(memberReferenceExpression, variableReferenceExpression);
     replacor.Run(parentNode);
 }
예제 #3
0
 /// <summary>
 /// rename the input/ouput of a method
 /// </summary>
 /// <param name="methodDeclaration">the method</param>
 /// <param name="inputName">the type replacement for Input</param>
 /// <param name="input2Name">the type replacement for Input2</param>
 /// <param name="outputName">the type replacement for Output</param>
 /// <param name="constantsName">the type replacement for Constants</param>
 private void RenameInputOutput(MethodDeclaration methodDeclaration, TypeName inputName, TypeName input2Name, TypeName outputName, TypeName constantsName)
 {
     if (inputName != null)
     {
         var replacor = new ParadoxReplaceVisitor(StreamsType.Input, inputName);
         replacor.Run(methodDeclaration);
     }
     if (input2Name != null)
     {
         var replacor = new ParadoxReplaceVisitor(StreamsType.Input2, input2Name);
         replacor.Run(methodDeclaration);
     }
     if (outputName != null)
     {
         var replacor = new ParadoxReplaceVisitor(StreamsType.Output, outputName);
         replacor.Run(methodDeclaration);
     }
     if (constantsName != null)
     {
         var replacor = new ParadoxReplaceVisitor(StreamsType.Constants, constantsName);
         replacor.Run(methodDeclaration);
     }
 }