Question
Java Programming: Make ProgramNode (derived from Node, of course) to do this. But instead of ArrayList or LinkedList of FunctionNodes, make a HashMap, using the
Java Programming: Make ProgramNode (derived from Node, of course) to do this. But instead of ArrayList or LinkedList of FunctionNodes, make a HashMap, using the function name as the key and the FunctionNode as the value. This will make it fast to find FunctionNodes by name later.
The model of recursive descent should suggest some methods, here:
function() processes a function. It expects a define token. Then an identifier (the name). Then a left paren. Then a list of 0 or more variable declarations. Then a right paren. Then an endOfLine. Then constants and variables. Then an indent. Then statements. Then a dedent. It returns a FunctionNode or null.
parameterDeclarations() process the parameters and returns a collection of VariableNode. Remember that a parameter may or may not be var. Remember that there may not be any parameters.
You can process constants and variables in one function or two (your decision). function() should call this function / these functions until there are no more. There is no strict ordering you can have variable lines and constants lines intermixed.
Constant parsing needs the logic we used in factor for determining negative and integer or float (based on number). It also needs to account for char, string and boolean (by looking for the relevant tokens true, false, characterLiteral, stringLiteral). Making helper functions will be beneficial here.
function() should expect indent, then call expression() until it returns null and print the resultant expressions (just to make sure that the parsing is still correct) then expect dedent. Since the expressions are just temporary, we wont store them in our FunctionNode().
parse() should call function() in its loop. Every FunctionNode returned should go into the ProgramNode (there will be only one of these). null should end the parse() loop. parse() should return the ProgramNode. In main, where parse() is called, get the ProgramNode and print every FunctionNode (which will print the parameters, variables, and constants). This should give you a full view of the parse tree so far. Make sure to run the code and show the entire code with its output. There must be no error in the code at all .
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started