Create skeleton Xcode project.
Match an empty string.
Different strings should not match.
String pattern matches the prefix of input.
Empty pattern matches any input.
Improve names.
Sequence of two templates matches same input.
Sequence does not match if first element does not match.
Break out match results into separate type.
Add match property to MatchResult to record matched string.
Convert parse function to return a MatchResult instead of just a Bool.
Return entire input when second element of a sequence does not match.
Refactor.
Refactor.
Refactor.
Test for sequence exactly matching the input.
Rename type and add index property for storing where in the input string the match occurred.
Check index matches when equating match results.
Add Leaf match result type to capture named matches.
MatchResult.Failure is printable.