Почему компиляторы не возвращаются в начале? - PullRequest
0 голосов
/ 02 июля 2018

Я читаю некоторые вещи, связанные с yacc и lex, и некоторые другие реализации компилятора, кажется, что они все используют глобальное состояние и, следовательно, действительно небезопасно использовать многопоточные ситуации, поэтому их трудно внедрить в другие программы. Я знаю, что GNU Bison и Flex можно использовать для повторного входа, но почему они не включены по умолчанию?

1 Ответ

0 голосов
/ 02 июля 2018

Потому что, когда интерфейс для Lex и Yacc был определен много-много лет назад, использование глобальных переменных было гораздо более распространенным явлением. Reentrancy меняет интерфейс, и повторно входящие интерфейсы никогда не были формально стандартизированы (что, вероятно, так же хорошо, учитывая состояние игры). В то время многопоточность была не очень распространена, главным образом потому, что на типичном компьютере едва хватало ресурсов для одной компиляции (а иногда даже этого; для проходов компиляции также было довольно распространенным образом загружать исполняемые файлы).

Таким образом, по умолчанию остается не входящий, стандартизированный интерфейс. И, вероятно, так и останется, нравится нам это или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...