Beispiel #1
0
Datei: gen.c Projekt: minux/subc
void genrval(int *lv) {
	if (NULL == lv) return;
	gentext();
	if (!lv[LVSYM]) {
		genind(lv[LVPRIM]);
	}
	else if (CAUTO == Stcls[lv[LVSYM]]) {
		if (PCHAR == lv[LVPRIM])
			queue(auto_byte, Vals[lv[LVSYM]], NULL);
		else
			queue(auto_word, Vals[lv[LVSYM]], NULL);
	}
	else if (CLSTATC == Stcls[lv[LVSYM]]) {
		if (PCHAR == lv[LVPRIM])
			queue(static_byte, Vals[lv[LVSYM]], NULL);
		else
			queue(static_word, Vals[lv[LVSYM]], NULL);
	}
	else {
		if (PCHAR == lv[LVPRIM])
			queue(globl_byte, 0, Names[lv[LVSYM]]);
		else
			queue(globl_word, 0, Names[lv[LVSYM]]);
	}
}
Beispiel #2
0
void rvalue(int *lv)
{

    if (NULL == lv)
        return;

    gentext();

    if (!lv[LVSYM])
    {

        genind(lv[LVPRIM]);

    }

    else if (CAUTO == symbols[lv[LVSYM]].stcl)
    {

        if (PCHAR == lv[LVPRIM])
            queue(auto_byte, symbols[lv[LVSYM]].value, NULL);
        else
            queue(auto_word, symbols[lv[LVSYM]].value, NULL);

    }

    else if (CLSTATC == symbols[lv[LVSYM]].stcl)
    {

        if (PCHAR == lv[LVPRIM])
            queue(static_byte, symbols[lv[LVSYM]].value, NULL);
        else
            queue(static_word, symbols[lv[LVSYM]].value, NULL);

    }

    else
    {

        if (PCHAR == lv[LVPRIM])
            queue(globl_byte, 0, symbols[lv[LVSYM]].name);
        else
            queue(globl_word, 0, symbols[lv[LVSYM]].name);

    }

}