[stringtemplate-interest] eval tree parse error <AST>:0:0: unexpected end of subtree

Kasper Hansen kbhdk1976 at gmail.com
Sat Feb 20 23:44:12 PST 2010


Hi all,

I'm trying ST out as a JSP replacement, but have some problems;

I load my StringTemplate;

StringTemplateGroup stringTemplateGroup = new
StringTemplateGroup("com.mentalobe.templates");
this.stringTemplate = stringTemplateGroup.getInstanceOf("articlelist");

Here are the templates;

articlelist.st:
$listfield.segments : { segmentInstance |

$segmentfield(segment=segmentInstance)$

}$

segmentfield.st:
$if (segment != null)$
<h3>$segment.name$</h3>
$else$
<h3>segment does not have a name</h3>
$endif$

When i run it, i get the following stacktrace;

action parse error in group com.mentalobe.templates line 0; template
context is [segmentfield]
line 1:4: unexpected token: segment
	at org.antlr.stringtemplate.language.ActionParser.templatesExpr(ActionParser.java:261)
	at org.antlr.stringtemplate.language.ActionParser.ifAtom(ActionParser.java:664)
	at org.antlr.stringtemplate.language.ActionParser.ifCondition(ActionParser.java:335)
	at org.antlr.stringtemplate.language.ActionParser.action(ActionParser.java:157)
	at org.antlr.stringtemplate.StringTemplate.parseAction(StringTemplate.java:876)
	at org.antlr.stringtemplate.language.TemplateParser.action(TemplateParser.java:173)
	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.StringTemplateGroup.defineTemplate(StringTemplateGroup.java:679)
	at org.antlr.stringtemplate.StringTemplateGroup.loadTemplate(StringTemplateGroup.java:553)
	at org.antlr.stringtemplate.StringTemplateGroup.loadTemplateFromBeneathRootDirOrCLASSPATH(StringTemplateGroup.java:579)
	at org.antlr.stringtemplate.StringTemplateGroup.lookupTemplate(StringTemplateGroup.java:480)
	at org.antlr.stringtemplate.StringTemplateGroup.getInstanceOf(StringTemplateGroup.java:392)
	at org.antlr.stringtemplate.StringTemplateGroup.getEmbeddedInstanceOf(StringTemplateGroup.java:436)
	at org.antlr.stringtemplate.language.ASTExpr.getTemplateInclude(ASTExpr.java:638)
	at org.antlr.stringtemplate.language.ActionEvaluator.templateInclude(ActionEvaluator.java:470)
	at org.antlr.stringtemplate.language.ActionEvaluator.expr(ActionEvaluator.java:142)
	at org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:84)
	at org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:149)
	at org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:705)
	at org.antlr.stringtemplate.language.ASTExpr.writeTemplate(ASTExpr.java:750)
	at org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:680)
	at org.antlr.stringtemplate.language.ASTExpr.writeIterableValue(ASTExpr.java:772)
	at org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:682)
	at org.antlr.stringtemplate.language.ASTExpr.writeAttribute(ASTExpr.java:660)
	at org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:86)
	at org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:149)
	at org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:705)
	at org.antlr.stringtemplate.StringTemplate.toString(StringTemplate.java:1670)
	at org.antlr.stringtemplate.StringTemplate.toString(StringTemplate.java:1661)
	at com.mentalobe.www.article.ArticleListAction.handle(ArticleListAction.java:37)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:100)
	at com.mentalobe.www.core.MentalobeServlet.handleEventType(MentalobeServlet.java:360)
	at com.mentalobe.www.core.MentalobeServlet.handleRequest(MentalobeServlet.java:108)
	at com.mentalobe.www.core.MentalobeServlet.doGet(MentalobeServlet.java:81)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:693)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)
	at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:51)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
	at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
	at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:121)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
	at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70)
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
	at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:352)
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
	at org.mortbay.jetty.Server.handle(Server.java:313)
	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:506)
	at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:830)
	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:396)
	at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
eval tree parse error
<AST>:0:0: unexpected end of subtree
	at org.antlr.stringtemplate.language.ActionEvaluator.ifCondition(ActionEvaluator.java:814)
	at org.antlr.stringtemplate.language.ConditionalExpr.write(ConditionalExpr.java:99)
	at org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:705)
	at org.antlr.stringtemplate.language.ASTExpr.writeTemplate(ASTExpr.java:750)
	at org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:680)
	at org.antlr.stringtemplate.language.ASTExpr.writeAttribute(ASTExpr.java:660)
	at org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:86)
	at org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:149)
	at org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:705)
	at org.antlr.stringtemplate.language.ASTExpr.writeTemplate(ASTExpr.java:750)
	at org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:680)
	at org.antlr.stringtemplate.language.ASTExpr.writeIterableValue(ASTExpr.java:772)
	at org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:682)
	at org.antlr.stringtemplate.language.ASTExpr.writeAttribute(ASTExpr.java:660)
	at org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:86)
	at org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:149)
	at org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:705)
	at org.antlr.stringtemplate.StringTemplate.toString(StringTemplate.java:1670)
	at org.antlr.stringtemplate.StringTemplate.toString(StringTemplate.java:1661)
	at com.mentalobe.www.article.ArticleListAction.handle(ArticleListAction.java:37)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:100)
	at com.mentalobe.www.core.MentalobeServlet.handleEventType(MentalobeServlet.java:360)
	at com.mentalobe.www.core.MentalobeServlet.handleRequest(MentalobeServlet.java:108)
	at com.mentalobe.www.core.MentalobeServlet.doGet(MentalobeServlet.java:81)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:693)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)
	at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:51)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
	at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
	at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:121)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
	at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70)
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
	at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:352)
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
	at org.mortbay.jetty.Server.handle(Server.java:313)
	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:506)
	at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:830)
	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:396)
	at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)

A little help, anyone ?

Cheers,

:-) Kasper


More information about the stringtemplate-interest mailing list