Применить динамический список шаблонов к аргументу

Мне нужно применить переменную последовательность шаблонов к аргументу. Последовательность шаблонов определяется во время выполнения на уровне контроллера, и эти шаблоны применяются только к одному аргументу, например:

arg:tpl1():tpl2():...:tplN()

В резюме мне нужно применить ряд шаблонов к аргументу, но эта последовательность вычисляется во время выполнения и на уровне контроллера.

Спасибо!!


person Diego Martinez    schedule 14.12.2012    source источник


Ответы (1)


Вам нужно одновременно перебирать имя шаблона и списки параметров. Из документации http://www.antlr.org/wiki/display/ST4/Templates вы найдете этот пример:

<names,phones:{ n,p | <n>: <p>}>

В вашем случае вам нужно что-то вроде

<names,values:{ n,v | <(n)(v)>}>

О, согласно вашему комментарию, чтобы применить список шаблонов к другому списку, я думаю, требуется вложенная карта.

<values:{v | <names:{n | <(n)(v)>}}>

Это применяет каждый шаблон, названный в именах, к каждому значению в значениях.

person Terence Parr    schedule 15.12.2012
comment
Моя проблема немного в другом. Мне нужно применить динамический список шаблонов к одному и тому же аргументу, суммируя выходные данные, полученные для шаблонов в списке myArg:tpl1():tpl2():...:tplN() Пример: у нас есть строка текста в моем аргументе textArg, теперь во время выполнения мы вычисляем список шаблонов для применить (полужирный и курсив), я поместил имя шаблона, выделенное жирным шрифтом и курсивом, в список, и я жду, пока StringTemplate должен дать результат, подобный textArg:bold():italic(). Мне нужно определить во время выполнения и на уровне контроллера список шаблонов, который нужно применить к моему аргументу. - person Diego Martinez; 17.12.2012
comment
Ссылка на ответ не работает (404), я полагаю, что это текущая ссылка на эту документацию: github.com/antlr/stringtemplate4/blob/master/doc/templates.md - person Kanmuri; 06.06.2016