Альтернативы шаблону посетителя с лучшим возвратом - PullRequest
0 голосов
/ 04 мая 2018

Я следовал учебному пособию по LLVM. На этапе генерации кода они просто использовали виртуальные функции для реализации функций Codegen. Но они сказали, что было бы полезно что-то вроде шаблона посетителя - отделить объекты выражения от всех алгоритмов, которые будут на них выполняться.

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

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

Я не могу придумать хороший способ сделать это. Кто-нибудь может сказать мне, на какие образцы я должен смотреть? Спасибо.

...