A utility to collect free variables over a C AST.
This returns a set of all ordinary identifiers used as variables within the AST, excluding those variables which have first been declared, i.e. in a statement declaration or as a function parameter.
Note that ordinary identifiers do not include label names, the tags of structure, union, and enumeration type names, or the members of structures or unions.