scanner from the parser
        is the need for backtracking during parsing. The input data is a stream of
        characters, which is often thought to be processed left to right without
        any backtracking. Unfortunately, in practice most of the time that isn't
        possible. Almost every language has certain keywords such as IF, FOR, and
        WHILE. The decision if a certain character sequence actually comprises a
        keyword or just an identifier often can be made only after seeing the fi