/// <summary> /// Обойти дерево парсинга при помощи <see cref="ParseTreeWalker"/>. /// Подключаются все listener-ы из сборки <see cref="OFP.Library"/>. /// </summary> /// <param name="tree"> /// Корень дерева, которое будет обходить <see cref="ParseTreeWalker"/>. /// </param> protected void WalkParseTree(IParseTree tree) { var listeners = _currentScope.Resolve <IEnumerable <IOrdinaryFormListener> >(); var dispatcher = new ProxyParseTreeListener(listeners); var walker = ParseTreeWalker.Default; walker.Walk(dispatcher, tree); }
public void ProxyParseTreeListener_EnterEveryRule_DispatchesToAllListeners() { // Given. var dispatcher = new ProxyParseTreeListener(_listeners); // When. dispatcher.EnterEveryRule(_context); // Then. foreach (var listener in _listeners) { listener.Received(1) .EnterEveryRule(_context); listener.DidNotReceiveWithAnyArgs() .ExitEveryRule(default);