DVG C01 TENTAMEN I PROGRAMSPRÅK PROGRAMMING LANGUAGES EXAMINATION 120607 08:15-13: 15 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Bilaga A: BNF-definition En ordbok: studentenshemspråk engelska Betygsgräns: Kurs: Max 60p, Med beröm godkänd 50p, Icke utan beröm godkänd 40p, Godkänd 30p (varav minimum 20p från tentan, 10p från labbarna Tenta: Max 40p, Med beröm godkänd 34p, Icke utan beröm godkänd 27p, Godkänd 20p Labbarna: Max 20p, Med beröm godkänd 18p, Icke utan beröm godkänd 14p, Godkänd 10p SKRIV TYDLIGT LÄS UPPGIFTERNA NOGGRANT Course Director: Donald F. Ross Help information: Appendix A: BNF-definition A dictionary: the student s home language English Grading levels: Course: Max 60p, pass with special distinction 50p, pass with distinction 40p, pass 30p (of which a minimum 20p from the exam, 10p from the labs Exam: Max 40p, grade 5: 34p-40p, grade 4: 27p-33p, grade 3: 20p-26p Labs: Max 20p, grade 5: 18p-20p, grade 4: 14p-17p, grade 3: 10p-13p Write legibly read all questions carefully DFR/ND/EJN 120607 PS tentamen / PL Exam Sidan 1 av 6
Uppgift 1 / Question 1 Ange kortfattade svar på följande uppgifter: (a Ge en definition av (i aktuell parameter samt (ii formell parameter (b Förklara definitionen: G = (S, P, NT, T (c Förklara skillnaden mellan en lexem (lexeme, en delsträng (substring och ett mönster (pattern (d Förklara vad begreppen lokal och icke-lokal betyder inom programspråk (e Vad gör en parser? Write short answers to the following questions: (a Give a definition of (i actual parameter and (ii formal parameter (b Explain the definition G = (S, P, NT, T (c Explain the difference between a lexeme, a substring and a pattern (d Explain what the terms local and non-local mean in a programming language (e What does a parser do? Uppgift 2 / Question 2 LEXER Hur fungerar lexern I ett parsningsprocess? Svar ingående och använda helst exempel. How does the lexer work in a parsing process? Discuss in detail and use examples. Uppgift 3 / Question 3 - PARSER program test(input, output; var id, number, assign: integer; id := number + assign * 2 end. Förklara hur felhantering och återhämting sker under parsningsprocessen. Använd programmet ovan i din diskussion. Svara ingående. Explain how error handling and recovery take place during the parsing process. Use the above program in your discussion. Answer in detail. DFR/ND/EJN 120607 PS tentamen / PL Exam Sidan 2 av 6
Uppgift 4 / Question 4 expr -> term R1 R1 -> e '+' term R1 term -> factor R2 R2 -> e '*' factor R2 factor -> '(' expr '' DIGIT (e = empty Titta noggrant på grammatiken ovan. Rita parseträdet för uttrycket (2+2*2. Read the above grammar carefully. Draw the parse tree for the expression: (2+2*2. Uppgift 5 / Question 5 Förklara hur parametrar kan hanteras i programspråk. Svara ingående. Explain how parameters may be handled in programming languages. Answer in detail. DFR/ND/EJN 120607 PS tentamen / PL Exam Sidan 3 av 6
Uppgift 6 / Question 6 - LISP (defun make-book (title author class (list (list 'title title (list 'author author (list 'class class (defun xxx (book yyy zzz (if (eql yyy (first (first book (cons (append (first book (list zzz (rest book (cons (first book (xxx (rest book yyy zzz (setf book1 (make-book '(Artificial Intelligence '(Patrick Henry Winston '(Technical AI (setf book1 (xxx book1 'class 'kau (quit Läs noggrant Lispkoden ovan. (a Vad är det nya värdet av book1? (b Hur fungerar funktion xxx? (1p (4p Read the Lisp code above carefully (a What is the new value of book1? (b How does the function xxx work? (1p (4p DFR/ND/EJN 120607 PS tentamen / PL Exam Sidan 4 av 6
Uppgift 7 / Question 7 - PROLOG Du har följande predikat: conc([], L, L. conc([x L1], L2, [X L3 :- conc(l1, L2, L3. del(x, [X Tail], Tail. del(x, [Y Tail], [Y Tail1] :- del(x, Tail, Tail1. a Predikatet conc brukar ha ett annat, engelskt eller svenskt, namn som beskriver hur predikatet fungerar. Vilket namn? b Vad blir resultatet (svaret när frågan?- del(a, [a, b, a, c, a], X. exekveras? c Hur många olika svar kan man få på föregående fråga om man skriver ; efter varje nytt svar? d Vilka svar får man? Skriv i den ordningsföljd de erhålles. 2 p e Egentligen vill man bara ha ett svar. Hur ska koden förändras (tillägg för att eliminera falska svar? The following predicates are given: conc([], L, L. conc([x L1], L2, [X L3 :- conc(l1, L2, L3. del(x, [X Tail], Tail. del(x, [Y Tail], [Y Tail1] :- del(x, Tail, Tail1. a The predicate conc usually have another, English or Swedish, name which describes how the predicate works. Which is the name? b What will be the result (answer when the question?- del(a, [a, b, a, c, a], X. is executed? c How many different answers are obtained on the previous question if ; is typed after every new answer? d Which are the answers? Write them in the order they are given. 2 p e Normally you want only one answer. Change the code (add some code to eliminate false answers. DFR/ND/EJN 120607 PS tentamen / PL Exam Sidan 5 av 6
Uppgift 8 / Question 8 - OO There are object-orientated programming languages, like C++, C#, and Java, and there is object-orientated design. Elaborate and explain, while contrasting programming language to design, the significance of utilizing the Pascal part of Java. In your discussion, include a few advantages and drawbacks respectively, with an object-orientated solution as opposed to a data based, structured program. Bilaga A - Grammatik: Pascallik språk Appendix A: Grammar: Pascal like language 1. [prog] ::= [prog header] [var part] [stat part] 2. [prog header] ::= program id ( input, output ; 3. [var part] ::= var [var dec list] 4. [stat part] ::= begin [stat list] end. 5. [var dec list] ::= [var dec] [var dec list] [var dec] 6. [var dec] ::= [id list] : [type] ; 7. [stat list] ::= [stat] [stat list] ; [stat] 8. [stat] ::= [assign stat] 9. [assign stat] ::= id := [expr] 10. [expr] ::= [term] [R1] 11. [R1] ::= e + [term] [R1] 12. [term] ::= [factor] [R2] 13. [R2] ::= e * [factor] [R2] 14. [factor] ::= ( [expr] [operand] 15. [type] ::= integer 16. [id list] ::= id [id list], id 17. [operand] ::= id number DFR/ND/EJN 120607 PS tentamen / PL Exam Sidan 6 av 6