The executable should be testParser. Please add makefile. Please add as many comments as you can.

Verify the below Grammar is LL(1) or reprepare as needed in an equivalent form

Implement the parser in a separate file (parser.c and parser.h). Implement the main parser function in a separate file main.c: the main function should check for command line arguments, and then call the parser function to build the tree, and then implement recursive traversal to print the tree. Make sure it will check for the EOF token. The display is just for testing.

Implement the parser in two iterations:

1) Parser1.c : Starting without the parse tree. Have your parses generate error (print the line number and the nature of the problem such as token expected and token received) on the first error and exit, or print OK message upon successful parse.

2) For each non-terminal, use a void function named after the non-terminal. Decide how to pass the token. Be systematic: assume each function starts with unconsumed token (not matched yet) and returns unconsumed token. The non-LL(1) non-terminals with all-common prefix - implement the shortcut to mate them LL(1) rather than explicitly performing left-factorization

3) Parser2.c : Only after completing and testing the above to satisfaction, modify each parse function to build a subtree, and return its root node. Assume each function builds just the root and connects its subtrees. Modify the main function to receive the tree built in the parser, and then display it (for testing) using a preorder display. Add declaration file node.h

o do left to right traversal, for each new level use 2 space indentation

o when visiting a node print what the node is and what tokens it has if any, then print its children left to right the same way

o for every token, print token type, instance and line number

Some hints for tree:

Every node should have a label consistent with the name of the function creating it.

Every function creates exactly one tree node (or possibly none).

The number of children seems as 3 max but it is your decision.

All syntactic tokens such as () can be thrown away, all other tokens need to be stored in the tree.

When storing a token, you may need to make a copy depending on your interface.

Related Questions in C/C++

Write a console-based C++ program that can be used as a math tutor for a young student. The program should display two random numbers consisting of three digits each to be added in columnar format, such as: 247 +129 ---- ...

Design, implement, test, and debug a C# program to simulate the rolling of two dice 100 times. Whenever the two dice display the same number, the program should show the roll sequence number (e.g. the 10th roll) and the ...

Programming in C Assignment Write a C program that computes and outputs the current age of the United States in days (you can use 1776 as theUS founding year). You don't have to worry about fractional years or leap years ...

Assignment When writing C++ programs include comments in your code, make the program readable by indenting, use meaningful variable and function names, and produce meaningful output. This assignment will be to write a te ...

Write a C program that prompts the user to enter a line of text (up to 50 characters). It should then convert the text entered to uppercase letters and then to lowercase letters, and then to Sentence case. Your program s ...

Writing a C++ code, its a beginner level code. Design a class house that defines a house on a street. A house has a house number and an (x,y) location, where x and y are numbers between -10 and 10. the key member is plot ...

PROGRAMMING ASSIGNMENT #5 Write a C program that allows the user to make some banking transactions. The program should first prompt the user to enter the current balance of his/her bank account (in dollars and cents, not ...

1. Write a C++ program that allows the user to create a test bank of questions 2. The program should first ask the user how many questions he or she wishes to create. 3- The user should now be prompted for all informatio ...

Assignment (a) Random Maze Write a new C++ program with the following functionality: The program writes a greeting on the screen. Then the program displays a maze of ASCII symbols on the screen. The maze consists of 8 ro ...

1. We know that from ECE 109, to calculate the equivalent resistance of a network of resistors in series in parallel are given by: Write a C++ program that asks the user to input values for resistors (as many as they wou ...

4,153,160 Questions Asked

13,132 Experts

2,558,936 Questions Answered

Ask Experts for help!!

Looking for Assignment Help?

Start excelling in your Courses,
Get help with Assignment

Write us your full requirement for evaluation and you will receive response within 20 minutes turnaround time.