Lex и Yacc без динамического выделения памяти

Я занимаюсь разработкой программного обеспечения для работы во встроенной среде, где использование динамической памяти запрещено. Lex и Yacc хорошо подходят для этого приложения.

Можно ли настроить Lex и Yacc так, чтобы они вообще не использовали динамическое выделение памяти?

Можно ли настроить Lex и Yacc для использования предопределенного блока памяти и, таким образом, ограничить использование динамической памяти этим предопределенным пространством?

Могу ли я ограничить использование динамической памяти только инициализацией программы (т. е. при первом запуске программы)?

изменить: В ответ на TonyK я хочу, чтобы синтаксический анализатор не использовал динамическую память.

Спасибо


person Chris G    schedule 10.01.2011    source источник
comment
Рассматривали ли вы ссылку в своей собственной реализации malloc?   -  person finnw    schedule 10.01.2011


Ответы (3)


arrow_upward
2
arrow_downward

Конечно, сможете, если сможете самостоятельно скомпилировать Lex и Yacc. Вам просто нужно реализовать свои собственные malloc и free и связать их. (Предполагая, что Lex и Yacc — это чистый C, что, я думаю, так и есть.)

Изменить Я неправильно понял еще один вопрос? Вы хотите, чтобы сами Lex и Yacc использовали ограниченный объем памяти, или вы хотите, чтобы они генерировали синтаксические анализаторы, использующие ограниченный объем памяти?

person TonyK    schedule 10.01.2011
comment
Я хочу, чтобы парсер не использовал динамическую память. - person ; 13.01.2011

arrow_upward
0
arrow_downward

Не уверен, что вы можете это сделать - если C, которые генерируют эти инструменты, хотят выполнять динамическое распределение, вам будет трудно их остановить. Возможно, лучше всего было бы создать собственную систему распределения, используя зарезервированную память, которую нужно разрешить.

person trojanfoe    schedule 10.01.2011

arrow_upward
0
arrow_downward

Вы можете использовать noyyalloc, noyyfree и noyyrealloc, а затем реализовать их самостоятельно.

person Martin    schedule 28.05.2019
comment
Это не решает проблему. OP запрещено использовать динамическое выделение памяти. Реализация собственного динамического выделения памяти не в духе правила. - person fuz; 12.09.2019