%{
#include <stdio.h>
#include <string.h>

void print_first(char *non_terminal) {
    if (strcmp(non_terminal, "E") == 0)
        printf("FIRST(E) = { (, id }\n");
    else if (strcmp(non_terminal, "E'") == 0)
        printf("FIRST(E') = { +, ε }\n");
    else if (strcmp(non_terminal, "T") == 0)
        printf("FIRST(T) = { (, id }\n");
    else if (strcmp(non_terminal, "T'") == 0)
        printf("FIRST(T') = { *, ε }\n");
    else if (strcmp(non_terminal, "F") == 0)
        printf("FIRST(F) = { (, id }\n");
    else
        printf("Unknown non-terminal: %s\n", non_terminal);
}
%}

%%
[A-Z][']?    { print_first(yytext); }
[ \t\n]+     { /* skip whitespace */ }
.            { printf("Invalid input: %s\n", yytext); }
%%

int main() {
    printf("Enter non-terminals (e.g., E T E' F):\n");
    yylex();
    return 0;
}
