clause('open_inverse block_contents close_block') do |expression, contents, close|
        raise unless expression[0] == close
        Nodes::BlockExpressionNode.new(expression[0], expression[1], expression[2], contents[1], contents[0])