The Parser is a syntactic analyser that catches syntactic errors .
Input -> Sequence of tokens produced by the lexer.
Output ->Analysed Sequence on tokens syntactically cottect.
<prog> -> <statlist> EOF <statlist> -> <stat> <statlistp> <statlistp> -> ; <stat> <statlistp> | epsilon <stat> -> = ID <expr> | print ( <exprlist> ) | read ( ID ) | cond <whenlist> else <stat> | while ( <bexpr> ) <stat> | { <statlist> } <whenlist> -> <whenitem> <whenlistp> <whenlistp> -> <whenitem> <whenlistp> | epsilon <whenitem> -> when ( <bexpr> ) do <stat> <bexpr> -> RELOP <expr> <expr> <expr> -> + ( <exprlist> ) | * ( <exprlist> ) | - <expr> <expr> | / <expr> <expr> | NUM | ID <exprlist> -> <expr> <exprlistp> <exprlistp> -> <expr> <exprlistp> | epsilon