Может кто-нибудь объяснить это мне? В частности, разница между:
http://github.com/whymirror/greg и http://piumarta.com/software/peg/ p >
Первая является повторной версией более поздней версии.
Может кто-нибудь объяснить это мне? В частности, разница между:
http://github.com/whymirror/greg и http://piumarta.com/software/peg/ p >
Первая является повторной версией более поздней версии.
В своем простейшем синтаксическом анализаторе не используются глобальные переменные и, следовательно, могут одновременно иметь несколько экземпляров (не обязательно связанных с потоковой обработкой, но это основной случай, который я подозреваю).
В более сложных случаях использования, однако, вы можете иметь парсер, который анализирует, по сути, несколько языков в одном исходном документе. Рассмотрим JSP-парсер, например, который должен разбирать код Java и HTML в том же файле. Вместо того, чтобы сделать один огромный парсер, который охватывает оба языка (что-то, вероятно, очень непрактичное), вы можете сделать два парсера и переключиться между ними. Однако, если ваши парсеры используют глобальное переключение состояний между ними, это может быть проблематично. Парсер-ретранслятор позволяет легко переключаться между синтаксическими анализаторами либо в виде сопрограмм, либо в простом "парсере-анализах парсеров-A" для встроенного кода, а затем возвращается ".
Отредактировано для добавления:
Если вам нужна сильная синтаксическая разборка, взгляните на комбинаторы парсеров (например, Parsec), где каждое подвыражение в грамматике полностью является отдельным парсером. Вы создаете большой парсер, комбинируя множество маленьких.
Чтобы быть реентерабельной, компьютерная программа или Режим дня:
- Нельзя хранить статические (или глобальные) непостоянные данные.
- Нельзя возвращать адрес в статические (или глобальные) непостоянные данные.
- Должен работать только с данными, предоставленными ему вызывающим абонентом.
- Не следует полагаться на блокировки для ресурсов singleton.
Не обязательно связано с безопасностью потоков, но разбор нескольких грамматик в документе.