Задачи для экзамена

  1. Рассмотрим описания в языке С, включающие целые и вещественные типы, обычные переменные, указатели, массивы (в том числе неопределенной длины) и прототипы функций. Примеры:
        int n;
        double a;
        int *p;
        int *p[];
        double (*a)[10];
        double f(double);
        int a[][10];
        int (*f)(int, double*);
        int (*(*f)(int, double*))[10][20];
    
    Написать однозначную контекстно свободную грамматику этого языка.
  2. Построить детерминированный конечный автомат, эквивалентный данному недетерминированному (прислать рисунок).
  3. Для данного детерминированного конечного автомата выписать регулярное выражение, определяющее тот же самый язык. (Применить алгоритм из доказательства теоремы Клини.)
  4. Допускает ли следующая грамматика LR(0)-разбор?
       S -> F$
       F -> L;
       L -> a | L, a
    
    Выписать систему состояний LR(0)-разбора и указать, есть ли в ней конфликты.