Consider a language in which there can three kinds of statements- input, output and assignment. Each statment is terminated by a semicolon. 1. An input statement is of the form < id; where id is any identifier, and the statement means the user should enter a numeric value to be associated to that identifier. 2. An output statement is of the form > id; where id is any identifier, and the statement means the value associated with the identifier is printed on the terminal. 3. An assignment statement is of the form id = expression; where id is an identifier and expression is an arithmatic expression involving zero or more binary operators +, -, * and /, with their usual meanings, and precedence and associativity. The operands can be either numeric quantities or identifiers. In case of an identifier as an operand the value associated with the identifier (dafult is 0) is to be assumed. The assignment statement implies that the expression is evaluated and the result should be associated to the identifier to the left of the assignment operator =. Write a program using flex, bison and C to process input in the above language.