Lex Program to recognize and display comments, numbers, identifiers, and strings in a given statement
Problem definition:
Write a lex program to recognize comments, numbers, identifiers, and strings in a given statement and display them on standard output.
Structure of LEX Program:
%{ Definition section %} %% Rules section %% User Subroutine section |
Click here to know – How to Compile & Run LEX / YACC Programs on Windows 8, 10, and 11?
Source Code to recognize and display comments, numbers, identifiers, and strings
/*Definition Section*/ %{ #include<stdio.h> %} /* Rules Section */ %% [\t ]+ ; [0-9]+|[0-9]*\.[0-9]+ { printf("\n%s is NUMBER", yytext);} #.* { printf("\n%s is COMMENT", yytext);} [a-zA-Z][a-zA-Z0-9]+ { printf("\n%s is IDENTIFIER", yytext);} \"[^ \"\n]*\" { printf("\n%s is STRING", yytext);} \n { ECHO;} %% /* User Subroutine section */ int main() { while( yylex()); } int yywrap( ) { return 1; }
Alternate source code (display result in the main part of code)
/*Definition Section*/ %{ #include<stdio.h> #define NUMBER 400 #define COMMENT 401 #define STRINGS 402 #define IDENTIFIER 403 %} /* Rules Section */ %% [\t ]+ ; [0-9]+ | [0-9]*\.[0-9]+ { return NUMBER;} #.* { return COMMENT;} \"[^ \"\n]*\" { return STRINGS;} [a-zA-Z][a-zA-Z0-9]+ { return IDENTIFIER;} \n { return '\n';} %% /* User Subroutine section */ main( ) { int val; while( val = yylex( )) printf("value is %d\n",val); } int yywrap( ) { return 1; }
Output:
maheshgh@maheshgh:~/LexYacc$ lex demo.l
maheshgh@maheshgh:~/LexYacc$ gcc lex.yy.c
maheshgh@maheshgh:~/LexYacc$ ./a.out
Mahesh Huddar
(Note: After every input string press enter and ctrl+d)
Mahesh: is IDENTIFIER
Huddar: is IDENTIFIER
10 10.20
10: is NUMBER
10.20 is NUMBER
#Mahesh Huddar
Mahesh Huddar: is COMMENT
“Mahesh Huddar”
“Mahesh Huddar”: is STRING
Summary:
This article discusses how to write a lex program to find comments, numbers, identifiers, and strings in a given statement and display them on standard output.. If you like the article, do share it with your friends. Sweet Bonanza is an incredibly bright game of Pragmatic Play. Incredible emotions are guaranteed! Pay attention to the game graphics, elaborate details and the ability to play without lag. Playing without downloads has become possible in this slot machine. Just open your browser and enjoy. Play Sweet bonanza here 1sweetbonanza.com online real money. It’s worth noting that this slot is suitable for both beginners and experienced winners.