#include <stdio.h>
#include <string.h>
int main() {
char line[100];
char lhs[20], op1[20], op2[20];
char op;
printf("Enter statements (end with #):\\n");
while (1) {
fgets(line, sizeof(line), stdin);
if (line[0] == '#') break;
// Declaration
if (strncmp(line, "int", 3) == 0) {
sscanf(line, "int %[^;];", lhs); \\\\extract value from string
printf("%s DW ?\\n", lhs);
}
// Assignment with operator
else if (sscanf(line, "%[^=]=%[^+-*/]%c%[^;];", lhs, op1, &op, op2) == 4) {
printf("MOV AX, %s\\n", op1);
if (op == '+') printf("ADD AX, %s\\n", op2);
else if (op == '-') printf("SUB AX, %s\\n", op2);
else if (op == '*') printf("MUL %s\\n", op2);
else if (op == '/') printf("DIV %s\\n", op2);
printf("MOV %s, AX\\n", lhs);
}
// Simple assignment
else if (sscanf(line, "%[^=]=%[^;];", lhs, op1) == 2) {
printf("MOV %s, %s\\n", lhs, op1);
}
// printf
else if (strncmp(line, "printf", 6) == 0) {
sscanf(line, "printf(\\"%*[^,],%[^)]);", lhs);
printf("PRINT %s\\n", lhs);
}
// return
else if (strncmp(line, "return", 6) == 0) {
printf("RET\\n");
}
}
return 0;
}