| Objective: |
To acquire a comprehensive understanding of the application of grammars and formal language theory to computing languages. |
| Given: |
Consider the following set of productions:
| P01: |
FN |
→ |
FN–HEAD FN–BODY |
| P02: |
FN–HEAD |
→ |
TYPE id ( PARAM–LIST ) |
| P03: |
TYPE |
→ |
char |
| P04: |
TYPE |
→ |
int |
| P05: |
TYPE |
→ |
real |
| P06: |
PARAM–LIST |
→ |
TYPE id |
| P07: |
PARAM–LIST |
→ |
PARAM–LIST , TYPE id |
| P08: |
FN–BODY |
→ |
{ VAR–DECL STMT return ( EXPRESN ) ; } |
| P09: |
VAR–DECL |
→ |
λ |
| P10: |
VAR–DECL |
→ |
TYPE ID–LIST ; |
| P11: |
VAR–DECL |
→ |
VAR–DECL TYPE ID–LIST ; |
| P12: |
ID–LIST |
→ |
id |
| P13: |
ID–LIST |
→ |
ID–LIST , id |
| P14: |
STMT |
→ |
λ |
| P15: |
STMT |
→ |
SIMPLE–STMT |
| P16: |
STMT |
→ |
SELECT–STMT |
| P17: |
STMT |
→ |
REPEAT–STMT |
| P18: |
STMT |
→ |
SEQUENCE–STMT |
| P19: |
SIMPLE–STMT |
→ |
ASSIGN–STMT |
| P20: |
SIMPLE–STMT |
→ |
FN–CALL–STMT |
| P21: |
ASSIGN–STMT |
→ |
var = EXPRESN ; |
| P22: |
EXPRESN |
→ |
ARITH–EXP |
| P23: |
EXPRESN |
→ |
BOOL–EXP |
| P24: |
ARITH–EXP |
→ |
TERM |
| P25: |
ARITH–EXP |
→ |
ARITH–EXP ADD–OP TERM |
| P26: |
ADD–OP |
→ |
+ |
| P27: |
ADD–OP |
→ |
– |
| P28: |
TERM |
→ |
FAC |
| P29: |
TERM |
→ |
TERM MUL–OP FAC |
| P30: |
MUL–OP |
→ |
* |
| P31: |
MUL–OP |
→ |
/ |
| P32: |
FAC |
→ |
( ARITH–EXP ) |
| P33: |
FAC |
→ |
OPD |
| P34: |
OPD |
→ |
var |
| P35: |
OPD |
→ |
const |
| P36: |
BOOL–EXP |
→ |
RELN–EXP |
| P37: |
BOOL–EXP |
→ |
LOGIC–EXP |
| P38: |
RELN–EXP |
→ |
OPD RELN–OPR OPD |
| P39: |
RELN–OPR |
→ |
== |
| P40: |
RELN–OPR |
→ |
!= |
| P41: |
RELN–OPR |
→ |
< |
| P42: |
RELN–OPR |
→ |
<= |
| P43: |
RELN–OPR |
→ |
> |
| P44: |
RELN–OPR |
→ |
>= |
| P45: |
LOGIC–EXP |
→ |
OPD LOGIC–OPR OPD |
| P46: |
LOGIC–EXP |
→ |
LOGIC–OPR OPD |
| P47: |
LOGIC–OPR |
→ |
and |
| P48: |
LOGIC–OPR |
→ |
or |
| P49: |
LOGIC–OPR |
→ |
not |
| P50: |
FN–CALL–STMT |
→ |
id ( ARG–LIST ) ; |
| P51: |
ARG–LIST |
→ |
λ |
| P52: |
ARG–LIST |
→ |
id |
| P53: |
ARG–LIST |
→ |
ARG–LIST , id |
| P54: |
SELECT–STMT |
→ |
if CONDITION STMT else STMT |
| P55: |
CONDITION |
→ |
( BOOL–EXP ) |
| P56: |
REPEAT–STMT |
→ |
DO–STMT |
| P57: |
REPEAT–STMT |
→ |
WHILE–STMT |
| P58: |
DO–STMT |
→ |
do { STMT } while CONDITION ; |
| P59: |
WHILE–STMT |
→ |
while CONDITION do { STMT } ; |
| P60: |
SEQUENCE–STMT |
→ |
STMT STMT |
|
|
| Instructions: |
- (30 points) Rewrite the set of productions above in Extended Backus-Naur Form (EBNF).
- (35 points) Using a Push Down Automaton (PDA), determine if the following function is valid code according to the given set of productions.
int Max ( int x, int y ) { int z ;
if ( x >y ) z = x ; else z = y ;
return ( z ) ; }
|
- (35 points) Validate your answer in (2) by illustrating it with a derivation tree
|
| Deliverable: |
Submit a paper Times New Roman font, 12 pt., double-space lines). The project must contain an introduction which includes the purpose of the project.
I attached the answers to 1 and 2 just look to make sure correct and write a paper.
|
Leave a Reply
Want to join the discussion?Feel free to contribute!