Project on grammars | Computer Science homework help

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:
    1. (30 points)   Rewrite the set of productions above in Extended Backus-Naur Form (EBNF).
    1. (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 ) ; 
    }

    1. (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. 

0 replies

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

Your email address will not be published. Required fields are marked *