##// END OF EJS Templates
Added ResetState to RunnableComponent to reset in case of failure...
Added ResetState to RunnableComponent to reset in case of failure Added StateChanged event to IRunnable Renamed Promise.SUCCESS -> Promise.Success Added Promise.FromException Renamed Bundle -> PromiseAll in PromiseExtensions

File last commit:

r178:d5c5db0335ee ref20160224
r205:8200ab154c8a v2
Show More
RegularExpressionVisitorT.cs
37 lines | 1.2 KiB | text/x-csharp | CSharpLexer
using Implab;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
namespace Implab.Automaton.RegularExpressions {
/// <summary>
/// </summary>
public class RegularExpressionVisitor<TTag> : RegularExpressionVisitor {
readonly Dictionary<int, TTag> m_tags = new Dictionary<int, TTag>();
readonly ITaggedDFABuilder<TTag> m_builder;
public RegularExpressionVisitor(ITaggedDFABuilder<TTag> builder) : base(builder) {
m_builder = builder;
}
public override void Visit(EndToken token) {
base.Visit(token);
var tagged = token as EndToken<TTag>;
if (tagged != null)
m_tags.Add(Index, tagged.Tag);
}
protected override void MarkFinalState(HashSet<int> state) {
base.MarkFinalState(state);
m_builder.SetStateTag(Translate(state), GetStateTags(state));
}
TTag[] GetStateTags(IEnumerable<int> state) {
Debug.Assert(state != null);
return state.Where(m_tags.ContainsKey).Select(pos => m_tags[pos]).ToArray();
}
}
}