Новости

Отчет лабораторных в субботу 22 декабря (3 комментариев)

Добавил(а) Дмитриев Александр 11 месяца назад

Уважаемые студенты!

Отчет по лабораторным работам состоится в субботу 22 декабря с 12:00 в ауд. 902. Отчет будет проводится для всех групп, но в разные часы. Расписание отчета для групп:

  • 12:00 отчет для группы ИВТ-262
  • 13:30 отчет для группы ИВТ-260
  • 15:00 отчет для группы ИВТ-263
  • 16:30 отчет для группы ИВТ-261

Если в этот момент у вас будут другие пары (я видел, что у некоторых подгрупп должны быть пары по другим предметам), то можете подходить по мере освобождения с занятий.

Также большая просьба не приходить тем, кто ничего не сделал или взял чужой код без своих доработок или усовершенствований, чтобы просто посидеть на случай, вдруг халява! Или тех, кто не понимает, что делает каждая строка его кода и какие типы данных содержатся в тех или иных переменных. Вы только потеряете свое время и будете мешать студентам, которые будут пытаться сделать отчет.

Сокращения: Проглаба - часть программы транспайлера, соответствующая одной лабе (это либо лексер, либо парсер, либо генератор)

Для допуска к зачету по лабораторным работам необходимо выполнить следующие условия:

  1. У вас должен быть в наличии полностью работающий для вашего входного языка лексический анализатор. В нем должна быть обработка ошибок (определение неверных лексем), а также в выходном массиве лексем у каждой лексемы должны быть указаны строка и столбец её расположения во входном коде (наподобие того, как это сделано в VS Code в самом низу редактора). Просьба обогатить лексический анализатор своим дополнительным функционалом (например, функция, которая при каждом вызове будет возвращать только одну очередную лексему из входного кода, и т.д.), чтобы было видно, что вы не занимаетесь банальной копипастой. За попытку просто впихнуть копипасту будут очень сильно резаться баллы, поэтому подумайте над кастомизацией и обогащением функционала программы.
  2. Для каждой лаборатной работы должен быть сделан в печатном виде протокол. Т.е. всего 3 протокола. Каждый протокол должен включать в себя краткое текстовое описание задачи (что должна делать проглаба), описание лексем входного языка + таблица лексем в формате JSON (проглаба 1), описание грамматики входного языка с примерами + грамматика в формате JSON (проглаба 2), описание правил генерации кода на JS для своего входного языка (проглаба 3), т.е. необходимо каждому правилу грамматики на входном языке сопоставить правило на JS и оформить это также в виде JSON. В каждый протокол необходимо включить краткий алгоритм каждой из проглаб, примеры, того, что поступает на вход каждой лабе, а что получается на выходе у проглабы. По возможности включайте в протокол код проглабы.
  3. На отчете вы должны быстро рассказать, как работает ваш код, ответить на вопросы по форматам данных, которые используются в вашем коде.
  4. При отсутствии самостоятельно сделанного синтаксического анализатора вы будете делать дополнительные задания. А именно:
    • Вам будет дана задача на знание регулярных выражений (если не делали ранее). Необходимо будет написать код на JS, где с помощью регулярных выражений вы будете решать поставленную перед вами задачу обработки текста. Про регулярки буду спрашивать довольно подробно. Почитать можно здесь
    • В процессе решения задачи и отчета первой лабы вам будут задаваться вопросы про основы языка JS и программирования в целом. В частности, работа с массивами, строками, регулярками, создание функций, колбэков, объектов, циклов, условий, способы создания объектов. Все эти моменты были в вашем коде, поэтому пожалуйста подготовьтесь.
    • Вам необходимо будет в личной со мной беседе кратко описать как работает LL-алгоритм и нарисовать это на листке бумаги. Вот описание алгоритма: LL-анализатор. Если не поняли LL, то можно сделать описание обычного рекурсивного алгоритма (про рекурсивный спуск по дереву рассказывал на одном из занятий) для синтаксического анализатора (с примерами входного кода и генерируемого дерева на выходе).

Возникающие вопросы прошу задавать на форуме, а не через социальные сети. Успехов в подготовке!

P.S. Вся, необходимая для понимания информация, что делать в течение семестра, в какой последовательности и как делать (с описанием алгоритмов), была доступна на этом сайте в течение всего семестра. Кроме того, мы дублировали эту информацию на самих занятиях, в том числе написав значительную часть кода за вас. В течение всего семестра была возможность задавать вопросы, если что-то было непонятно (чем некоторые добросовестно пользовались). Поэтому отговорки, что ничего не понятно, не принимаются. Для минимального допуска вам необходимо было написать смехотворно мало кода и понять суть работы всего навсего одного алгоритма (рекурсивного).

