[Solved] CS451651 Project4- Scanning and Parsing with JavaCC

$25

File Name: CS451651_Project4__Scanning_and_Parsing_with_JavaCC.zip
File Size: 480.42 KB

SKU: [Solved] CS451651 Project4- Scanning and Parsing with JavaCC Category: Tag:
5/5 - (1 vote)
  1. Support multiline comment.
  2. Support long and double basic types.
  3. Support operators.
  4. Support conditional expression and switch statement.
  5. Support do-while and for statements.
  6. Support exception handlers.
  7. Support interface type declaration.

In this project you will only modify the JavaCC specification file $j/j/src/jminusminus/j.jj for j to add more Java tokens and programming constructs to the j language. In the first part, you will modify the scanner section of the j.jj file to support the Java tokens that you handled as part of Project 2 (Scanning). In the second part, you will modify the parser section of the file to support the Java programming constructs that you handled as part of Project 3 (Parsing). To compile the j compiler with the JavaCC front-end, ie, with the scanner and parser generated by JavaCC, run the following command:

$ ant clean javacc compileJavaCC jar

Part I: Additions to JavaCC Scanner

To scan your j programs using the JavaCC scanner, you need to run the javaccj command as follows:

$ $j/j/bin/javaccj -t P.java

which only scans P.java and prints the tokens in the program along with the line number where each token appears.

Problem 1. (Multiline Comment) Add support for multiline comment, where all the text from the ASCII characters /* to the ASCII characters */ is ignored.

$ $j/j/bin/javaccj -t tests/MultiLineComment.java

See tests/MultiLineComment.tokens for output.

Problem 2. (Reserved Words) Add support for the following reserved words.

break case catch
continue default do
double final finally
for implements interface
long switch throw
throws try

$ $j/j/bin/javaccj -t tests/ReservedWords.java

See tests/ReservedWords.tokens for output.

Problem 3. (Operators) Add support for the following operators.

? ~ != / /=
-= *= % %=
>> >>= >>> >>>= >=
<< <<= < ^ ^=
| |= || & &=

$ $j/j/bin/javaccj -t tests/Operators.java

See tests/Operators.tokens for output.

Problem 4. (Separators) Add support for the separator : (colon).

$ $j/j/bin/javaccj -t tests/Separators.java

See tests/Separators.tokens for output.

Problem 5. (Literals) Add support for (just decimal for now) long and double literals.

<int_literal> = 0 | (1-9) {0-9} // decimal<long_literal> = <int_literal> (l | L)<digits> = (0-9) {0-9}<exponent> = (e | E) [(+ | -)] <digits><suffix> = d | D<double_literal> = <digits> . [<digits>] [<exponent>] [<suffix>]| . <digits> [<exponent>] [<suffix>]| <digits> <exponent> [<suffix>]| <digits> [<exponent>] <suffix>

$ $j/j/bin/javaccj -t tests/Literals.java

See tests/Literals.tokens for output.

Part II: Additions to JavaCC Parser

To parse your j programs using the JavaCC parser, you need to run the javaccj command as follows:

$ $j/j/bin/javaccj -p P.java

which will only parse P.java and print the AST for the program in XML format.

Note.

  1. Consult the appendix at the end for the grammar (ie, formal specification) for each new construct you will be supporting in j.
  2. The AST output provided for each problem is meant to give you an idea as to what the AST ought to look like once the syntactic constructs for that problem are implemented in j. You are expected to implement the writeToStdOut() method in the J* files for the constructs such that your AST output is something similar. The autograder will not match your AST against ours for correctness, but instead will test if your parser parses our pass tests without errors.

Problem 6. (Long and Double Basic Types) Add support for the long and double basic types.

$ $j/j/bin/javaccj -p tests/BasicTypes.java

See tests/BasicTypes.ast for output.

Problem 7. (Operators) Add support for the following operators, obeying precedence rules (see appendix at the end).

~ != / /= -=
++ *= % %=
>> >>= >>> >>>= >=
<< <<= < ^ ^=
| |= || & &=

$ $j/j/bin/javaccj -p tests/Operators.java

See tests/Operators.ast for output.

Problem 8. (Conditional Expression) Add support for conditional expression (e1 ? e2 : e3).

$ $j/j/bin/javaccj -p tests/ConditionalExpression.java

See tests/ConditionalExpression.ast for output.

Problem 9. (Switch Statement) Add support for a switch statement.

$ $j/j/bin/javaccj -p tests/SwitchStatement.java

See tests/SwitchStatement.ast for output.

Problem 10. (Do-while Statement) Add support for a do-while statement.

$ $j/j/bin/javaccj -p tests/DoWhileStatement.java

See tests/DoWhileStatement.ast for output.

Problem 11. (For Statement) Add support for a for statement.

$ $j/j/bin/javaccj -p tests/ForStatement.java

See tests/ForStatemnet.ast for output.

Problem 12. (Exception Handlers) Add support for exception handling, which involves supporting the try, catch, finally, throw, and throws clauses.

$ $j/j/bin/javaccj -p tests/ExceptionHandlers.java

See tests/ExceptionHandlers.ast for output.

Problem 13. (Interface Type Declaration) Implement support for interface declaration.

$ $j/j/bin/javaccj -p tests/Interface.java

See tests/Interface.ast for output.

Reviews

There are no reviews yet.

Only logged in customers who have purchased this product may leave a review.

Shopping Cart
[Solved] CS451651 Project4- Scanning and Parsing with JavaCC[Solved] CS451651 Project4- Scanning and Parsing with JavaCC
$25