Vous êtes sur la page 1sur 4

#include <stdio.

h>
#include <stdlib.h>
#include <string.h>
char key[100];
int k, flag, i;
char c;
FILE *f1, *f2;
char keywords[13][100]={"if", "else", "do", "while", "int", "continue",
"double", "char", "for", "break", "main", "scanf", "printf"};

void getNextToken()
{
key[0]='\0';
if(c!=EOF && (c>=48 && c<=57)){
while(c!=EOF && (c>=48 && c<=57))
c=fgetc(f1);
strcpy(key, "number");
return;
}
else if(c!=EOF && (c>=65 && c<=90) ||(c>=97 && c<=122))
{
k=flag=0;
while(c!=EOF && (c>=65 && c<=90) ||(c>=97 && c<=122))
{
key[k++]=c;
c=fgetc(f1);
}
key[k++]='\0';
for(i=0; i<13; i++)
{
if(strcmp(key, keywords[i])==0)
{
flag=1;
break;
}
}
if(flag==1)
{
return;
}
else{
while(c!=EOF && ((c>=48 && c<=57)||(c>=65 && c<=90) ||(c>=97
&& c<=122)))
c=fgetc(f1);
strcpy(key, "id");
return;
}
}
else if(c!=EOF && c=='\n'){
c=fgetc(f1);
return;
}
else if(c!=EOF && (c=='"')){
c=fgetc(f1);
while(c!=EOF && c!='"')
c=fgetc(f1);
strcpy(key, "literal");
c=fgetc(f1);
return;
}
else{
if(c!=EOF){
if(c=='<'){
c=fgetc(f1);
if(c=='='){
strcpy(key, "<=");
c=fgetc(f1);
return;
}
else{
strcpy(key, "<");
return;
}
}
else if(c=='>'){
c=fgetc(f1);
if(c=='='){
strcpy(key, ">=");
c=fgetc(f1);
return;
}
else
{
strcpy(key, ">");
return;
}
}
else if(c=='='){
c=fgetc(f1);
if(c=='='){
strcpy(key, "==");
c=fgetc(f1);
return;
}
else
{
strcpy(key, "=");
return;
}
}
else if(c=='+'){
c=fgetc(f1);
if(c=='='){
strcpy(key, "+=");
c=fgetc(f1);
return;
}
else if(c=='+'){
strcpy(key, "++");
c=fgetc(f1);
return;
}
else
{
strcpy(key, "+");
return;
}
}
else if(c=='\\'){
c=fgetc(f1);
if(c=='='){
strcpy(key, "\\=");
c=fgetc(f1);
return;
}
else
{
strcpy(key, "\\");
return;
}
}
else if(c=='*'){
c=fgetc(f1);
if(c=='='){
strcpy(key, "*=");
c=fgetc(f1);
return;
}
else
{
strcpy(key, "*");
return;
}
}
else if(c=='-'){
c=fgetc(f1);
if(c=='='){
strcpy(key, "-=");
c=fgetc(f1);
return;
}
else if(c=='-'){
strcpy(key, "--");
c=fgetc(f1);
return;
}
else
{
strcpy(key, "-");
return;
}
}
else if(c=='!'){
c=fgetc(f1);
if(c=='='){
strcpy(key, "!=");
c=fgetc(f1);
return;
}
else
{
strcpy(key, "!");
return;
}
}
else
if(c=='{'||c=='}'||c=='('||c==')'||c=='['||c==']'||c==';'||c==','||c=='?'
){
key[0]=c;
key[1]='\0';
c=fgetc(f1);
return;
}
else
{
c=fgetc(f1);
return;
}
}
}
}
int main()
{
f1=fopen("out.c", "r");
c=fgetc(f1);
while(c!=EOF)
{
getNextToken();
if(strlen(key)!=0)
printf("%s\n", key);
}
}