Задание по Основам трансляции

Добавил(а) Дмитриев Александр около 1 года назад

Уважаемые студенты!

Просьба к старостам (или другим ответственным лицам) вписать фамилии студентов своих групп в список с заданиями

Т.к. языков не так много, как хотелось бы, прошу старост вносить в основной список заданий фамилии только тех студентов, которые реально участвуют в учебном процессе. Тех студентов, которые не планируют ходить на занятия или уходят в академ или по какой-нибудь другой причине не планируют сдавать сессию, прошу вносить в дополнительный список ниже основного списка (самый низ списка в секцию "Дополнительные студенты"). Если кто-то из этого списка студентов решит затем все-таки делать задание, то просьба зарегистрироваться на сайте и написать о своем желании на Форуме.

Старосте 263 группы, если все-таки тем на всех не хватит, то просто добавьте фамилии сразу после основного списка. Потом я добавлю недостающие темы.

Все вопросы по заданиям задавать на Форуме

Сдача долгов по Основам трансляции (6 комментариев)

Добавил(а) Дмитриев Александр больше 1 года назад

Уважаемые студенты!

Сдача долгов по Основам трансляции состоится в пятницу 2 марта ориентировочно с 12:00 на 14 этаже. Условия старые. Подробно описаны здесь. После допуска можете уже с чистой совестью сдавать зачет Розалиеву В.Л.

Отчет лабораторных в среду 20 декабря (5 комментариев)

Добавил(а) Дмитриев Александр почти 2 года назад

Уважаемые студенты!

Отчет по лабораторным работам состоится в среду 20 декабря с 12:00 на 14 этаже. Отчет будет проводится для всех групп, но в разные часы. Расписание отчета для групп:

  • 12:00 отчет для группы ИВТ-263
  • 13:00 отчет для группы ИВТ-261
  • 14:00 отчет для группы ИВТ-262
  • 15:00 отчет для группы ИВТ-260

Если в этот момент у вас будут другие пары (я видел, что у некоторых подгрупп должны быть пары по другим предметам), то можете подходить по мере освобождения с занятий.

Также большая просьба не приходить тем, кто ничего не сделал или взял чужой код без своих доработок или усовершенствований, чтобы просто посидеть на случай, вдруг халява! Вы только потеряете свое время и будете мешать студентам, которые будут пытаться сделать отчет.

Сокращения: Проглаба - часть программы транспайлера, соответствующая одной лабе (это либо лексер, либо парсер, либо генератор)

Для допуска к зачету по лабораторным работам необходимо выполнить следующие условия:

  1. У вас должен быть в наличии полностью работающий для вашего входного языка лексический анализатор. В нем должна быть обработка ошибок (определение неверных лексем), а также в выходном массиве лексем у каждой лексемы должны быть указаны строка и столбец её расположения во входном коде (наподобие того, как это сделано в VS Code в самом низу редактора). Просьба обогатить лексический анализатор своим дополнительным функционалом (например, функция, которая при каждом вызове будет возвращать только одну очередную лексему из входного кода, и т.д.), чтобы было видно, что вы не занимаетесь банальной копипастой. За попытку просто впихнуть копипасту будут очень сильно резаться баллы, поэтому подумайте над кастомизацией и обогащением функционала программы.
  2. Необходимо, как минимум, сделать прототип синтаксического анализатора. Для этого в шаблоне транспайлера вы создаете новый файл parser.js, помещаете на него зависимость в файл gulpfile.js, создаете файл для грамматики grammar.json, грамматику подключаете в transpiler.core.js, а файл parser.js вы через namespace шаблон (оборачиваете весь код в функцию как в lexer.js) подключаете к остальному приложению. Внутри parser.js крайне желательно написать простую реализацию LL-парсера. Там у вас должен получится несложный перебор 3-х массивов (массив лексем, таблица анализатора и стэк). Функцию first можно не писать.
  3. Весь код сделанного транслятора (как минимум с работающим лексером и прототипом парсера) должен быть залит в репозиторий вашего проекта на сайте. Читаем Предварительные работы и Разработка шаблона проекта транспайлера для этого. Код в репозиторий должен быть залит не позднее 14:00 19 декабря. Залитый в более поздний срок код не будет проверяться и вы не будете допущены к отчету лаб. В описании своих проектов просьба перечислить, что было сделано в проекте, чтобы я не проверял пустые проекты. Сделать описание проекта можно в меню проекта: (Настройки > Информация > Описание)
  4. Для каждой лаборатной работы должен быть сделан в печатном виде протокол. Т.е. всего 3 протокола. Каждый протокол должен включать в себя краткое текстовое описание задачи (что должна делать проглаба), описание лексем входного языка + таблица лексем в формате JSON (проглаба 1), описание грамматики входного языка с примерами + грамматика в формате JSON (проглаба 2), описание правил генерации кода на JS для своего входного языка (проглаба 3), т.е. необходимо каждому правилу грамматики на входном языке сопоставить правило на JS и оформить это также в виде JSON. В каждый протокол необходимо включить краткий алгоритм каждой из проглаб, примеры, того, что поступает на вход каждой лабе, а что получается на выходе у проглабы. По возможности включайте в протокол код проглабы.
  5. На отчете вы должны быстро рассказать, как работает ваш код, ответить на вопросы по форматам данных, которые используются в вашем коде.
  6. При отсутствии самостоятельно сделанного синтаксического анализатора вы будете делать дополнительные задания. А именно:
    • Вам будет дана задача на знание регулярных выражений. Необходимо будет написать код на JS, где с помощью регулярных выражений вы будете решать поставленную перед вами задачу обработки текста.
    • В процессе решения задачи вам будут задаваться вопросы про основы языка JS. В частности, работа с массивами, строками, регулярками, создание функций, колбэков, объектов, циклов, условий, работа с событиями в JS, контекст выполнения функций, конструкторы, способы создания объектов. Все эти моменты были в вашем коде, поэтому пожалуйста подготовьтесь.
    • Вам необходимо будет в личной со мной беседе кратко описать как работает LL-алгоритм и нарисовать это на листке бумаги. Вот описание алгоритма: LL-анализатор

