let rec needs_semi = function
    | [] -> true              (* General base case *)
    | RBRACE::[] -> false     (* The end of bodies do not require semicolons *)
    | SEMI::[] -> false       (* A properly terminated line does not require an additional semicolon *)
    | _::rest -> needs_semi rest