%{
#include <stdio.h>
int id
=0, op=0, ob
=0, cb
=0;%}
%%
[a-zA-Z0-9]+ { id++; printf("Identifier: %s\n", yytext); }
"(" { ob++; }
")" { cb++; }
.|\n ;
%%
int yywrap() { return 1; }
int main() {
printf("Enter expression: ");
yylex();
// Basic validation: Brackets must match, and usually identifiers = operators + 1
if
(ob
== cb
&& id
== op + 1) printf("Valid expression\n");
else
printf("Invalid expression\n");
return 0;
}
JXsKI2luY2x1ZGUgPHN0ZGlvLmg+CmludCBpZD0wLCBvcD0wLCBvYj0wLCBjYj0wOwolfQoKJSUKW2EtekEtWjAtOV0rICAgIHsgaWQrKzsgcHJpbnRmKCJJZGVudGlmaWVyOiAlc1xuIiwgeXl0ZXh0KTsgfQpbK1wtKi9dICAgICAgICAgeyBvcCsrOyB9CiIoIiAgICAgICAgICAgICB7IG9iKys7IH0KIikiICAgICAgICAgICAgIHsgY2IrKzsgfQoufFxuICAgICAgICAgICAgOwolJQoKaW50IHl5d3JhcCgpIHsgcmV0dXJuIDE7IH0KCmludCBtYWluKCkgewogICAgcHJpbnRmKCJFbnRlciBleHByZXNzaW9uOiAiKTsKICAgIHl5bGV4KCk7CiAgICAvLyBCYXNpYyB2YWxpZGF0aW9uOiBCcmFja2V0cyBtdXN0IG1hdGNoLCBhbmQgdXN1YWxseSBpZGVudGlmaWVycyA9IG9wZXJhdG9ycyArIDEKICAgIGlmKG9iID09IGNiICYmIGlkID09IG9wICsgMSkgCiAgICAgICAgcHJpbnRmKCJWYWxpZCBleHByZXNzaW9uXG4iKTsKICAgIGVsc2UgCiAgICAgICAgcHJpbnRmKCJJbnZhbGlkIGV4cHJlc3Npb25cbiIpOwogICAgcmV0dXJuIDA7Cn0=