Я написал парсер, используя PLY, и он делает то, что мне нужно. Теперь я хотел бы проанализировать несколько файлов, используя класс парсера. Вместо того, чтобы создавать экземпляр класса парсера для каждого файла, я хотел бы повторно использовать тот же экземпляр класса для всех файлов (чтобы я мог накапливать некоторые результаты в классе парсеров).re-initializing PLY parser
Анализ одного файла может не завершиться хорошо, так что я хотел бы повторно инициализировать синтаксический анализатор перед подачей другого файла.
Каков правильный способ повторной инициализации парсера PLY? (? Или я не должен повторно использовать анализатор)
(Отказ от ответственности: я не использую PLY.) Вы можете получить больше ответов, если будете приводить примеры данных, которые вы хотите сохранить, и почему. Если у PLY _does_ есть безопасный метод повторного инициализации, я сомневаюсь, что он оставит _un_-re-initialized точные значения, которые вы хотите сохранить. ... В этом отношении, не лучше ли вам накапливать данные, которые вы хотите сохранить от каждого парсера в словаре, или, может быть, в одном словаре на каждый проанализированный файл? –
Я пишу парсер Verilog и обрабатывает несколько файлов Verilog. Некоторые из них могут содержать ошибки, так что синтаксический анализатор может останавливаться в смешном состоянии, когда файл анализируется. Я подумал, что неплохо было бы повторно использовать парсер, чтобы не было необходимости разрушать объект парсера и строить новый объект парсера. Кроме того, я могу продолжать анализировать результаты из нескольких входных файлов в классе. – user2756376
«Некоторые из них могут содержать ошибки, чтобы синтаксический анализатор мог остановиться в забавном состоянии», в сочетании с «Я могу продолжать анализировать результаты из нескольких входных файлов», похоже, что вы будете смешивать ошибки из первого типа файла с хорошими результатами В секунду. Но я здесь не в своем домене, поэтому я оставлю этот вопрос кому-то еще. Я предлагаю, однако, чтобы вы отредактировали детали из вашего комментария в свой вопрос --- они не будут замечены здесь. –