Exemple #1
0
        public override void VisitDefineFunctionNode(DefineFunctionNode node)
        {
            TypeSyntax returnType = node.ReturnType.ID.Text == "void"
                ? PredefinedType(Token(SyntaxKind.VoidKeyword))
                : ParseTypeName(node.ReturnType.ID.Text);

            returnType = GetNodeWithAnnotation(returnType, node.ReturnType.Location) as TypeSyntax;

            var defineFunction = MethodDeclaration(returnType, node.ID.Text)
                                 .AddModifiers(Token(SyntaxKind.StaticKeyword));

            node.Arguments.ForEach(arg => defineFunction = defineFunction.AddParameterListParameters(
                                       Parameter(GetNodeWithAnnotation(Identifier(arg.Name.Text), arg.Name.Location))
                                       .WithType(GetNodeWithAnnotation(ParseTypeName(arg.Type.ID.Text), arg.Type.Location) as TypeSyntax)
                                       ));

            if (node.Body.Statements.Count == 0) //if empty function
            {
                defineFunction = defineFunction.WithBody(Block());
            }
            else
            {
                blocks.Push(defineFunction);
                node.Body.Statements.ForEach(statement => statement.Visit(this));
                defineFunction = blocks.Pop() as MethodDeclarationSyntax;
            }
            defineFunction = defineFunction.AddModifiers(Token(SyntaxKind.PublicKeyword));

            defineFunction   = GetNodeWithAnnotation(defineFunction, node.Location) as MethodDeclarationSyntax;
            programClassNode = programClassNode.AddMembers(defineFunction);
        }
 public virtual void VisitDefineFunctionNode(DefineFunctionNode node)
 {
 }