Главная arrow Программирование С++ arrow Расширение Mini С++

Расширение Mini С++

Есть два основных направления, ведущих к улучшению и расширению возможностей интерпретатора Mini С++: добавление элементов языка С++ и вспомогательных функциональных возможностей. Некоторые из этих дополнений кратко обсуждаются в следующих разделах.
Добавление новых элементов С++
Есть две основных категории элементов языка, которые можно добавить в Mini С++. Первая включает дополнительные операторы перехода, такие как goto и continue, вы можете также добавить поддержку метки default оператора switch. Если вы усвоили, как Mini С++ интерпретирует другие операторы, у вас не должно возникнуть трудностей с реализацией перечисленных элементов. Если что-то не заработает с первого раза, попробуйте найти ошибку, отображая содержимое лексем по мере их обработки. Вторая категория элементов, которые могут быть добавлены, — это дополнительные типы данных. В Mini С++ уже включены "заготовки" для дополнительных типов данных. Так, например, структура var_type уже содержит поле, отведенное под тип переменной. Для того чтобы добавить встроенные типы данных (например, float, double и long), нужно просто увеличить длину поля для значения переменной до размера самого большого элемента данных, который вы планируете использовать.
Добавление классов представляет собой более сложный процесс. Во-первых, вам потребуется найти способ создания объектов. Для этого нужно выделить фрагмент памяти, достаточный для хранения данных-членов класса, и сохранить ссылку на него в специальном поле, которое придется добавить в var_type. Вам также будет нужно позаботиться о реализации уровней доступа public И private.
Поддержка указателей не требует больших усилий, чем поддержка любого другого типа данных. Однако вам придется включить поддержку операций с указателями в анализатор выражений. После того как вы добавите указатели, включить поддержку массивов будет просто. Память для массива нужно выделять динамически, с помощью операции new, а указатель на массив должен храниться в новом поле, которое для этого необходимо добавить В класс var_type.
Для обеспечения поддержки различных типов возвращаемых значений функций нужно использовать поле ret_type структуры func_type. Это поле определяет тип данных, возвращаемых функцией. В приведенной версии Mini С++ это поле описано, но никак не используется.
Еще одно простое усовершенствование состоит в реализации поддержки директивы препроцессора #include. Она может быть легко обработана на стадии предварительного просмотра.
И последнее предложение: если вам нравится экспериментировать с элементами языков программирования, не бойтесь добавлять расширения, не существующие в стандартном С++. Например, вы легко можете вставить цикл f oreacn.
 
Лицевой фасадная плитка под кирпич натуральный .