Code Monkey home page Code Monkey logo

ex-4---generation-of-lexical-tokens-lex-flex-tool's Introduction

Ex-4-GENERATION OF LEXICAL TOKENS LEX FLEX TOOL

AIM

To write a lex program to implement lexical analyzer to recognize a few patterns.

ALGORITHM

  1. Start the program.
  2. Lex program consists of three parts. a. Declaration %% b. Translation rules %% c. Auxilary procedure.
  3. The declaration section includes declaration of variables, maintest, constants and regular definitions.
  4. Translation rule of lex program are statements of the form a. P1 {action} b. P2 {action} c. … d. … e. Pn {action}
  5. Write a program in the vi editor and save it with .l extension.
  6. Compile the lex program with lex compiler to produce output file as lex.yy.c. eg $ lex filename.l $ cc lex.yy.c
  7. Compile that file with C compiler and verify the output.

Program

/* program name is lexp.l */ 
%{ 
/* program to recognize a c program */ 
int COMMENT=0; 
%} 
identifier [a-zA-Z][a-zA-Z0-9]* 
%% 
#.* { printf("\n%s is a PREPROCESSOR DIRECTIVE",yytext);} 
int | 
float | 
char | 
double | 
while | 
for | 
do | 
if | 
break | 
continue | 
void | 
switch | 
case | 
long | 
struct | 
const | 
typedef | 
return | 
else | 
goto {printf("\n\t%s is a KEYWORD",yytext);} 
"/*" {COMMENT = 1;}  
"*/" {COMMENT = 0;} 
{identifier}\( {if(!COMMENT)printf("\n\nFUNCTION\n\t%s",yytext);} 
\{ {if(!COMMENT) printf("\n BLOCK BEGINS");} 
\} {if(!COMMENT) printf("\n BLOCK ENDS");} 
{identifier}(\[[0-9]*\])? {if(!COMMENT) printf("\n %s IDENTIFIER",yytext);} 
\".*\" {if(!COMMENT) printf("\n\t%s is a STRING",yytext);} 
[0-9]+ {if(!COMMENT) printf("\n\t%s is a NUMBER",yytext);} 
\)(\;)? {if(!COMMENT) printf("\n\t");ECHO;printf("\n");} 
\( ECHO; 
= {if(!COMMENT)printf("\n\t%s is an ASSIGNMENT OPERATOR",yytext);} 
\<= | 
\>= | 
\< | 
== | 
\> {if(!COMMENT) printf("\n\t%s is a RELATIONAL OPERATOR",yytext);} 
%% 
int main(int argc,char **argv) 
{ 
if (argc > 1) 
{ 
FILE *file; 
file = fopen(argv[1],"r"); 
if(!file) 
{ 
printf("could not open %s \n",argv[1]); 
exit(0); 
} 
yyin = file; 
} 
yylex(); 
printf("\n\n"); 
return 0; 
} int yywrap() 
{ 
return 0; 
}

INPUT

#include<stdio.h> 
main() 
{ 
int a,b; 
}

OUTPUT

image

RESULT

The lexical analyzer is implemented using lex and the output is verified.

ex-4---generation-of-lexical-tokens-lex-flex-tool's People

Contributors

ramachandransec avatar svarsha220 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.