Програмски преводиоци 1/Јануар 2024 — разлика између измена

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу
Ред 45: Ред 45:
== 2. zadatak ==
== 2. zadatak ==
=== Postavka ===
=== Postavka ===
Data je sledeća gramatika:
* <S> -> <S>a
* <S> -> <S><A>b
* <S> -> eps
* <A> -> a
* <A> -> b
# Konstruisati automat i kontrolnu tabelu SLR(1) automata
# Ispraviti gramatiku tako da se ukloni konflikt ali semantika ostane ista.


=== Rešenje ===
=== Rešenje ===

Верзија на датум 19. јануар 2024. у 00:12

Овај рок није решен. Помозите SI Wiki тако што ћете га решити.

Januarski ispit 2024. godine održan je 18. januara i trajao je 150 minuta. Postavka roka nije dostupna sa stranice predmeta.

1. zadatak

Postavka

Dat je sledeći kod na programskom jeziku C.

int f1(int a) {
    int b = a;
    b = b + 1;
    return b;
}

int f2(int a) {
    int b = a;
    b = b + f1(1);
    return b;
}

int m(int a, int n, int (*m1)(int), int(*m2)(int)) {
    int tmp1, int tmp2;
    tmp1 = f1(a);
    tmp2 = f2(a);
    
    if (n == 0) {
        return 1;
    } else {
        return tmp2 * m(tmp1, n - 1, m1, m2);
    }
}

int main() {
    printf("%d", m(1, 3, &f1, &f2));
    return 0;
}
  • Dati ispis programa;
  • Dati izgled steka nakon poslednjeg poziva funkcije f2;
  • Dati x86 kod za funkciju f2.

Rešenje

2. zadatak

Postavka

Data je sledeća gramatika:

  • <S> -> <S>a
  • <S> -> <S><A>b
  • <S> -> eps
  • <A> -> a
  • <A> -> b
  1. Konstruisati automat i kontrolnu tabelu SLR(1) automata
  2. Ispraviti gramatiku tako da se ukloni konflikt ali semantika ostane ista.

Rešenje

3. zadatak

Postavka

Rešenje

4. zadatak

Postavka

Rešenje

5. zadatak

Postavka

Rešenje

6. zadatak

Postavka

Rešenje