public void StepConcatenation() { var A = ConstructionKit.Consume(new CharSet('a')); var B = ConstructionKit.Consume(new CharSet('b')); var automaton = ConstructionKit.Concat(new[] { A, B }); automaton.Accepts("ab"); automaton.Rejects("ba"); }
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"); }
private IAutomaton ConcatExpression() { var lhs = PrimaryExpression(); while (Lookahead != '|' && Lookahead != Eos && Lookahead != ')') { var rhs = PrimaryExpression(); lhs = ConstructionKit.Concat(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"); }