sym_id SymFind( char *name, int length ) { //========================================= // Determine if a symbol exists in the symbol table. return( STNameSearch( name, length ) ); }
static sym_id IFSymLookup( char *name, uint len ) { //=================================================== sym_id sym; sym = STNameSearch( name, len ); if( sym != NULL ) { if( ((sym->ns.flags & SY_CLASS) == SY_SUBPROGRAM) && (sym->ns.flags & SY_INTRINSIC) ) { return( sym ); } } sym = STSearch( name, len, IFList ); if( sym == NULL ) { sym = STAdd( name, len ); sym->ns.u3.address = NULL; sym->ns.link = IFList; IFList = sym; } return( sym ); }
sym_id STName( char *name, int length ) { //======================================== // Lookup the specified name in the symbol table. sym_id sym; if( length > MAX_SYMLEN ) { length = MAX_SYMLEN; } sym = STNameSearch( name, length ); if( sym == NULL ) { sym = STAdd( name, length ); sym->ns.si.va.vi.ec_ext = NULL; sym->ns.u3.address = NULL; HashInsert( HashTable, HashValue, &NList, sym ); } else if( ( ( sym->ns.flags & SY_CLASS ) == SY_VARIABLE ) && ( sym->ns.flags & SY_SPECIAL_PARM ) ) { sym = FindShadow( sym ); // Shadowed variable } return( sym ); }