ll(1) parser + lexer + gui