Presentation is loading. Please wait.

Presentation is loading. Please wait.

CMPE 152: Compiler Design September 11/13 Lab

Similar presentations


Presentation on theme: "CMPE 152: Compiler Design September 11/13 Lab"— Presentation transcript:

1 CMPE 152: Compiler Design September 11/13 Lab
Department of Computer Engineering San Jose State University Fall 2018 Instructor: Ron Mak

2 Today’s Lab Work on Assignment #3: WHEN statement.
Modify the Chapter 8 source code to parse and execute a new statement added to Pascal.

3 Assignment #3: WHEN Statement
Add a new WHEN statement to Pascal! Example: Semantically similar to: WHEN i = 1 => f := 10; i = 2 => f := 20; i = 3 => f := 30; i = 4 => f := 40; OTHERWISE => f := -1 END IF i = THEN f := 10 ELSE IF i = 2 THEN f := 20 ELSE IF i = 3 THEN t := 30 ELSE IF i = 4 THEN f := 40 ELSE f := -1;

4 Assignment #3, cont’d Draw a syntax diagram to describe the grammar of the WHEN statement. Start with Chapter 8’s source code. Do the work in two stages: Modify the frontend parser to parse the WHEN statement and build an appropriate parse tree. Modify the backend executor to execute the parse tree.

5 Assignment #3, cont’d Modify and add files, roughly in this order:
Stage 1 PascalToken.h PascalToken.cpp PascalSpecialSymbolToken.cpp ICodeNodeImpl.h ICodeNodeImpl.cpp WhenStatementParser.h WhenStatementParser.cpp StatementParser.cpp Stage 2 WhenExecutor.h WhenExecutor.cpp StatementExecutor.cpp

6 Assignment #3, cont’d Parse and execute file when.txt: BEGIN i := 3;
         WHEN         i = 1 => f := 10;         i = 2 => f := 20;         i = 3 => f := 30;         i = 4 => f := 40;         OTHERWISE => f := -1     END;     range := 5.7;         (1.0 <= range) AND (range < 3.0) => level := 1;         (4.5 <= range) AND (range < 7.5) => BEGIN                                                level := 2;                                                alpha := range;                                            END;         (8.0 <= range) AND (range < 9.9) => level := 3;         OTHERWISE => level := -1 END.

7 Assignment #3, cont’d Flag and recover from syntax errors in file whenerrors.txt: Due Friday, September 28. BEGIN WHEN i := 3 => k > 5; m = n : m := 2*n; END; END.


Download ppt "CMPE 152: Compiler Design September 11/13 Lab"

Similar presentations


Ads by Google