Lexer now lexes strings in blocks, and keeps track of block depth