Name: SOLUTION KEYCSCI-4430 Programming LanguagesMidterm ExamPart I1 A Grammar for Simple Arithmetic ExpressionsThe following is a grammar for simple arithmetic expressions that involveonly natural numbers, addition, and multiplication.digit ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9+number ::= { digit}expression ::= factor| expression + expressionfactor ::= number| factor * factor1. What are the tokens of this language? 2ptsSolution. The tokens of the language are digits and the symbols +and .*2. With this grammar, the expression 1+2+3 has two parse trees: /|\ /|\/|\ /|\ + + /|\ | | /|\/|\ | |/|\ + + ||| ||| | ||| 3 1 ||12 23The existence of two parse trees for the same string shows that thegrammar is (circle one) 2pts(a) ambiguous(b) context-free(c) context-sensitive1(d) left-associative(e) right-associativeSolution. (a)2 Evaluating Simple Arithmetic ExpressionsFor evaluation of expressions by an interpreter (or for code-generation by acompiler), parse trees are not the most convenient representation, becausethey still contain information about the original string representation that isunnecessary for computation. The following Oz program is a little expressionevaluator that assumes its input is in the form of an abstract syntax treeconstructed from Oz ...
Voir