Jak zrobić program w c++ który może sam siebie edytować.

0

Witam ostatnio wpadłem na pomysł zrobienia programu w c++ który mógłby sam się edytować.
Trochę programowałem w c++ więc podstawy znam. Chodzi oto by np. za pomocom wpisania
jakiejś komendy np. nowy! w konsole, tworzył by się nowy if w kodzie, który by wypełniał się
w zależności od tego co wpisze dalej w konsoli.

3

Praktycznie wszystkie kompilatory C++ wspierają tylko tryb AOT (ahead of time) kompilacji, a więc docelowy kod źródłowy musi być kompletny przed zaczęciem kompilacji. W takim przypadku nie da się zrobić programu w C++, który by edytował swój kod w C++ tak by jednocześnie się to przekładało 1:1 na jego działanie. No chyba, że chcesz tworzyć osobny plik .cpp i jego kompilować osobnym przejściem.

0

A w innym języku nisz c++?

4

Możesz zawrzeć kompilator wraz z programem (jakiś libjit), albo interpreter jakiegoś języka, np. JS. Przy czym: co chcesz osiągnąć?

1

Zależy co chcesz osiągnąć. Zmienianie kodu w locie nie jest takie proste. Mainstreamowe kompilatory jak gcc czy clang, raczej na to nie pozwolą, gdyż strony z kodem w pamięci z są oznaczane jako tylko do odczytu.
Ale można dodać do binarki kompilator c++, skompilować wejście jako biblioteka współdzielona, a następnie załadować ją. Spodziewaj się jednak problemów z ABI c++, gdyż (tutaj mogę się mylić) musiałbyś zrezygnować z używania funkcji z biblioteki standardowej aby uniknąć problemów z interfejsem binarnym albo dostarczać biblioteki w wersji odpowiedniej dla hosta albo liczyć na to, że na hoście będzie kompilator lub przynajmniej biblioteki, które chciałbyś wykorzystać.
Trochę assemblera, trampoliny i longjump pewnie też będą niezbędne.

3

Zawsze da się w locie skompilować DLL/so i wywołać odpowiednią funkcję.

1 użytkowników online, w tym zalogowanych: 0, gości: 1