Я использовал ANTLR StringTemplate для проекта ASP.NET MVC. Однако я расширил грамматику StringTemplate (template.g) для распознавания «%» (aspx.template.g) в качестве разделителей. Вы можете найти эти файлы, если загрузите версию StringTemplate.net. Я сгенерировал соответствующие файлы: AspxTemplateLexer.cs, AspxTemplateParser.cs, AspxTemplateParserTokenTypes.cs и AspxTemplateParserTokenTypes.txt.
Кроме того, я изменил StringTemplateLoader.cs для распознавания расширений .aspx и .ascx, которые распознает Visual Studio. Таким образом, я не застреваю с расширением .st, и клиенты не знают разницы.
В любом случае, после перестроения StringTemplate у меня есть поведение, которое я хочу. Что мне нравится в StringTemplate, так это то, что он НЕ позволяет внедрить ЛЮБОЙ код в шаблон. Похоже, что Spark, как шаблон ASP / MVC по умолчанию, разрешает код, что делает шаблоны менее переносимыми.
Я бы предпочел использовать "<%" и "%>" в качестве разделителей, но, к сожалению, грамматику ANTLR кажется несколько сложной и хрупкой для изменения, если кто-то другой не сделал этого. С другой стороны, у StringTemplate есть отличное сообщество поддержки и отличный подход к разделению - в этом суть MVC.