ANTLR 3 не поддерживает C ++; это утверждает
генерировать прямой C, но документы на
заставить его на самом деле работать вроде
путаницы.
Он генерирует C, и, кроме того, он работает с Visual Studio и C ++. Я знаю это, потому что я сделал это раньше и представил патч, чтобы заставить его работать с stdcall.
Память в нашем приложении очень важна
и даже крошечные утечки смертельны. я нуждаюсь
чтобы иметь возможность переопределить парсер
Распределитель памяти для использования наших пользовательских
malloc () или, по крайней мере, мне нужно
дать ему непрерывный бассейн из
который он тянет всю свою память (и
который я могу освободить в блоке
впоследствии). Я могу сэкономить около 200 КБ
для самого исполняемого файла парсера, но
какую динамическую кучу он выделяет в
парсинг должен быть освобожден впоследствии.
Среда выполнения antlr3c, которую я проверял в прошлый раз, не имела утечки памяти и использует описанную вами парадигму пула памяти. Однако у него есть один недостаток в API, который автор отказывается изменить, а именно: если вы запрашиваете строку узла, он будет каждый раз создавать новую копию, пока вы не освободите весь анализатор.
У меня нет комментариев относительно простоты использования пользовательского malloc, но в нем есть макрос для определения, какую функцию malloc использовать во всем проекте.
Что касается размера исполняемого файла, размер моей компиляции составлял около 100 КБ, включая небольшой интерпретатор.
Я предлагаю вам продолжать изучать ANTLR, потому что он все еще соответствует вашим требованиям, и вам, вероятно, придется пожертвовать немного больше времени, прежде чем он начнет работать на вас.