Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Write this program in C + + Lexical analysis is the process of reading in the stream of characters making up the source code of

Write this program in C++
Lexical analysis is the process of reading in the stream of characters making up the source code of
a program and dividing the input into tokens. In this assignment, you will use regular expressions
and DFAs to implement a lexical analyzer for a subset of C programming language.
Your Task
Your task is to write a program that reads an input text file, and constructs a list of tokens in
that file. Your program may be written in C, C++, Java or any other programming language.
Assuming that the input file contains the following code string:
2.1 Sample Input (C++ code)
void main ()
{
int sum =0;
for(int j=0; j 10; j=j+1)
{
sum = sum + j +10.43+34E4+45.34E-4+ E43+.34;
}
}
2.2 Sample Output
The output of the program should be similar to the following:
Class : Lexeme
keyword : void
identifient : main
Lexical analysis
Lexical analysis is the process of reading in the stream of characters making up the source code of
a program and dividing the input into tokens. In this assignment, you will use regular expressions
and DFAs to implement a lexical analyzer for a subset of C programming language.
Your Task
Your task is to write a program that reads an input text file, and constructs a list of tokens in
that file. Your program may be written in C, C++, Java or any other programming language.
Assuming that the input file contains the following code string:
2.1 Sample Input (C++ code)
void main ()
{
int sum =0;
for(int j=0; j 10; j=j+1)
{
sum = sum + j +10.43+34E4+45.34E-4+ E43+.34;
}
}
2.2 Sample Output
The output of the program should be similar to the following:
Class : Lexeme
keyword : void
identifier : main
( : (
) : )
{ : {
keyword : int
identifier : sum
= : =
num : 0
; : ;
keyword : for
( : (
keyword : int
identifier : j
= : =
num : 0
; : ;
identifier : j
:
num : 10
; : ;
identifier : j
= : =
identifier : j
+ : +
num : 1
) : )
{ : {
identifier : sum
= : =
identifier : sum
+ : +
identifier : j
+ : +
num : 10.43
+ : +
num : 34.E4
+ : +
num : 45.34E-4
+ : +
identifier : E43
+ : +
Error : .
num : 34
; : ;
} : }
} : }
Valid Tokens
Programs in this language are composed of tokens displayed in table 1 :
Construction of Deterministic Finite Automata (DFA) or Transi-
tion Diagrams
You can construct single DFA (also called transition diagram) for recognizing all tokens in this
language by combining individual DFAs for each type of token. For example you can construct
transition diagram for identifiers and numbers and them merge the start states of two diagrams to
create a single transition diagram that recognizes both numbers and identifiers.
For identifying keywords, you can store keywords in some data structure (hashmap or string
array). Whenever your program recognizes a token of identifier, you can check your map or string
array if this identifier matches any keyword. If it matches any keyword then consider it keyword
otherwise consider it identifier
image text in transcribed

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_2

Step: 3

blur-text-image_3

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

More Books

Students also viewed these Databases questions

Question

What are the four primary consumable arc-welding processes?

Answered: 1 week ago