}
private ExpressionNode expression() throws TemplateParsingException {
try {
ExpressionToken tok = (ExpressionToken) currentToken;
ExpressionNode node = new ExpressionNode(currentToken.value, expressionLanguage.parse(currentToken.value, currentToken.getLineNo(), currentToken.getColumn()), tok.isRawExpression());
node.setBeginLine(currentToken.getLineNo());
node.setBeginColumn(currentToken.getColumn());
String[] lines = node.getSource().split("\n");
node.setEndLine(currentToken.getLineNo() + lines.length);
if (lines.length == 0) {
node.setEndColumn(currentToken.getColumn() + node.getSource().length());
} else {
node.setEndColumn(currentToken.getColumn() + lines[lines.length - 1].replaceAll("\r", "").length());
}
if (tok.getFilters() != null) {
node.setFilters(tok.getFilters());
}
return node;
} catch (ExpressionParsingException e) {
throw new TemplateParsingException("Error parsing expression", e, currentToken.getLineNo(), currentToken.getColumn());