create a wrapper struct to hold data only used by the lexer and make Matcher an interface