#include<string.h>
#include<conio.h>
#include<ctype.h>
#include<stdio.h>
void main(*f1)
{
FILE *f1;
char c,str[10];
int lineno=1,num=0,i=0;
clrscr();
printf("\nEnter the c program\n");
f1=fopen("input.txt","w");
while((c=getchar())!=EOF)
putc(c,f1);
fclose(f1);
f1=fopen("input.txt","r");
while
((c
=getc
(f1
))!=EOF
) // TO
READ THE GIVEN FILE
{
if(isdigit(c)) // TO RECOGNIZE NUMBERS
{
num=c-48;
c=getc(f1);
while(isdigit(c))
{
num=num*10+(c-48);
c=getc(f1);
}
printf("%d is a number \n",num);
ungetc(c,f1);
}
else if(isalpha(c)) // TO RECOGNIZE KEYWORDS AND IDENTIFIERS
{
str[i++]=c;
c=getc(f1);
while(isdigit(c)||isalpha(c)||c=='_'||c=='$')
{
str[i++]=c;
c=getc(f1);
}
str[i++]='\0';
if(strcmp("for",str)==0||strcmp("while",str)==0||strcmp("do",str)==0||
strcmp("int",str)==0||strcmp("float",str)==0||strcmp("char",str)==0||
strcmp("double",str)==0||strcmp("static",str)==0||
strcmp("switch",str)==0||strcmp("case",str)==0) // TYPE 32 KEYWORDS
printf("%s is a keyword\n",str);
else
printf("%s is a identifier\n",str);
ungetc(c,f1);
i=0;
}
else if(c==' '||c=='\t') // TO IGNORE THE SPACE
printf("\n");
else if
(c
=='\n') // TO COUNT LINE
NUMBER lineno++;
else // TO FIND SPECIAL SYMBOL
printf("%c is a special symbol\n",c);
}
printf("Total no. of lines are: %d\n",lineno);
fclose(f1);
getch();
}
I2luY2x1ZGU8c3RyaW5nLmg+CiNpbmNsdWRlPGNvbmlvLmg+CiNpbmNsdWRlPGN0eXBlLmg+CiNpbmNsdWRlPHN0ZGlvLmg+CnZvaWQgbWFpbigqZjEpCnsKRklMRSAqZjE7CmNoYXIgYyxzdHJbMTBdOwppbnQgbGluZW5vPTEsbnVtPTAsaT0wOwpjbHJzY3IoKTsKcHJpbnRmKCJcbkVudGVyIHRoZSBjIHByb2dyYW1cbiIpOwpmMT1mb3BlbigiaW5wdXQudHh0IiwidyIpOwp3aGlsZSgoYz1nZXRjaGFyKCkpIT1FT0YpCnB1dGMoYyxmMSk7CmZjbG9zZShmMSk7CmYxPWZvcGVuKCJpbnB1dC50eHQiLCJyIik7CndoaWxlKChjPWdldGMoZjEpKSE9RU9GKSAvLyBUTyBSRUFEIFRIRSBHSVZFTiBGSUxFCnsKaWYoaXNkaWdpdChjKSkgLy8gVE8gUkVDT0dOSVpFIE5VTUJFUlMKewogbnVtPWMtNDg7CiBjPWdldGMoZjEpOwogd2hpbGUoaXNkaWdpdChjKSkKIHsKIG51bT1udW0qMTArKGMtNDgpOwogYz1nZXRjKGYxKTsKIH0KIHByaW50ZigiJWQgaXMgYSBudW1iZXIgXG4iLG51bSk7CiB1bmdldGMoYyxmMSk7Cn0KZWxzZSBpZihpc2FscGhhKGMpKSAvLyBUTyBSRUNPR05JWkUgS0VZV09SRFMgQU5EIElERU5USUZJRVJTCnsKIHN0cltpKytdPWM7CiBjPWdldGMoZjEpOwogd2hpbGUoaXNkaWdpdChjKXx8aXNhbHBoYShjKXx8Yz09J18nfHxjPT0nJCcpCiB7CiBzdHJbaSsrXT1jOwogYz1nZXRjKGYxKTsKIH0KIHN0cltpKytdPSdcMCc7CiBpZihzdHJjbXAoImZvciIsc3RyKT09MHx8c3RyY21wKCJ3aGlsZSIsc3RyKT09MHx8c3RyY21wKCJkbyIsc3RyKT09MHx8CiBzdHJjbXAoImludCIsc3RyKT09MHx8c3RyY21wKCJmbG9hdCIsc3RyKT09MHx8c3RyY21wKCJjaGFyIixzdHIpPT0wfHwKIHN0cmNtcCgiZG91YmxlIixzdHIpPT0wfHxzdHJjbXAoInN0YXRpYyIsc3RyKT09MHx8CiBzdHJjbXAoInN3aXRjaCIsc3RyKT09MHx8c3RyY21wKCJjYXNlIixzdHIpPT0wKSAvLyBUWVBFIDMyIEtFWVdPUkRTCiBwcmludGYoIiVzIGlzIGEga2V5d29yZFxuIixzdHIpOwplbHNlCiBwcmludGYoIiVzIGlzIGEgaWRlbnRpZmllclxuIixzdHIpOwogdW5nZXRjKGMsZjEpOwogaT0wOwp9CmVsc2UgaWYoYz09JyAnfHxjPT0nXHQnKSAvLyBUTyBJR05PUkUgVEhFIFNQQUNFCiBwcmludGYoIlxuIik7CmVsc2UgaWYoYz09J1xuJykgLy8gVE8gQ09VTlQgTElORSBOVU1CRVIKIGxpbmVubysrOwplbHNlIC8vIFRPIEZJTkQgU1BFQ0lBTCBTWU1CT0wKIHByaW50ZigiJWMgaXMgYSBzcGVjaWFsIHN5bWJvbFxuIixjKTsKfQpwcmludGYoIlRvdGFsIG5vLiBvZiBsaW5lcyBhcmU6ICVkXG4iLGxpbmVubyk7CmZjbG9zZShmMSk7CmdldGNoKCk7Cn0KCg==