HashMap to your Lexer class and initialize all the keywords. Change your lexer so that it checks each string before making the WORD token and creates a token of the appropriate type if the work is a key word. When the exact type of a token is known, you should NOT fill in the value string, the type is enough. For tokens with no exact type we still need to fill in the token’s string. Rename “WORD” to “IDENTIFIER”.  Strings and characters will require some additions to your state machine. Create “STRINGLITERAL” and “CHARACTERLITERAL” token types. These cannot cross line boundaries. Your lexer should throw an exception if it encounters a character that it doesn’t expect outside of a comment, string literal or character literal. Create a new exception type that includes a good error message and the token that failed. Ensure that the ToString method prints nicely. Add “line number” to your Token class. Keep track of the current line number in your lexer and populate each Token’s line number; this is straightforward because each call to lex() will be one line greater than the last one. The line number should be added to the exception, too, so that users can fix the exceptions. For each line, count from the beginning the number of spaces and tabs until you reach a non-space/tab. Each tab OR four spaces is an indentation level. If the indentation level is greater than the last line, output one or more INDENT tokens. If the indentation level is less than the last line, output one or more DEDENT tokens. Your exception must be called “SyntaxErrorException” and be in its own file.   Below is shank.txt. Make sure shank.txt gets printed out in the console and MAKE SURE TO take screenshots of shank.txt being printed out in the console as tokens with the 3 java files being shown as well. The 3 java files must be main.java, token.java, and lexer.java. The output must show shank.txt being printed out in tokens. There must be no error at all.

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question

Java Code: Add a HashMap to your Lexer class and initialize all the keywords. Change your lexer so that it checks each string before making the WORD token and creates a token of the appropriate type if the work is a key word. When the exact type of a token is known, you should NOT fill in the value string, the type is enough. For tokens with no exact type we still need to fill in the token’s string. Rename “WORD” to “IDENTIFIER”. 

Strings and characters will require some additions to your state machine. Create “STRINGLITERAL” and “CHARACTERLITERAL” token types. These cannot cross line boundaries.

Your lexer should throw an exception if it encounters a character that it doesn’t expect outside of a comment, string literal or character literal. Create a new exception type that includes a good error message and the token that failed. Ensure that the ToString method prints nicely.

Add “line number” to your Token class. Keep track of the current line number in your lexer and populate each Token’s line number; this is straightforward because each call to lex() will be one line greater than the last one. The line number should be added to the exception, too, so that users can fix the exceptions.

For each line, count from the beginning the number of spaces and tabs until you reach a non-space/tab. Each tab OR four spaces is an indentation level. If the indentation level is greater than the last line, output one or more INDENT tokens. If the indentation level is less than the last line, output one or more DEDENT tokens. Your exception must be called “SyntaxErrorException” and be in its own file.

 

Below is shank.txt. Make sure shank.txt gets printed out in the console and MAKE SURE TO take screenshots of shank.txt being printed out in the console as tokens with the 3 java files being shown as well. The 3 java files must be main.java, token.java, and lexer.java. The output must show shank.txt being printed out in tokens. There must be no error at all.

 

 

 

shank.txt

 

Fibonoacci (Iterative)

 

define add (num1,num2:integer var sum : integer)

variable counter : integer

Finonacci(N)

int N = 10;

while counter < N

define start ()

variables num1,num2,num3 : integer

add num1,num2,var num3

{num1 and num2 are added together to get num3}

num1 = num2;

num2 = num3;

counter = counter + 1;

 

GCD (Recursive)

 

define add (int a,int b : gcd)

if b = 0

sum = a

sum gcd(b, a % b)

 

GCD (Iterative)

 

define add (inta, intb : gcd)

if a = 0

sum = b

if b = 0

sum = a

while counter a != b

if a > b

a = a - b;

else

b = b - a;

sum = a;

variables a,b : integer

a = 60

b = 96

subtract a,b

Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 3 steps

Blurred answer
Knowledge Booster
Math class and its different methods
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education