StringTemplate escape back slash not working as expected

Viewed 11

Assume

owner=owner
name=name

I expect StringTemplate

<pre>$owner$ touch \\$name$</pre><br>

to generate

<pre>owner touch \name</pre><br>

But it's giving out an error

Can't parse chunk: </pre><br>
line 1:1: unexpected char: '<'
    at org.antlr.stringtemplate.language.ActionLexer.nextToken(ActionLexer.java:220)
    at antlr.TokenBuffer.fill(TokenBuffer.java:69)
    at antlr.TokenBuffer.LA(TokenBuffer.java:80)
    at antlr.LLkParser.LA(LLkParser.java:52)
    at org.antlr.stringtemplate.language.ActionParser.action(ActionParser.java:111)
    at org.antlr.stringtemplate.StringTemplate.parseAction(StringTemplate.java:876)
    at org.antlr.stringtemplate.language.TemplateParser.action(TemplateParser.java:162)
    at org.antlr.stringtemplate.language.TemplateParser.template(TemplateParser.java:127)
    at org.antlr.stringtemplate.StringTemplate.breakTemplateIntoChunks(StringTemplate.java:850)
    at org.antlr.stringtemplate.StringTemplate.setTemplate(StringTemplate.java:441)
    at org.antlr.stringtemplate.StringTemplate.<init>(StringTemplate.java:308)
    at org.antlr.stringtemplate.StringTemplate.<init>(StringTemplate.java:293)

If I add a space between \\ and $, it works as expected.

<pre>$owner touch \\ $name</pre><br>

will generate

<pre>owner touch \ name</pre><br>

It appears that it interprets \\$ as escaping \$ instead of \\

StringTemplate java 3.2.1

Any idea how to write the correct StringTemplate? Is this a bug?

0 Answers
Related