/* Genera la instruccion para una operacion infija y construye un registro semantico con el resultado. */ struct reg_expr gen_infijo(struct reg_expr *pei, struct reg_op *op, struct reg_expr *ped){ struct reg_expr reg; static unsigned int numTemp = 1; char cadTemp[TAMLEX] ="Temp&"; char cadNum[TAMLEX]; char cadOp[TAMLEX]; strcpy(cadOp, operaciones[op->cod_oper]); sprintf(cadNum, "%d", numTemp); numTemp++; strcat(cadTemp, cadNum); if (pei->clase == ID) { chequear(extraer(pei)); } if (ped->clase == ID) { chequear(extraer(ped)); } chequear(cadTemp); generar(cadOp, extraer(pei), extraer(ped), cadTemp); strcpy(reg.nombre, cadTemp); return reg; }
int main() { elemento* uno = malloc(sizeof(elemento)); elemento* dos = malloc(sizeof(elemento)); elemento* tres = malloc(sizeof(elemento)); elemento* cuatro = malloc(sizeof(elemento)); uno->nombre = "Aprenda Java en 24 horas"; dos->nombre = "Aprenda C++ rapidamente"; tres->nombre = "Aprenda Visual Basic con este libro"; cuatro->nombre = "Aprenda mas sobre windows 10"; agregar(uno); agregar(dos); agregar(tres); agregar(cuatro); elemento* i = extraer(); while(i != NULL) { printf("%s.\n", i->nombre); i = extraer(); } return 0; }
main() /* Rellenar, extraer y visualizar */ { char opc; do { clrscr(); gotoxy(30,8); printf("1.- Insertar"); gotoxy(30,10);printf("2.- Extraer"); gotoxy(30,12);printf("3.- Visualizar la cola"); gotoxy(30,14);printf("4.- Salir"); opc=getch( ); switch(opc) { case '1': insertar(); break; case '2': extraer(); break; case '3': visualizar( ); } }while (opc!='4'); return 0; }
/* Genera la instruccion para escribir. */ void escribir_exp(struct reg_expr *pout){ generar("Write", extraer(pout), "Integer", ""); }
/* genera la instruccion para la asignacion */ void asignar(struct reg_expr *vizq, struct reg_expr *vder){ generar("Store", extraer(vder), vizq->nombre, ""); }