BMax :
1) Да.
2) Да.
3) Да.
4) Да.
оговорка №1 : Препроцессор БМакса не позволяет обьявлять свои лексемы, решение проблеммы : Написать свой препроцессор.
оговорка №2 : Смотря что ты имеешь ввиду по словом "виртуальный". В понятии БМакса следующий код :
Type TAbstract Abstract
Function Load(path:String) Abstract
End Type
Type TImplement Extends TAbstract
Function Load(path:String)
...
End Function
End Type
То тут в классе TAbstract функция Load(path:String) - является виртуальной.
B3D :
1) Нет. Пиши свой препроцессор.
2) Нет.
3) Нет.
4) Нет. Да, если юзать сторонние либы.