Расширение Little C

Содержание

Расширять возможности интерпретатора Little С можно в двух направлениях: добавлять в него новые средства языка С и дополнительные средства программирования. Эти усовершенсгвования кратко рассматриваются в следующих разделах.

Добавление новых средств в язык Little C


Существует две категории операторов С, которые можно включить в Little С. В первую категорию входят дополнительные выполняемые операторы С, такие как switch, goto, break и continue. Если предыдущий материал изучен достаточно тщательно, то их добавление в Little С не составит большого труда.

Во вторую категорию входит поддержка новых типов данных. В интерпретаторе Little С для этого есть некоторые «зацепки». Например, в структуре var_type есть поле для типов переменных. Для включения дополнительных базовых типов (например, float, double или long) нужно просто увеличить размер поля до размера наибольшего элемента.

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

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

Более трудная задача — добавление структур и объединений. Проще всего это сделать, используя malloc() для выделения объекту памяти, причем указатель на объект нужно сохранить в поле value структуры var_type. (Для обработки передачи структур и объединений в качестве параметров нужно будет написать специальную программу.)

Для поддержки различных типов возвращаемых функциями значений нужно использовать поле ret_type структуры func_type. Это поле определяет тип возвращаемых функцией данных. В текущей версии интерпретатора оно объявлено, но не используется.

Можно также добавить в Little С поддержку комментариев вида /. Это нетрудно сделать, изменив функцию get_token().

И наконец, в интерпретатор Little С несложно добавить средства, не входящие в состав языка С. Это особенно увлекательное упражнение — заставить интерпретатор делать то, что в языке не предусмотрено. Например, можно добавить конструкцию языка Pascal REPEAT-UNTIL, Если при этом возникают трудности, как средство отладки можно использовать вывод каждой лексемы в процессе ее обработки.

Создание дополнительных средств программирования


Кроме средств языка, в интерпретатор несложно добавить также новые средства программирования. Например, можно добавить средства трассировки, выводящие на экран в процессе выполнения программы каждую лексему отдельно. Еше можно добавить возможность вывода значений переменных при выполнении программы, а также, например, встроенный редактор, который позволит редактировать и выполнять программу без перехода в автономный редактор.