Walks a program AST node.
Inheritance: Rosetta.AST.ProgramASTWalker
Example #1
0
        protected override void InitializeCore()
        {
            // TODO: In order to target #41, add an option for using the reflector when requested

            // Getting the AST node
            this.tree = ASTExtractor.Extract(this.source);

            // Loading the semantic model
            CSharpCompilation compilation = null;

            if (this.assemblyPath != null)
            {
                compilation = this.GetCompilation(this.assemblyPath, this.tree);
            }

            IASTTransformer transformer = new ScriptNamespaceBasedASTTransformer();

            if (compilation != null)
            {
                transformer.Transform(ref this.tree, ref compilation);
                this.semanticModel = SemanticUtils.RetrieveSemanticModel(compilation, this.tree);
            }
            else
            {
                transformer.Transform(ref this.tree);
            }

            // Creating the walker
            // If no semantic model was loaded, null will just be passed
            var node = this.tree.GetRoot();

            this.walker = ProgramDefinitionASTWalker.Create(node, null, this.semanticModel);
            (this.walker as ProgramDefinitionASTWalker).Logger = this.Logger;

            // Translating
            this.output = this.walker.Walk().Translate();
        }
Example #2
0
        private void Initialize()
        {
            // Getting the AST node
            this.tree = ASTExtractor.Extract(this.source);

            // Loading the semantic model
            CSharpCompilation compilation = null;

            if (this.assemblyPath != null)
            {
                compilation = this.GetCompilation(this.assemblyPath, this.tree);
            }

            IASTTransformer transformer = new ScriptNamespaceBasedASTTransformer();

            if (compilation != null)
            {
                transformer.Transform(ref this.tree, ref compilation);
                this.semanticModel = SemanticUtils.RetrieveSemanticModel(compilation, this.tree);
            }
            else
            {
                transformer.Transform(ref this.tree);
            }

            // Creating the walker
            // If no semantic model was loaded, null will just be passed
            var node = this.tree.GetRoot();

            this.walker = ProgramDefinitionASTWalker.Create(node, null, this.semanticModel);

            // Translating
            this.output = this.walker.Walk().Translate();

            this.initialized = true;
        }
 /// <summary>
 /// Copy initializes a new instance of the <see cref="ProgramDefinitionASTWalker"/> class.
 /// </summary>
 /// <param name="other"></param>
 /// <remarks>
 /// For testability.
 /// </remarks>
 public ProgramDefinitionASTWalker(ProgramDefinitionASTWalker other)
     : base(other)
 {
 }
 /// <summary>
 /// Copy initializes a new instance of the <see cref="ProgramDefinitionASTWalker"/> class.
 /// </summary>
 /// <param name="other"></param>
 /// <remarks>
 /// For testability.
 /// </remarks>
 public ProgramDefinitionASTWalker(ProgramDefinitionASTWalker other)
     : base(other)
 {
 }