Compilers and Interpreters
for Dataingenjörsprogrammet, and others
Monday August 21, 2023
Exam for:
DT135G Kompilatorer och interpretatorer, provkod A001
Aids: | No aids. |
Score requirements: |
Maximum score is 41.
To pass, at least 22 points are required. |
Results: | Announced no later than 15 working days after the exam. |
Return of the exams: | Electronically through the student portal "Studenttjänster". |
Examiner and teacher on call: | Thomas Padron-McCarthy, phone 070-73 47 013. |
A is a non-terminal, but x and y are any constructions consisting of terminals and non-terminals.A -> A x | y
The rule is replaced by the following two rules (or, more correctly, three productions) that describe the same language, but are not left recursive:
A -> y R R -> x R | empty
A is a non-terminal, but x, y and z are any constructions consisting of terminals and non-terminals.A -> x y | x z
Replace with these three productions:
A -> x R R -> y | z
Program | Error |
---|---|
#insert <stdio.h> int main(void) { int x, z, t; printf("What is x: ); scanf("%d", x) printf("What is y: "); scan("%d", &z); printf("The sum of %d and %d is %d.\n", x, y, x + y); return "ok!"; } |
invalid preprocessing directive #insert unused variable 't' missing terminating " character Segmentation fault (core dumped) expected ';' before 'printf' undefined reference to 'scan' 'y' undeclared mismatched return type |
x = 1; if (y == z) { while (y < t * 2 * 3 + 4 * w) { y = y + 1; t = 2 * t / 3 / 4; } } else { y = 2; } x = 2;
Translate the program segment to two of the following three types of representations. (Should you answer with all three, the one with the highest points will be discarded.)
a) an abstract syntax tree (by drawing it)
b) postfix code for a stack machine
c) three-address code
Note: Two of the three types, not all three.
To keep track of our training i Sörbybacken, we will create a special input language. Here is an example of how this language looks:
2022-04-15 1:43 2022-04-17 1:42 2:09 1:44 1:55 2022-04-18 2:22 1:39 done |
The input above says that on April 15, 2022, we ran up the hill once, and it took 1 minute and 43 seconds. On April 17, we ran four times, taking 1:42, 2:09, 1:44 and 1:55. Finally, on April 18, we ran two times, taking 2:22 and 1:39.
We should be able to enter any number of lines, each consisting of a date and one or more times, where a time consists of minutes, a colon, and seconds. The keyword done marks the end of the input.
b) Out of these terminals, some will not have fixed lexemes. Write regular expressions for each such terminal.
2023-08-21 3:09 2023-08-22 2:09 2:08 done |