Lex Program to recognize and count the number of keywords

 

Lex Program to recognize and count the number of keywords in a given input file

Problem definition:

Write a Lex program to recognize the keywords in a given input file, count them, and display the result on standard output.

Structure of LEX Program:

%{
Definition section
%}

%%
Rules section
%%

User Subroutine section  

Click here to learn – How to Compile & Run LEX / YACC Programs on Windows 8, 10, and 11?

Source Code – Lex Program to recognize and count the number of keywords

%{
#include<stdio.h>
#include<string.h>
int count_key=0;
%}

%%
int | 
float | 
char | 
double | 
switch | 
if | 
while | 
do  { count_key++;}
.|\n   {;}
%%

int main ( int argc,char *argv[] )
{
	if(argc==2)
		yyin=fopen(argv[1],"r");
	else
	{
		printf("\nEnter the input:\n");
		yyin=stdin;
	}
	yylex();
	printf("\nNumber of keywords = %d\n",count_key);
}

int yywrap( )
{
	return 1;
}

Output:

input.c is the input file for the program

void main()
{
	int a; // integer variable
	float b; /* float variable */
	/* Multiline
	Comment */
	fun(); // function call
}

maheshgh@maheshgh:~/LexYacc$ lex demo.l

maheshgh@maheshgh:~/LexYacc$ gcc lex.yy.c

maheshgh@maheshgh:~/LexYacc$ ./a.out input.c

Number of keywords = 4

Summary:

This article discusses how to Write a Lex program to recognize the keywords in a given input file, count them, and display the result on standard output. If you like the article, do share it with your friends.

Leave a Comment

Your email address will not be published. Required fields are marked *