Пример #1
0
/**
 * search local table for given symbol name
 * @param sname
 * @return table index
 */
int find_locale (char *sname) {
    int idx;

    idx = local_table_index;
    while (idx >= NUMBER_OF_GLOBALS) {
        idx--;
        if (astreq (sname, symbol_table[idx].name, NAMEMAX))
            return (idx);
    }
    return (-1);
}
Пример #2
0
/**
 * search global table for given symbol name
 * @param sname
 * @return table index
 */
int find_global (char *sname) {
    int idx;

    idx = 0;
    while (idx < global_table_index) {
        if (astreq (sname, symbol_table[idx].name, NAMEMAX))
            return (idx);
        idx++;
    }
    return (-1);
}
Пример #3
0
/**
 * compares two string both must be zero ended, otherwise no match found
 * advances line pointer only if match found
 * it assumes that an alphanumeric (including underscore) comparison
 * is being made and guarantees that all of the token in the source line is
 * scanned in the process
 * @param lit
 * @param len
 * @return 
 */
int amatch(char *lit, int len) {
    int k;

    blanks();
    if ((k = astreq (line + lptr, lit, len)) != 0) {
        lptr = lptr + k;
        while (alphanumeric (ch ()))
            inbyte ();
        return (1);
    }
    return (0);
}
Пример #4
0
/**
 * look up a tag in tag table by name
 * @param sname
 * @return index
 */
int find_tag (char *sname)
{
	int index;

	index = 0;
	while (index < tag_table_index) {
		if (astreq(sname, tag_table[index].name, NAMEMAX))
			return (index);

		++index;
	}
	return (-1);
}
Пример #5
0
/**
 * find symbol in table, count position in data array
 * @param symbol_name
 * @return
 */
int find_symbol_initials (char *symbol_name)
{
	int result = 0;

	initials_data_idx = 0;
	for (initials_idx = 0; initials_table[initials_idx].type != 0; initials_idx++) {
		if (initials_idx >= NUMGLBS)
			error("initials table overrun");
		if (astreq(symbol_name, initials_table[initials_idx].name, NAMEMAX) != 0) {
			result = 1;
			break;
		}
		else {
			// move to next symbol
			// count position in data array
			initials_data_idx += initials_table[initials_idx].data_len;
		}
	}
	return (result);
}