Un-mix declarations and statements

This attempts to preserve a (partial) C89 codebase.
Fix handling typedef name as an expression