Использование $ в качестве разделителя в StringTemplate из переписывающих грамматик ANTRL - PullRequest
2 голосов
/ 04 февраля 2010

Я пытаюсь написать грамматику ANTLR3, которая генерирует вывод HTML с использованием StringTemplate. Чтобы избежать экранирования всех тегов HTML в правилах шаблона (например, \<p\><variable>\</p\>), я бы предпочел использовать доллар в качестве разделителя для StringTemplate (например, <p>$variable$</p>).

Хотя последний, по-видимому, является значением по умолчанию, когда StringTemplate используется сам по себе, код синтаксического анализатора, генерируемый ANTRL, всегда использует AngleBracketTemplateLexer при инициализации StringTemplate.

Как я могу заставить ANTLR генерировать код, используя DefaultTemplateLexer (т.е. вариант, в котором в качестве разделителя используется доллар)?

1 Ответ

3 голосов
/ 11 февраля 2010

Попробуйте установить DefaultTemplateLexer.class в StringTemplateGroup следующим образом:

StringTemplateGroup group = new StringTemplateGroup(reader, 
                                                    DefaultTemplateLexer.class);
...