/* Post-parse semantic checks and actions*/ void processsemantics(void) { /* Fix up the root name to match the chosen filename */ processroot(); /* Fill in the fqn for every defining symbol */ computefqns(); /* Process each type and sort by dependency order*/ processtypes(); /* Make sure all typecodes are set if basetype is set*/ filltypecodes(); /* Process each type to compute its size*/ processtypesizes(); /* Process each var to fill in missing fields, etc*/ processvars(); /* Process attributes to connect to corresponding variable*/ processattributes(); /* Fix up enum constant values*/ processenums(); /* Fix up enum constant references*/ processeconstrefs(); /* Compute the unlimited dimension sizes */ processunlimiteddims(); /* check internal consistency*/ checkconsistency(); }
/* Post-parse semantic checks and actions*/ void processsemantics(void) { /* Process each type and sort by dependency order*/ processtypes(); /* Make sure all typecodes are set if basetype is set*/ filltypecodes(); /* Process each type to compute its size*/ processtypesizes(); /* Process each var to fill in missing fields, etc*/ processvars(); /* If we are not allowing certain special attributes, but they were defined, convert them back to attributes */ processspecials(); /* Process attributes to connect to corresponding variable*/ processattributes(); /* Fix up enum constant values*/ processenums(); /* Compute the unlimited dimension sizes */ processunlimiteddims(); /* check internal consistency*/ checkconsistency(); /* do any needed additional semantic checks*/ validate(); }