Description
Write a program that will take an input file called input.txt which will contain a Java program and parse it and output an annotated version.
Your program will track the nesting depth of the braces of the input file and will output an annotated version of the file.
Your final program will
1. List the nesting depth of curly braces
2. Ignore braces inside quotes or comments
Use Python
Assume that braces can be anywhere
Assume that all quoted strings begin and end on the same line.
Sample INPUT:
——————-
import blah;
class Foo
{
void Foo()
{
System.out.println(“braces are fun! {{{{{“); // ignored
if (condition)
{
// also ignored: {
int a = 1;
// as is this: }
}
}
}
//end of program
Sample annotated OUTPUT:
————-
0 import blah;
0 class Foo
1 {
1 void Foo()
2 {
2 System.out.println(“braces are fun! {{{{{“); // ignored
2 if (condition)
3 {
3 // also ignored: {
3 int a = 1;
3 // as is this: }
3 }
2 }
1 }
0 // end of program
Extra credit A
Handle block comments that cross multiple lines of the input file.
/* comment with
ignored brace { */
Extra credit B
Output the source code to be properly indented, even if the input was all one line.
INPUT:
if (condition){ int a = 1; }
BECOMES:
if (condition)
{
int a = 1;
}
If you work on the extra credit your code file should be named netid_PA1_EC.py and your input file will be input_EC.txt.
Note :- The sample input and output will not be the only test case used to test the working of your code. Do NOT contact the TA or instructor regarding the test cases.