Как передать один дополнительный параметр (не младший токен типа YYSTYPE
) в функцию yypush_parse()
?
Парсер действительно реентерабельный, но эта дополнительная переменная имеет решающее значение для безопасности потока приложения, в которое мне нужно интегрировать мой парсер (это расширение PHP, поэтому мы говорим о TSRM ).
Я не могу просто избавиться от этого параметра, потому что внутри кода действия я собираюсь вызывать функции, которые будут генерировать AST в доступной для пользователя форме.
Я пытался взломать YYPUSH_DECLS
, и это работает, поскольку объявление функции касается, НО несколько тысяч LOC'ов заканчиваются реализацией yypush_parse
, и я не вижу никакого способа перезаписать сигнатура функции, с которой начинается реализация yypush_parse
.
YYPARSE_PARAM
используется только тогда, когда анализатор не является принудительным (насколько я могу судить), но в моем случае мне НУЖНО, чтобы он был push из-за того, что я должен делать в цикле обработки после лексирования и до добавления нового токена в стек анализа.
Поэтому мне интересно, есть ли %directive
или что-то, что может помочь.
С другой стороны, я действительно считаю, что YYPARSE_PARAM
следует использовать настолько, насколько он определен, независимо от того, какой это синтаксический анализатор. Жаль, что это не так.