Lex program to count the number of comment lines in a given C program and eliminate the comments and write into the output file
Problem definition:
Write a lex code to count the number of comment lines in a given C program. Also, eliminate them and copy the resulting program into a separate file.
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 to count the number of comment lines in the C program
%{
#include<stdio.h>
int nc=0;
%}
%%
"/*"[a-zA-Z0-9\n\t ]*"*/" {nc++;}
"//"[a-zA-Z0-9\t ]*"\n" {nc++;}
%%
int main(int argc ,char* argv[])
{
if(argc==2)
{
yyin=fopen(argv[1],"r");
}
else
{
printf("Enter the input\n");
yyin=stdin;
}
yyout=fopen("output.c","w");
yylex( );
printf("The number of comment lines=%d\n",nc);
fclose(yyin);
fclose(yyout);
}
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
The number of comment lines=4
output.c is the output file for the program
void main()
{
int a; float b;
fun();
}Summary:
This article discusses how to write a program to count the number of comment lines in a given C program. Also, eliminate them and copy the resulting program into a separate file. If you like the article, do share it with your friends.
