Search in sources :

Example 1 with IfOrElseIfTokenNode

use of com.google.auto.value.processor.escapevelocity.TokenNode.IfOrElseIfTokenNode in project auto by google.

the class Reparser method parseIfOrElseIf.

private Node parseIfOrElseIf(IfOrElseIfTokenNode ifOrElseIf) {
    Node truePart = parseTo(ELSE_ELSE_IF_END_SET, ifOrElseIf);
    Node falsePart;
    Node token = currentNode();
    // Skip #else or #elseif (cond) or #end.
    nextNode();
    if (token instanceof EndTokenNode) {
        falsePart = emptyNode(token.lineNumber);
    } else if (token instanceof ElseTokenNode) {
        falsePart = parseTo(END_SET, ifOrElseIf);
        // Skip #end
        nextNode();
    } else if (token instanceof ElseIfTokenNode) {
        // We've seen #if (condition1) ... #elseif (condition2). currentToken is the first token
        // after (condition2). We pretend that we've just seen #if (condition2) and parse out
        // the remainder (which might have further #elseif and final #else). Then we pretend that
        // we actually saw #if (condition1) ... #else #if (condition2) ...remainder ... #end #end.
        falsePart = parseIfOrElseIf((ElseIfTokenNode) token);
    } else {
        throw new AssertionError(currentNode());
    }
    return new IfNode(ifOrElseIf.lineNumber, ifOrElseIf.condition, truePart, falsePart);
}
Also used : EndTokenNode(com.google.auto.value.processor.escapevelocity.TokenNode.EndTokenNode) ElseTokenNode(com.google.auto.value.processor.escapevelocity.TokenNode.ElseTokenNode) ForEachNode(com.google.auto.value.processor.escapevelocity.DirectiveNode.ForEachNode) IfNode(com.google.auto.value.processor.escapevelocity.DirectiveNode.IfNode) MacroCallNode(com.google.auto.value.processor.escapevelocity.DirectiveNode.MacroCallNode) ForEachTokenNode(com.google.auto.value.processor.escapevelocity.TokenNode.ForEachTokenNode) ElseIfTokenNode(com.google.auto.value.processor.escapevelocity.TokenNode.ElseIfTokenNode) SetNode(com.google.auto.value.processor.escapevelocity.DirectiveNode.SetNode) Node.emptyNode(com.google.auto.value.processor.escapevelocity.Node.emptyNode) EndTokenNode(com.google.auto.value.processor.escapevelocity.TokenNode.EndTokenNode) EofNode(com.google.auto.value.processor.escapevelocity.TokenNode.EofNode) CommentTokenNode(com.google.auto.value.processor.escapevelocity.TokenNode.CommentTokenNode) IfTokenNode(com.google.auto.value.processor.escapevelocity.TokenNode.IfTokenNode) ElseTokenNode(com.google.auto.value.processor.escapevelocity.TokenNode.ElseTokenNode) IfOrElseIfTokenNode(com.google.auto.value.processor.escapevelocity.TokenNode.IfOrElseIfTokenNode) MacroDefinitionTokenNode(com.google.auto.value.processor.escapevelocity.TokenNode.MacroDefinitionTokenNode) ElseIfTokenNode(com.google.auto.value.processor.escapevelocity.TokenNode.ElseIfTokenNode) IfOrElseIfTokenNode(com.google.auto.value.processor.escapevelocity.TokenNode.IfOrElseIfTokenNode) IfNode(com.google.auto.value.processor.escapevelocity.DirectiveNode.IfNode)

Aggregations

ForEachNode (com.google.auto.value.processor.escapevelocity.DirectiveNode.ForEachNode)1 IfNode (com.google.auto.value.processor.escapevelocity.DirectiveNode.IfNode)1 MacroCallNode (com.google.auto.value.processor.escapevelocity.DirectiveNode.MacroCallNode)1 SetNode (com.google.auto.value.processor.escapevelocity.DirectiveNode.SetNode)1 Node.emptyNode (com.google.auto.value.processor.escapevelocity.Node.emptyNode)1 CommentTokenNode (com.google.auto.value.processor.escapevelocity.TokenNode.CommentTokenNode)1 ElseIfTokenNode (com.google.auto.value.processor.escapevelocity.TokenNode.ElseIfTokenNode)1 ElseTokenNode (com.google.auto.value.processor.escapevelocity.TokenNode.ElseTokenNode)1 EndTokenNode (com.google.auto.value.processor.escapevelocity.TokenNode.EndTokenNode)1 EofNode (com.google.auto.value.processor.escapevelocity.TokenNode.EofNode)1 ForEachTokenNode (com.google.auto.value.processor.escapevelocity.TokenNode.ForEachTokenNode)1 IfOrElseIfTokenNode (com.google.auto.value.processor.escapevelocity.TokenNode.IfOrElseIfTokenNode)1 IfTokenNode (com.google.auto.value.processor.escapevelocity.TokenNode.IfTokenNode)1 MacroDefinitionTokenNode (com.google.auto.value.processor.escapevelocity.TokenNode.MacroDefinitionTokenNode)1