Database System Concepts
Database System Concepts
7th Edition
ISBN: 9780078022159
Author: Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher: McGraw-Hill Education
Bartleby Related Questions Icon

Related questions

Question

Java Code:

Create a Parser class. Much like the Lexer, it has a constructor that accepts a LinkedList of Token and creates a TokenManager that is a private member.

The next thing that we will build is a helper method – boolean AcceptSeperators(). One thing that is always tricky in parsing languages is that people can put empty lines anywhere they want in their code. Since the parser expects specific tokens in specific places, it happens frequently that we want to say, "there HAS to be a ";" or a new line, but there can be more than one". That’s what this function does – it accepts any number of separators (newline or semi-colon) and returns true if it finds at least one.

Create a Parse method that returns a ProgramNode. While there are more tokens in the TokenManager, it should loop calling two other methods – ParseFunction() and ParseAction(). If neither one is true, it should throw an exception.

bool ParseFunction(ProgramNode)

bool ParseAction(ProgramNode)

-Creates ProgramNode, loops over Parse calls correctly, throws exception if unknown item found

-(ParseFunction) Uses MatchAndRemove(), handles any number of parameters, fills in ASTNode correctly

-(ParseAction) Uses MatchAndRemove(), handles any number of parameters, fills in ASTNode correctly

Below is main.java and main.java needs to call the parser. Make sure to give the correct code for parser.java with the screenshots of the output. There must be test cases involved, so make sure to have test cases as well.

main.java

import java.util.*;

public class Main{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Input: ");
String input = scanner.nextLine();

Lexer lexer = new Lexer(input);
List<Token> tokens = lexer.lex();
System.out.print("Output: ");
for (int i = 0; i < tokens.size(); i++) {
Token token = tokens.get(i);
if (token.getType() != Token.TokenType.ENDOFFILE) {
System.out.print(token);
if (i < tokens.size() - 1 && tokens.get(i + 1).getType() != Token.TokenType.ENDOFFILE) {
System.out.print(" ");
}
}
}

scanner.close();
}


}

Expert Solution
Check Mark
Knowledge Booster
Background pattern image
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
    Recommended textbooks for you
    Text book image
    Database System Concepts
    Computer Science
    ISBN:9780078022159
    Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
    Publisher:McGraw-Hill Education
    Text book image
    Starting Out with Python (4th Edition)
    Computer Science
    ISBN:9780134444321
    Author:Tony Gaddis
    Publisher:PEARSON
    Text book image
    Digital Fundamentals (11th Edition)
    Computer Science
    ISBN:9780132737968
    Author:Thomas L. Floyd
    Publisher:PEARSON
    Text book image
    C How to Program (8th Edition)
    Computer Science
    ISBN:9780133976892
    Author:Paul J. Deitel, Harvey Deitel
    Publisher:PEARSON
    Text book image
    Database Systems: Design, Implementation, & Manag...
    Computer Science
    ISBN:9781337627900
    Author:Carlos Coronel, Steven Morris
    Publisher:Cengage Learning
    Text book image
    Programmable Logic Controllers
    Computer Science
    ISBN:9780073373843
    Author:Frank D. Petruzella
    Publisher:McGraw-Hill Education