%{
#include <stdio.h>
#include <stdlib.h>
int line_number = 1, token_number = 0;
#define PRINT_TOKEN(type) printf("%d: TOKEN: %s, VALUE: %s\n", line_number, type, yytext); token_number++;
%}
%option noyywrap
%%
[ \t]+ ;
\n { line_number++; }
"if"|"else"|"while"|"return"|"int"|"float"|"void" { PRINT_TOKEN("KEYWORD") }
[0-9]+ { PRINT_TOKEN("NUMBER") }
[a-zA-Z_][a-zA-Z0-9_]* { PRINT_TOKEN("IDENTIFIER") }
[+\-*/=;()] { PRINT_TOKEN("OPERATOR") }
. { PRINT_TOKEN("SPECIAL") }
%%
int main(int argc, char **argv) {
printf("Enter LOC: ");
yylex();
printf("Token count: %d\n", token_number);
printf("LOC count: %d\n", line_number - 1);
return 0;
}
JXsKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCmludCBsaW5lX251bWJlciA9IDEsIHRva2VuX251bWJlciA9IDA7CiNkZWZpbmUgUFJJTlRfVE9LRU4odHlwZSkgcHJpbnRmKCIlZDogVE9LRU46ICVzLCBWQUxVRTogJXNcbiIsIGxpbmVfbnVtYmVyLCB0eXBlLCB5eXRleHQpOyB0b2tlbl9udW1iZXIrKzsKJX0KCiVvcHRpb24gbm95eXdyYXAKCiUlClsgXHRdKyAgICAgICAgIDsKXG4gICAgICAgICAgICAgIHsgbGluZV9udW1iZXIrKzsgfQoiaWYifCJlbHNlInwid2hpbGUifCJyZXR1cm4ifCJpbnQifCJmbG9hdCJ8InZvaWQiIHsgUFJJTlRfVE9LRU4oIktFWVdPUkQiKSB9ClswLTldKyAgICAgICAgICB7IFBSSU5UX1RPS0VOKCJOVU1CRVIiKSB9ClthLXpBLVpfXVthLXpBLVowLTlfXSogeyBQUklOVF9UT0tFTigiSURFTlRJRklFUiIpIH0KWytcLSovPTsoKV0gICAgeyBQUklOVF9UT0tFTigiT1BFUkFUT1IiKSB9Ci4gICAgICAgICAgICAgICAgeyBQUklOVF9UT0tFTigiU1BFQ0lBTCIpIH0KCiUlCgppbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKICAgIHByaW50ZigiRW50ZXIgTE9DOiAiKTsKICAgIHl5bGV4KCk7CiAgICBwcmludGYoIlRva2VuIGNvdW50OiAlZFxuIiwgdG9rZW5fbnVtYmVyKTsKICAgIHByaW50ZigiTE9DIGNvdW50OiAlZFxuIiwgbGluZV9udW1iZXIgLSAxKTsKICAgIHJldHVybiAwOwp9Cg==