Парсерный оверкилл?
Внезапно понадобилось сделать парсер строк с грамматикой подобного вида:
ИмяКласса | ИмяКласса(Параметр0,...)
Можно было бы не вдумываясь, склепать что-нибудь типа "найти скобки, до скобок - имя класса, внутри скобок разделить по запятым".
Но мне домашний паук из розетки приказал это сделать на генераторах парсеров, в частности fslex/fsyacc, что заняло немного больше времени, но как минимум, я теперь смогу при необходимости нормально менять грамматику или писать новые парсеры, разобравшись на простом примере.
Проблема в следующем: не является ли использованиевуду-знаний из драгонбука правильных методик оверкиллом? А то уже не первый раз на работе возникают споры на тему "почему нужно делать правильно и долго, если можно сделать быстро и, с некоторыми ограничениями, будет работать".
ИмяКласса | ИмяКласса(Параметр0,...)
Можно было бы не вдумываясь, склепать что-нибудь типа "найти скобки, до скобок - имя класса, внутри скобок разделить по запятым".
Но мне домашний паук из розетки приказал это сделать на генераторах парсеров, в частности fslex/fsyacc, что заняло немного больше времени, но как минимум, я теперь смогу при необходимости нормально менять грамматику или писать новые парсеры, разобравшись на простом примере.
Проблема в следующем: не является ли использование
no subject
А то всякое бывает, от раздутия дистрибутива до maintenance nightmares...
no subject
Если же делать парсер на одном из рабочих языков проекта, то можно использовать в описании особые паттерны и комбинаторы (начиная с sepBy), специфичные для рассматриваемых грамматик, а также выдавать пользователю более вменяемый фидбэк при отклонении от них. Размер кода при этом может оказаться меньше, чем то, чем потом приходится обкручивать результаты *yacc.
(no subject)
no subject
(no subject)
(no subject)
(no subject)
no subject
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
no subject
no subject
Скилл проджектляйтера, тимлида и прочих архитектуреров как раз и заключается в умении ппавильно расставить весовые коэффициенты в компонентах этой троицы применительно к конкретной задаче, набору доступных ресурсов и прогнозируемому спросу. В общем виде, разумеется, решения нет.
Что касается пауков, то все ок, пока их не начинаешь путать с тараканами.
no subject
если они не знают про парсер-комбинаторы зато джедаи в регэкспах - то вас нужно изолировать от общества их и дать им работу работать
no subject
no subject
no subject
Если моё мнение интересует, то - является. Более того, Ваш вопрос надо переформулировать по-другому - является ли разумным использование формата, для парсинга которого нужны правильные методики.