possible lexer states:
	STATE_NORMAL
	STATE_STRING
	STATE_FSTRING
	STATE_INTERPOLATION


state transitions:
	STATE_NORMAL + " -> push STATE_STRING
	STATE_NORMAL + ' -> push STATE_FSTRING
	STATE_STRING + " -> pop
	STATE_FSTRING + { -> push STATE_INTERPOLATION, record brace depth
	STATE_FSTRING + ' -> pop
	STATE_INTERPOLATION + } (at recorded brace depth) -> pop