flex + бизон в расширении php - PullRequest
0 голосов
/ 25 марта 2012

Я создал небольшой парсер в c, используя flex и bison. Синтаксический анализатор записывает результат в некоторые глобальные переменные, а вызывающая функция читает его оттуда.

Я пытаюсь упаковать свой парсер как расширение php. Из того, что я понимаю из документации php, истинные глобальные переменные не рекомендуются, потому что они не ориентированы на многопотоковое исполнение, и вместо этого я должен использовать глобальные переменные модуля.

Чтобы использовать глобальные переменные модуля, вы должны передать функцию TSRMLS_DC в качестве последнего аргумента.

Чтобы вы знали, могу ли я изменить yyparse, чтобы принимать TSRMLS_DC в качестве аргумента. Или есть другой способ доступа к глобальной переменной?

1 Ответ

2 голосов
/ 25 марта 2012

Я бы не использовал глобальные переменные, но использовал бы более современный генератор синтаксических анализаторов, который также является реентерабельным.Посмотрите, например, как я это сделал для мета-расширения (я использую слегка измененный лимон и re2c).

...