Bladeren bron

новый пост

kpmy 9 jaren geleden
bovenliggende
commit
99ddf1aa51
1 gewijzigde bestanden met toevoegingen van 22 en 0 verwijderingen
  1. 22 0
      _posts/2015-10-21-Застрял.md

+ 22 - 0
_posts/2015-10-21-Застрял.md

@@ -0,0 +1,22 @@
+---
+published: true
+layout: post
+---
+
+После первого прототипа дело o.t. застопорилось и неспроста.
+Я начал повторять шаги, по которым до меня прошло уже много людей и коллективов, а с коллективами тягаться смысла нет.
+Поэтому всякие плюшки типа аналога xpath или применения relaxng теперь кажутся неинтересными.
+
+Со встраиванием языков программирования тоже проблема. Получается, что нет возможности встроить языки в шаблонизатор на уровне библиотеки и необязательного компонента.
+Уже на уровне сканнера символов сталкиваемся с необходимостью двух различных обработчиков одного и того же символа, что само по себе лишает сканнер обероновской простоты.
+Возможно на этом этапе стоит оформить сканнер и парсер по-другому.
+
+Что тут можно предложить?
+
+* Первой на ум приходит мысль о модели производитель-потребитель. Сканнер становится нерасширяемым и монолитным и потребляет любой символ, даже тот, который ему незнаком. Минус очевиден, вся работа по осознанию семантики прочитанного становится задачей потребителя, что не очень хорошо с точки зрения разделения ответственности.
+
+* Второй способ довольно банален, монолитный парсер со сменными стратегиями разбора символов. Сканнер включает в себя сразу все возможные символы и предопределенные идентификаторы. Минус очевиден, возможные интерференции между синтаксисами языков внутри сканнера. Сложный компилятор с кучей дублирующегося по сути кода для разных режимов разбора, что почти не решается шаблонизацией или обобщением. Просто чуть разный, но однообразный код.
+
+* Третий способ полностью противоречит исходному желанию органично встроить исполняемый код в шаблон, мне придётся реализовать код в шаблонах как полностью отдельную сущность и разделять их с шаблоном уже на уровне текстового представления. Удобный, но антиконцептуальный способ.
+
+Одно понятно, задача нетривиальная и малой кровью переиспользования существующих компиляторов `leaf/lomo` как мне кажется нерешаема. Может быть, для начала стоит перевести на общие рельсы имеющиеся системы, что в целом равносильно их переписыванию.