public void StepAlternation() { var A = ConstructionKit.Consume(new CharSet('a')); var B = ConstructionKit.Consume(new CharSet('b')); var AA = ConstructionKit.Concat(new[] { A, A }); var automaton = ConstructionKit.Alternate(new[] { AA, B }); automaton.Accepts("b"); automaton.Accepts("aa"); automaton.Rejects("bb"); automaton.Rejects("a"); }
public IAutomaton Exec() { var lhs = ConcatExpression(); while (Lookahead == '|') { index++; var rhs = ConcatExpression(); lhs = ConstructionKit.Alternate(new[] { lhs, rhs }); } return(lhs); }
public void StepDeterminize() { var A = ConstructionKit.Consume(new CharSet('a')); var B = ConstructionKit.Consume(new CharSet('b')); var AA = ConstructionKit.Concat(new[] { A, A }); var AAorB = ConstructionKit.Alternate(new[] { AA, B }); var automaton = ConstructionKit.Repeat(AAorB) .Determinize(); automaton.Accepts(""); automaton.Accepts("aa"); automaton.Accepts("aa"); automaton.Accepts("aaaa"); automaton.Accepts("baab"); automaton.Accepts("baabaabb"); automaton.Rejects("a"); automaton.Rejects("aaa"); }