Возникающие вопросы прошу задавать на форуме, а не через социальные сети. Успехов в подготовке!

Лекции в субботу

Добавил(а) Дмитриев Александр почти 2 года назад

Уважаемые студенты!

Лекции начнутся в субботу в 10:20. Продлятся в течение 3-х пар. На одной из пар будет контрольная работа. Просьба подготовиться.

Кроме того, все, кто хотят отчитать лексер (или его наработки) без потери баллов просьба подходить завтра с 8:30 до 13:20 в аудиторию 1402-1. Эта оценка также пойдет в ваш рейтинг по второй неделе.

Опубликован шаблон транспайлера (1 комментарий)

Добавил(а) Дмитриев Александр около 2 лет назад

Уважаемые студенты!

Вот и на вашей улице праздник! Я наконец закончил первую версию шаблона кода, на основе которого вы будете писать свой транспайлер. Почитать про него и скачать его можно здесь: Разработка шаблона проекта транспайлера. Также эту статью вы сможете найти на главной странице сайта. Проект качается, кстати, через Git. Отличный повод его немного изучить. Если тяжело и хочется немного понять работу NodeJS и JS в целом, то вам сюда: Основы работы с NodeJS. Не работает Git и ничего не качается? Тогда пишем сюда

Теперь вы можете с радостью начать исследовать данный проект и писать лексический анализатор согласно этим рекомендациям: Лексический анализатор. Разбирайте данный проект вместе с аспирантами на своих занятиях. Вопросы по коду, естественно, отправлять на форум. На ближайших занятиях (с субботы) у вас должен быть готов рабочий прототип лексического анализатора, а через две недели полностью рабочий код лексического анализатора, который вы должны залить в репозиторий со своим проектом. Кроме того, тогда же состоится отчет первой лабы, за пропуск которого вы сильно потеряете баллы.

Необходимо внести правки в индивидуальные задания

Добавил(а) Дмитриев Александр около 2 лет назад

Уважаемые студенты!

Просьба к старостам (или другим ответственным лицам) вписать фамилии студентов своих групп в список с заданиями

Т.к. языков не так много, как хотелось бы, прошу старост перенести пока что из списка заданий фамилии студентов, которые не планируют ходить на занятия или уходят в академ или по какой-нибудь другой причине не планируют сдавать сессию. Перенести их фамилии надо в самый низ списка в секцию "Дополнительные студенты" (группу и ФИО надо заменить). Сами названия оригинальных тем трогать не надо. Просто вырезаете фамилию. Тему потом передам другому студенту. Если кто-то из этого списка студентов решит затем все-таки делать задание, то просьба зарегистрироваться на сайте и написать о своем желании на Форуме

Старосте 263 группы, если не хватит существующих тем, то вписывайте всех студентов в список полностью (тех кому не хватило вписывайте в дополнительные темы). Будем затем распределять между ними освободившиеся или новые темы.

