tapestry-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Robert Zeigler (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (TAP5-1620) Tml parsing expression error
Date Tue, 30 Aug 2011 19:09:38 GMT

    [ https://issues.apache.org/jira/browse/TAP5-1620?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13094005#comment-13094005
] 

Robert Zeigler commented on TAP5-1620:
--------------------------------------

So... if you use a reluctant search, then ${{'key': 'value'}} fails.  If you use a greedy
search, you can't use expansions in a js function because:

function myfunc() {
  alert("${value}");
}

Will match ${value}");}  and I don't see any way around that uses regular expressions. I could
limit }, but that's just going to reproduce the reluctant behavior.

I see 2 solutions:
  1) Rewrite the expansion parser to implement brace counting so that we actually end the
expansion at the correct brace.
  2) Rework map support to use a character other than {} to delineate maps.  We might be able
to override the array syntax so that ['a','b','c'] creates an array, and ['a': 'b', 'c': 'd']
creates a map.

I'm leaning toward option #1 at the moment.  Even if I implement #2, it still means that someone
using a literal } in an expression (contrived example: ${['a','}']} is going to cause grief;
of course, that example will cause grief for brace pairing, too...).  I'd rather see smarter
processing of templates to find the "right" match for the close of an expression.

> Tml parsing expression error
> ----------------------------
>
>                 Key: TAP5-1620
>                 URL: https://issues.apache.org/jira/browse/TAP5-1620
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: tapestry-core
>    Affects Versions: 5.3
>            Reporter: Denis Stepanov
>            Assignee: Robert Zeigler
>
> <script>
> 				jQuery(function(){	
> 					registerAutorefresh(${refresh});
> 				});
> 			</script>
> Caused by: java.lang.RuntimeException: Error parsing property expression 'refresh});':
Unable to parse input at character position 10.
> 	at org.apache.tapestry5.internal.services.PropertyConduitSourceImpl.parse(PropertyConduitSourceImpl.java:1441)
~[tapestry-core-5.3-alpha-13.jar:na]
> 	at org.apache.tapestry5.internal.services.PropertyConduitSourceImpl.build(PropertyConduitSourceImpl.java:1309)
~[tapestry-core-5.3-alpha-13.jar:na]
> 	at org.apache.tapestry5.internal.services.PropertyConduitSourceImpl.create(PropertyConduitSourceImpl.java:1274)
~[tapestry-core-5.3-alpha-13.jar:na]
> 	at $PropertyConduitSource_123d98bd5e9eaa20.create(Unknown Source) ~[na:na]
> 	at org.apache.tapestry5.internal.bindings.PropBindingFactory.newBinding(PropBindingFactory.java:49)
~[tapestry-core-5.3-alpha-13.jar:na]
> 	at $BindingFactory_123d98bd5e9eaa21.newBinding(Unknown Source) ~[na:na]
> 	at $BindingFactory_123d98bd5e9eaa18.newBinding(Unknown Source) ~[na:na]
> 	at org.apache.tapestry5.internal.services.BindingSourceImpl.newBinding(BindingSourceImpl.java:78)
~[tapestry-core-5.3-alpha-13.jar:na]
> 	... 94 common frames omitted
> Caused by: java.lang.RuntimeException: Unable to parse input at character position 10
> 	at org.apache.tapestry5.internal.antlr.BaseLexer.reportError(BaseLexer.java:50) ~[tapestry-core-5.3-alpha-13.jar:na]
> 	at org.antlr.runtime.Lexer.nextToken(Lexer.java:94) ~[antlr.jar:na]
> 	at org.antlr.runtime.CommonTokenStream.fillBuffer(CommonTokenStream.java:119) ~[antlr.jar:na]
> 	at org.antlr.runtime.CommonTokenStream.LT(CommonTokenStream.java:238) ~[antlr.jar:na]
> 	at org.apache.tapestry5.internal.antlr.PropertyExpressionParser.start(PropertyExpressionParser.java:98)
~[tapestry-core-5.3-alpha-13.jar:na]
> 	at org.apache.tapestry5.internal.services.PropertyConduitSourceImpl.parse(PropertyConduitSourceImpl.java:1437)
~[tapestry-core-5.3-alpha-13.jar:na]
> 	... 101 common frames omitted
> Caused by: org.antlr.runtime.NoViableAltException: null
> 	at org.antlr.runtime.DFA.noViableAlt(DFA.java:158) ~[antlr.jar:na]
> 	at org.antlr.runtime.DFA.predict(DFA.java:116) ~[antlr.jar:na]
> 	at org.apache.tapestry5.internal.antlr.PropertyExpressionLexer.mTokens(PropertyExpressionLexer.java:1273)
~[tapestry-core-5.3-alpha-13.jar:na]
> 	at org.antlr.runtime.Lexer.nextToken(Lexer.java:84) ~[antlr.jar:na]
> 	... 105 common frames omitted

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message