Пример #1
0
        private SymbolTable GetScope(ICodeUnit ast)
        {
            var scanner = new ScopeScanner();

            ast.Accept(scanner);
            return(scanner.SymbolTable);
        }
Пример #2
0
        public void Main()
        {
            var ast = new Program(new List <Function>());
            var sut = new ScopeScanner();

            ast.Accept(sut);
            var scope = sut.SymbolTable;

            AssertScope(ast, scope);
        }
Пример #3
0
        private static void AssertScope(ICodeUnit expressionNode, SymbolTable expectedScope)
        {
            var sut = new ScopeScanner();

            var nameAssigner = new ImplicitReferenceNameAssigner();

            nameAssigner.AssignNames(expressionNode);

            expressionNode.Accept(sut);

            var actual = sut.SymbolTable;

            actual.WithDeepEqual(expectedScope)
            .IgnoreProperty(r => r.Name == "Parent")
            .Assert();
        }