Все вопросы по заданиям задавать на Форуме

Занятие по Системному анализу несколько переносится

Добавил(а) Дмитриев Александр больше 2 лет назад

Уважаемые студенты!

Хотел бы сообщить, что я смогу подойти на пары по Системному анализу 18 марта только к 11-50. Просьба сообщить всем, чтобы желающие могли подойти к этому времени.

Долги по Основам трансляции (3 комментариев)

Добавил(а) Дмитриев Александр почти 3 года назад

Уважаемые студенты!

Не забываем, что наступил новый семестр и сезон сдачи долгов открыт. Долги по лабам с огромным удовольствием буду принимать пока что в перерывах между и после занятий по Системному анализу (см. расписание). Так что подходите и сдавайте, кто что сделал по готовности. Кроме того, вы можете задавать возникающие вопросы по ходу выполнения лаб на форуме в теме Общие вопросы по курсу Основы трансляции. По мере накопления вопросов можно будет организовать дополнительную консультацию по лабам. Если у кого до сих пор нет методички по LL анализатору, то с ней можно ознакомиться здесь - LL-анализатор. Еще раз просьба внимательно ознакомиться со всем разделом Wiki, прежде чем заявлять, что ничего не понятно. Элементарно могу спросить на отчете по содержимому раздела Wiki, чтобы убедиться, читали ли вы его вообще. Дата централизованной сдачи долгов будет объявлена позднее.

Краткие требования для минимального отчета (аналогичные тем, что были ранее):
1. Наличие самостоятельно сделанного и полностью рабочего лексера с примерами кода на входном языке (если его уже отчитывали ранее, то это большой плюс)
2. Написанная грамматика для входного языка в формате БНФ и отдельно в формате JSON для вашего кода
3. Наработки синтаксического анализатора (желательно реализованная функция FIRST)
4. Полное понимание работы LL парсера и алгоритма построения таблицы предсказывающего анализатора (согласно методичке)
5. Нарисованный в виде блок-схемы алгоритм вашего синтаксического анализатора (он пойдет у вас также в курсач)
6. Залитый в репозиторий своего проекта выполненный код
7. Желательно понимание базовых конструкций языка JavaScript - регулярные выражения, объекты, массивы, замыкания, контекст вызова, конструкторы, прототипы. Глубокое понимание основ JS поможет сильно поднять итоговый балл по лабам. Для выполнения лаб знания по JavaScript требуются не намного отличающиеся от ваших знаний C++. Понимание функций, циклов, условий, работа с массивами и объектами в обоих языках схоже. Даже синтаксис сильно похож. Так что "отмазы", что JS совсем не понятен, не принимаются.

Два замечания:
1. Могу дать задачу написать функцию для какого-нибудь заковыристого регулярного выражения. Например, проверка правильности ввода телефонного номера.
2. При пустом репозитории баллы за лабы сильно снижаются.

Отчет лаб по ОТ и зачет 24 декабря

Добавил(а) Дмитриев Александр почти 3 года назад

Уважаемые студенты!

Отчет оставшихся лаб по основам трансляции состоится в субботу 24 декабря 10-30 примерно в аудитории 1402-3 (надеюсь будет свободна). У кого будет проходить параллельно отчет по другим предметам, можете подходить по мере возможности. Зачет начнется с 13-00. Соответственно, лабораторных работ не будет.

Краткие требования для минимального отчета (аналогичные тем, что были ранее):
1. Наличие самостоятельно сделанного и полностью рабочего лексера с примерами кода на входном языке
2. Написанная грамматика для входного языка в формате БНФ и отдельно в формате JSON для вашего кода
3. Наработки синтаксического анализатора (желательно реализованная функция FIRST)
4. Полное понимание работы LL парсера и алгоритма построения таблицы предсказывающего анализатора
5. Нарисованный в виде блок-схемы алгоритм вашего синтаксического анализатора (он пойдет у вас также в курсач)
6. Залитый в репозиторий своего проекта выполненный код
7. Понимание базовых конструкций языка JavaScript - регулярные выражения, объекты, массивы, замыкания, контекст вызова, конструкторы, прототипы. Глубокое понимание основ JS поможет сильно поднять итоговый балл по лабам.

Два замечания:
1. Могу дать задачу написать функцию для какого-нибудь заковыристого регулярного выражения. Например, проверка правильности ввода телефонного номера. Будут также оцениваться ваши способности к изыскам JS.
2. При пустом репозитории баллы за лабы обнуляются.

1 2 3 4 (1-10/33)

Экспортировать в Atom

Добавить изображение из буфера обмена (Максимальный размер: 20 МБ)