bug fixed: parse semicolon