Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

I have a C code I want to write it in Using Visual Studio C++ language to run the lexical analyzer code. We have thie

I have a C code I want to write it in

Using Visual Studio

C++ language to run the

lexical

analyzer code.

We have thie expresion:

( sum + 47 ) / total

to get this output

Next token is: 25 Next lexeme is (

Next token is: 11 Next lexeme is sum

Next token is: 21 Next lexeme is +

Next token is: 10 Next lexeme is 47

Next token is: 26 Next lexeme is )

Next token is: 24 Next lexeme is /

Next token is: 11 Next lexeme is total

Next token is: -1 Next lexeme is EOF

I will provide you the C code

/* front. c - a lexical analyzer and syntax analyzer simple arithmetic expressions */ # include < stdio. h> # include < ctype. h> /* Global declarations */ /* Variables */ int charClass; char lexeme [ 100]; char nextChar; int lexLen; int token; int nextToken; FILE * in_fp, * fopen(); /* Function declarations */ void addChar(); void getChar(); void getNonBlank(); int lex(); /* Character classes */ # define LETTER 0 # define DIGIT 1 # define UNKNOWN 99 /* Token codes */ # define INT_LIT 10 # define IDENT 11 # define ASSIGN_OP 20 # define ADD_OP 21 # define SUB_OP 22 # define MULT_OP 23 # define DIV_OP 24 # define LEFT_PAREN 25 # define RIGHT_PAREN 26 /******************************************************/ /* main driver */ main() { /* Open the input data file and process its contents */ if (( in_fp = fopen(" front. in", " r")) == NULL) printf(" ERROR - cannot open front. in \ n"); else { getChar(); do { lex(); } while ( nextToken != EOF); } } /******************************************************/ /* lookup - a function to lookup operators and parentheses and return the token */ int lookup( char ch) { switch ( ch) { case '(': addChar(); nextToken = LEFT_PAREN; break; case ')': addChar(); nextToken = RIGHT_PAREN; break; case '+': addChar(); nextToken = ADD_OP; break; case '-': addChar(); nextToken = SUB_OP; break; case '*': addChar(); nextToken = MULT_OP; break; case '/': addChar(); nextToken = DIV_OP; break; default: addChar(); nextToken = EOF; break; } return nextToken; } /*****************************************************/ /* addChar - a function to add nextChar to lexeme */ void addChar() { if ( lexLen <= 98) { lexeme[ lexLen++] = nextChar; lexeme[ lexLen] = 0; } else printf(" Error - lexeme is too long \ n"); } /*******************************************************/ /* getChar - a function to get the next character of input and determine its character class */ void getChar() { if (( nextChar = getc( in_fp)) != EOF) { if ( isalpha( nextChar)) charClass = LETTER; else if ( isdigit( nextChar)) charClass = DIGIT; else charClass = UNKNOWN; } else charClass = EOF; } /*******************************************************/ /* getNonBlank - a function to call getChar until it returns a non- whitespace character */ void getNonBlank() { while ( isspace( nextChar)) getChar(); } /* lex - a simple lexical analyzer for arithmetic expressions */ int lex() { lexLen = 0; getNonBlank(); switch ( charClass) { /* Parse identifiers */ case LETTER: addChar(); getChar(); while ( charClass == LETTER || charClass == DIGIT) { addChar(); getChar(); } nextToken = IDENT; break; /* Parse integer literals */ case DIGIT: addChar(); getChar(); while ( charClass == DIGIT) { addChar(); getChar(); } nextToken = INT_LIT; break; /* Parentheses and operators */ case UNKNOWN: lookup( nextChar); getChar(); break; /* EOF */ case EOF: nextToken = EOF; lexeme[ 0] = ' E'; lexeme[ 1] = ' O'; lexeme[ 2] = ' F'; lexeme[ 3] = 0; break; } /* End of switch */ printf(" Next token is: % d, Next lexeme is % s\ n", nextToken, lexeme); return nextToken; } /* End of function lex */ 

Thank you

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Database Design And Implementation

Authors: Shouhong Wang, Hai Wang

1st Edition

1612330150, 978-1612330150

More Books

Students also viewed these Databases questions