diff --git a/xml/impl/src/com/intellij/codeInsight/template/emmet/EmmetParser.java b/xml/impl/src/com/intellij/codeInsight/template/emmet/EmmetParser.java index 875fec75f2cf..e793f6e6fda2 100644 --- a/xml/impl/src/com/intellij/codeInsight/template/emmet/EmmetParser.java +++ b/xml/impl/src/com/intellij/codeInsight/template/emmet/EmmetParser.java @@ -73,11 +73,11 @@ public abstract class EmmetParser { @Nullable protected ZenCodingNode parseAddOrMore() { - ZenCodingNode mul = parseMul(); + ZenCodingNode mul = parseMul(parseExpression()); ZenCodingToken operationToken = getToken(); if (operationToken == ZenCodingTokens.OPENING_R_BRACKET) { - mul = new MoreOperationNode(notNullNode(mul), notNullNode(parseExpression())); + mul = parseMul(new MoreOperationNode(notNullNode(mul), notNullNode(parseExpression()))); operationToken = getToken(); } if (!(operationToken instanceof OperationToken)) { @@ -131,25 +131,18 @@ public abstract class EmmetParser { } @Nullable - private ZenCodingNode parseMul() { - ZenCodingNode exp = parseExpression(); - if (exp == null) { - return null; - } + private ZenCodingNode parseMul(@Nullable ZenCodingNode expression) { ZenCodingToken operationToken = getToken(); - if (!(operationToken instanceof OperationToken)) { - return exp; - } - if (((OperationToken)operationToken).getSign() != '*') { - return exp; - } - advance(); - ZenCodingToken numberToken = getToken(); - if (numberToken instanceof NumberToken) { + if (expression != null && operationToken instanceof OperationToken && ((OperationToken)operationToken).getSign() == '*') { advance(); - return new MulOperationNode(exp, ((NumberToken)numberToken).getNumber()); + ZenCodingToken numberToken = getToken(); + if (numberToken instanceof NumberToken) { + advance(); + return new MulOperationNode(expression, ((NumberToken)numberToken).getNumber()); + } + return new UnaryMulOperationNode(expression); } - return new UnaryMulOperationNode(exp); + return expression; } @Nullable