291

Домашнее задание: напишите простой парсер кода С на С

This entry was posted in Личный Блог. Bookmark the permalink.

4 Responses to 291

  1. 0x00000000 says:

    Хорошее задание. Под парсером понимается только разбор грамматики до уровня “тут вызов функции, а тут объявление массива из 10 элементов”?

  2. trailmax says:

    типа того.
    Парсер должен проглотить подобное:

    int a, x;
    real b, c, d;
    a:=x+a;
    b:=c*b-d;

    Разрешены только действия с одним типом переменных, т.е. к int прибавлять только инт и ничего больше.
    Пока ничего не считаем. Проверям типы и строим таблицу -)
    Для всех этих чудес надо пользоваться тулзами lex && yacc

  3. 0x00000000 says:

    Забавнее было бы написать подобный парсер для сипипи с поддержной классов, имеющих перегруженные операторы “+”, “-“, “/” и “*”, причём чтоб перегрузы были отдельно объявлены для реалов и интегеров, причём чтоб если “+” объяевлен для реала, чтоб было совсем не факт, что он объявлен и для интегера. Во меня несёт -)

  4. trailmax says:

    Несет тебя не в ту степь совсем -)
    Знаешь такую штуку, как context free grammar и yacc?? вот последнее слово работает для создания первого, но только на C без плюсиков
    Да и вообще – это домашнее задание было, а не дипломная работа -)

Leave a Reply