You are on page 1of 2

Experiment No.

02

Aim: Study and implement experiments on LEX, YACC.


Code:
%{
int line = 1;
%}

%%

int|float|if|else|while|for|void {printf("\nLine Number - %d \t %s -


keyword", line, yytext);}
[a-zA-Z][a-zA-Z0-9]* {printf("\nLine Number - %d \t %s - Identifier", line,
yytext);}
[0-9]+ {printf("\nLine Number - %d \t %s - Integer", line, yytext);}
[0-9]+"."[0-9]+ {printf("\nLine Number - %d \t %s - Float", line, yytext);}
"+"|"-"|"*"|"/"|"="|"%"|"<"|">" {printf("\nLine Number - %d \t %s -
Operator", line, yytext);}
";"|","|"#"|"@"|":"|"{"|"}"|"("|")" {printf("\nLine Number - %d \t %s -
Special Charater", line, yytext);}
\n {line++;}
" "|" " {}
. {printf("\nLine Number - %d \t %s - Unknown", line, yytext);}

%%

int yywrap(){}
int main()
{
FILE *fp;
char f[20];
printf("Enter Filename: ");
scanf("%s", f);
fp = fopen(f, "r");
yyin = fp;
yylex();
return 0;
}
Exp2_demo.c:
void main () {
int a = 10;
int b = 20;
int c = a + b;
printf("%d", c);
}
Output:
PS D:\Degree\6th_Sem\SPCC> flex Exp2_Lexical.l
PS D:\Degree\6th_Sem\SPCC> gcc lex.yy.c -o Exp2_Lexical
PS D:\Degree\6th_Sem\SPCC> ./Exp2_Lexical.exe
Enter Filename: Exp2_demo.c

Line Number - 1 void - keyword


Line Number - 1 main - Identifier
Line Number - 1 ( - Special Charater
Line Number - 1 ) - Special Charater
Line Number - 1 { - Special Charater
Line Number - 2 int - keyword
Line Number - 2 a - Identifier
Line Number - 2 = - Operator
Line Number - 2 10 - Integer
Line Number - 2 ; - Special Charater
Line Number - 3 int - keyword
Line Number - 3 b - Identifier
Line Number - 3 = - Operator
Line Number - 3 20 - Integer
Line Number - 3 ; - Special Charater
Line Number - 4 int - keyword
Line Number - 4 c - Identifier
Line Number - 4 = - Operator
Line Number - 4 a - Identifier
Line Number - 4 + - Operator
Line Number - 4 b - Identifier
Line Number - 4 ; - Special Charater
Line Number - 5 printf - Identifier
Line Number - 5 ( - Special Charater
Line Number - 5 " - Unknown
Line Number - 5 % - Operator
Line Number - 5 d - Identifier
Line Number - 5 " - Unknown
Line Number - 5 , - Special Charater
Line Number - 5 c - Identifier
Line Number - 5 ) - Special Charater
Line Number - 5 ; - Special Charater
Line Number - 6 } - Special Charater

You might also like